How to write TppDBText descendant which positions iself during report generation
Hi!
I want to write TppDBText descendant which positions itself relative to
another TppCustomText component. So I added published property as
property LeftComponent: TppCustomText read FLeftComponent write
SetLeftComponent;
and ovverrided various methods which looked like right ones (not much in
help about how to write RB components or for what various
methods/propertys are for ) but none worked as I want...
Basically, I need to calculate new position for my component when it's
value changes or when linked component's (LeftComponent) value changes.
So, question is, which methods are fired when one of those events occur?
TIA
ain
I want to write TppDBText descendant which positions itself relative to
another TppCustomText component. So I added published property as
property LeftComponent: TppCustomText read FLeftComponent write
SetLeftComponent;
and ovverrided various methods which looked like right ones (not much in
help about how to write RB components or for what various
methods/propertys are for ) but none worked as I want...
Basically, I need to calculate new position for my component when it's
value changes or when linked component's (LeftComponent) value changes.
So, question is, which methods are fired when one of those events occur?
TIA
ain
This discussion has been closed.
Comments
controls using the TextWidth + offset of the left component.
Or, you may be able to use the detail band's before print event to
pregenerate the band using you own "engine." Your engine will need to
cacluate the area used by each component. Then you can use this info to
determine the postition of the controls relative to the other because you
know how much space they will need. Once you calculate how you want the
controls to appear using your engine, then reposition the controls in the
detail band and let the report generate the band normally.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com
be two components on the form, but really it would be one component. The
two components could show a link between them. By clicking on the little
link, you could show a dialog to select and connect the two datafields to
this component. Then the component could generate a single draw command to
the device. Getting a single draw command to the device would be the best
bet to have the final result look the best on any device.
Instead of a wrapper, there is a different approach. Use a band object loop
technique to find the component which is left of the component to be
shifted. You'll have to add and use a threshold property to check the top
property of each component to build a list of possible left components. Then
loop through these finding the one with the left that is closest to the left
value you have without going over that value. Since a component has a band
property, you can use this to loop through the objects in the same band. You
are going to be limited to one shifting component with this approach. I
haven't tried it but it should be possible. The problem is that any
autosizing of the resulting draw commands is handled by the device. You may
see artifacts related to this.
The printing of the dotted or dashed pen is a limitation of the driver. It
will only print as a line.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com