Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi [Eigene] Caption (https://www.delphipraxis.net/71314-%5Beigene%5D-caption.html)

cherry 13. Jun 2006 07:58


[Eigene] Caption
 
Hi..

Abgeleitet von TCustomControl...
Ich bin schon fast fertig mit meiner Komponente, jetzt habe ich nur noch ein kleines Problem:

Ich will für die verschiedenen zustände des Buttons je verschiedene Captions, das heisst drei insgesamt.
die erste könnte ich einfach so deklarieren:

Delphi-Quellcode:
property Caption;
Dann würde alles so funktionieren wie es sollte, --> Wenn ich die Komponente auf ein Formular ziehe
ist der Standardwert der Caption automatisch = der Name. z.B. EButton1, EButton2 ...

KONKRET:
Wenn ich die Caption propertyS nun selber Programiere, funktionieren diese zwar einwandfrei, jedoch
weiss ich nicht wie den Namen zu übergeben.
Denn wenn ich einen standard Wert im Constructor mitgeben will, sind Variablen "Name" oder "Caption" noch
nicht vorhanden. Wenn ich die LoadProcedure überschreibe, habe ich das Problem, dass die Captions zwar zur Laufzeit erscheinen, jedoch nicht im Objektinspektor zur Entwicklungszeit.

Jmd eine Idee?

mkinzler 13. Jun 2006 08:01

Re: [Eigene] Caption
 
Mehrere Eigenschaften anlegen und für diese dann mehrere Properties.

cherry 13. Jun 2006 08:02

Re: [Eigene] Caption
 
Danke das weiss ich auch, lies doch mal die ganze Frage...

mkinzler 13. Jun 2006 08:06

Re: [Eigene] Caption
 
Wie sieht den dein Konstruktor aus?

Delphi-Quellcode:
constructor myControl.Create( Aowner: TComponent; myCaption: string);
begin
    inherited Create( AOwner);
    Caption := myCaption;
end;

cherry 13. Jun 2006 08:33

Re: [Eigene] Caption
 
Meine Propertys sehen so aus:

Delphi-Quellcode:
property ECatption: String read FECaption write SetECaption;
property ECatptionOver: String read FECaptionOver write SetECaptionOver;
property ECatptionDown: String read FECaptionDown write SetECaptionDown;
Ich verwende also nicht die schon vorhandene Property Caption, sondern
will diese selber machen, weil ich gleich drei brauche und mir aber std mässig
nur eine zur verfügung steht.

Zitat:

Zitat von mkinzler
Wie sieht den dein Konstruktor aus?

Der sieht momentan so aus, funzt aber nicht!
Caption ist während Constructor-zeit irgendwie noch nicht verfügbar, es wird kein
Wert übergeben.

Und ich will das standardmässig der Name also z.B. Button1, Button2...
für alle Captions gesetzt wird.

Delphi-Quellcode:
constructor TEButton.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);

 DoubleBuffered := True;
 FEFont := TFont.Create;
 FEFontOver := TFont.Create;
 FEFontDown := TFont.Create;
 FEColor:=clWhite;
 FEColorOver:=clSilver;
 FEColorDown:=clGray;
 FEBrushStyle:=bsSolid;
 FEBrushStyleOver:=bsSolid;
 FEBrushStyleDown:=bsSolid;
 FEPenColor:=clSilver;
 FEPenColorOver:=clGray;
 FEPenColorDown:=clSilver;

[color=#005fff]
 ECaption:=Caption;
 ECaptionOver:=Caption;
 ECaptionDown:=Caption;
[/color]
 
 Width:=75;
 Height:=25;
 FMouseOver:=false;
 FMouseDown:=false;
 FEOnFocusedShow:=true;
 FEOnFocusedColor:=clAqua;
 FEOnDefaultShow:=true;
 FEOnDefaultColor:=clBlack;
 FEnemyRoundedW:=5;
 FEnemyRoundedH:=5;
 TabStop:=True;
 FActive:=FDefault;
end;
Ne Idee den Namen zu übergeben, sodass er nach dem rüberziehen der Komponente
auf meine Form bereits im OI steht?

mkinzler 13. Jun 2006 08:39

Re: [Eigene] Caption
 
Jetzt versteh ich dein Problem. Schau dir doch mal die GExperts an, da wird ein Renaming des Komponentennames&/-caption zur Designzeit durchgeführt.

cherry 13. Jun 2006 08:46

Re: [Eigene] Caption
 
GExperts sind doch so ne Opensource Toolsammlung oder?
Mach ich dann meine Unit nicht von andern (nicht standardmässigen) abhängig?

uwewo 13. Jun 2006 08:46

Re: [Eigene] Caption
 
Hi,

bin mir nicht sicher, aber hast Du schon

Delphi-Quellcode:
 ECaption := AOwner.Name;
ausprobiert?

xaromz 13. Jun 2006 08:47

Re: [Eigene] Caption
 
Hallo,

Wenn sich die Caption eines Controls ändert, dann sendet das Control eine Message CM_TEXTCHANGED an sich selbst.
Also einfach die Methode
Delphi-Quellcode:
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
neu implementieren und dort auf die Änderung reagieren.

Gruß
xaromz

fkerber 13. Jun 2006 08:51

Re: [Eigene] Caption
 
Hi!

Könnte zwar jetzt ein Schreibfehlern sein, aber ich werfe es doch mal in den Raum:

Delphi-Quellcode:
//Meine Propertys sehen so aus:

property ECatption: String read FECaption write SetECaption;
property ECatptionOver: String read FECaptionOver write SetECaptionOver;
property ECatptionDown: String read FECaptionDown write SetECaptionDown;
Delphi-Quellcode:
ECaption:=Caption;
ECaptionOver:=Caption;
ECaptionDown:=Caption;
Was ich meine, ist das t bei ECaTption....


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:08 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz