![]() |
[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:
Dann würde alles so funktionieren wie es sollte, --> Wenn ich die Komponente auf ein Formular ziehe
property Caption;
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? |
Re: [Eigene] Caption
Mehrere Eigenschaften anlegen und für diese dann mehrere Properties.
|
Re: [Eigene] Caption
Danke das weiss ich auch, lies doch mal die ganze Frage...
|
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; |
Re: [Eigene] Caption
Meine Propertys sehen so aus:
Delphi-Quellcode:
Ich verwende also nicht die schon vorhandene Property Caption, sondern
property ECatption: String read FECaption write SetECaption;
property ECatptionOver: String read FECaptionOver write SetECaptionOver; property ECatptionDown: String read FECaptionDown write SetECaptionDown; will diese selber machen, weil ich gleich drei brauche und mir aber std mässig nur eine zur verfügung steht. Zitat:
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:
Ne Idee den Namen zu übergeben, sodass er nach dem rüberziehen der Komponente
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; auf meine Form bereits im OI steht? |
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.
|
Re: [Eigene] Caption
GExperts sind doch so ne Opensource Toolsammlung oder?
Mach ich dann meine Unit nicht von andern (nicht standardmässigen) abhängig? |
Re: [Eigene] Caption
Hi,
bin mir nicht sicher, aber hast Du schon
Delphi-Quellcode:
ausprobiert?
ECaption := AOwner.Name;
|
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:
neu implementieren und dort auf die Änderung reagieren.
procedure CMTextChanged(var Message: TMessage); message CM_TEXTCHANGED;
Gruß xaromz |
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:
Was ich meine, ist das t bei ECaTption....
ECaption:=Caption;
ECaptionOver:=Caption; ECaptionDown:=Caption; Ciao Frederic |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:54 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz