help for creating my first component: TCustomDBCalc
I need to create a custom DBCalc component.
The DBCalc component included in RBPro only let end-users to SUM, COUNT,
AVERAGE, etc...
I want my component to:
- PERCENTAJE
- SUM X
- MULTIPLY BY X
- DIVIDE BY X
So, if the text of the DBCalc is "100", and enjd-user selects PERCENTAJE 30,
the result will be "30".
Or, if end-user selects SUM 200, result will by "200"
Where can I find an example of custom components with custom dialogs?
Thanks!
PD: My component will be free :-)
The DBCalc component included in RBPro only let end-users to SUM, COUNT,
AVERAGE, etc...
I want my component to:
- PERCENTAJE
- SUM X
- MULTIPLY BY X
- DIVIDE BY X
So, if the text of the DBCalc is "100", and enjd-user selects PERCENTAJE 30,
the result will be "30".
Or, if end-user selects SUM 200, result will by "200"
Where can I find an example of custom components with custom dialogs?
Thanks!
PD: My component will be free :-)
This discussion has been closed.
Comments
custom component and register it for use at both Delphi design time and at
runtime. Here is an example for a custom shape which has a custom dialog to
control the line thickness.
http://www.digital-metaphors.com/tips/SetShapePen.zip
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com
override the CreatePopupMenu method to add a menu option for the new
published property. Then you can launch a custom dialog in response to the
user clicking on the menu item for the new property, as shown in the custom
shape example.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com
I don't know which is the best method to do this:
1. Add a custom property and dialog to all TppCustomText derived components
(DBText, DBCalc, etc...)
2. Create a new component
Which option is easier (or possible)?
hot to add the new popup-option...
I want my option be visible on both PPDBText and PPDBCalc PopUpMenus...
Where do I add the aPopupMenu.AddItem() line?
Wich parameters do I have to add?
aPopupMenu.AddItem(30, 'AdvancedCalc', '', ????);
I think the last parameter is the one who say RB wich caption will have the
menu option, depending on the language ID. Isn't it?
I only want my menu-option available in Spanish, so Can I write manually and
directly the caption?
Can you help me, please? I have never made a component...
Thanks!
UnRegister the default TppDBText and TppDBCalc classes, as shown in the
finalization call for thos components. Then you can register two new
descendents which have overridden the CreatePopupMenu item.
The SetShapePen example provided in a previous post shows how to add a menu
item to the popup menu. Yes, you can directly enter the caption in Spanish.
Here is the code in the demo that creates a menu item.
{---------------------------------------------------------------------------
---}
{ TmyShape.CreatePopupMenu }
procedure TmyShape.CreatePopupMenu(aOwner: TComponent; var aPopupMenu:
TppPopupMenu);
var
lMenuItem: TMenuItem;
begin
{creates based options (BringToFront, SendToBack, Position, Visible) }
inherited CreatePopupMenu(aOwner, aPopupMenu);
{TppPopupMenu is a descendant of TPopupMenu. It has added functionality
for
adding menu items, referencing menu items by name, and handling menu
items
that represent boolean properties.}
lMenuItem := TMenuItem.Create(aPopupMenu);
lMenuItem.Name := 'LineThickness';
lMenuItem.Caption := 'Line Thickness...';
lMenuItem.Tag := aPopupMenu.Items.Count;
aPopupMenu.Items.Add(lMenuItem);
end; {procedure, TmyShape}
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com
I was able to get it working! BUT only in design time!
I have the following DBCustomCalc descending from "ppDBTExt".
In my CustomDialog I have a SpinEdit (with the value of Value property) and
a ComboBox, which determines wich Operation will make.
procedure TDBCustomCalc.MenuItemClickEvent(Sender: TObject);
var
CustomCalcDialog: TMyCustomCalcDialog;
begin
CustomCalcDialog := TMyCustomCalcDialog.Create(nil);
CustomCalcDialog.Showmodal;
case CustomCalcDialog.Operation of
0 : caption : = floattostr(strtofloat(caption)+CustomCalcDialog.Value);
1 : caption : = floattostr(strtofloat(caption)-CustomCalcDialog.Value);
2 : caption : = floattostr(strtofloat(caption)*CustomCalcDialog.Value);
3 : caption : = floattostr(strtofloat(caption)/CustomCalcDialog.Value);
4 : caption : =
floattostr((strtofloat(caption)*CustomCalcDialog.Value)/100);
end;
CustomCalcDialog.Free;
end;
In design time, I put a DBText and my custom component toguether. Yes, there
is an option menu. I click on it and.. YES, there is my Dialog!
Y select Operation and Value, and YES! I can see (in the designer, not
preview) the result value!
BUT when I preview the report, it only shows the original value of the
dbtext.
I think I have to override another procedure, like OnGetText, OnPrint or
something. Isn't it?
You can override this method to provide your custom calculations.
Cheers,
Jim Bennett
Digital Metaphors
http://www.digital-metaphors.com
info@digital-metaphors.com