![]() |
AW: Objekt im onCreate erzeugen, aber wie?
Moin...:P
...deswegen funktioniert das nicht: Zitat:
|
AW: Objekt im onCreate erzeugen, aber wie?
Huhu,
Was konntest du dir nicht verkneifen? with FLabel do // erstellt den Label with Items do // bezieht sich auf die Combobox bzw. auf deren Items. Das sind doch zwei völlig verschiedene Baustellen, wenn auch in der gleichen Methode? Herzlich grüßt Moo |
AW: Objekt im onCreate erzeugen, aber wie?
Das Problem hierbei ist einfach nur die Benutzung von With. Wenn man Pech hat und sich ein bisserl verschreibt, kommt ggfls. trotzdem kompilierbarer Code heraus und bei der Fehlersuche wird es dann ggfls. sehr haarig.
Delphi-Quellcode:
Ist erstmal soweit ok.
with fLabel do
begin left := self.left; top := self.top; focusControl := self; parent := self.parent; Caption := self.Caption; end; Mir persönlich wäre es aber so deutlich lieber:
Delphi-Quellcode:
Sollte ich in diesem Fall nämlich links von der Zuweisung ein Attribut nehmen, dass es bei TLabel nicht gibt, aber sehr wohl bei Self, bekäme ich eine Compilermeldung.
fLabel.left := left;
fLabel.top := top; fLabel.focusControl := self; fLabel.parent := parent; fLabel.Caption := Caption; Wenn Self z. B. eine TCombobox ist, so kann dashier nicht funktionieren:
Delphi-Quellcode:
Bei der Verwendung von With aber sehrwohl:
fLabel.left := self.left;
fLabel.top := self.top; fLabel.focusControl := self; fLabel.parent := self.parent; fLabel.Caption := self.Caption; fLabel.ItemIndex := self.ItemIndex;
Delphi-Quellcode:
Links vom Gleichheitszeichen werden alle an der Stelle bekannten Attribute akzeptiert und nicht nur die, die zum with fLabel do gehören. Und da man Self nicht zwingend angeben muss, da alles, was ohne Self und ohne eine andere Komponente ... angegeben wird, automatisch Self zugeordnet wird, kann man sich hier schon ziemlichen "Strubbel" einhandeln, der trotzdem kompilierbar ist.
with fLabel do
begin left := self.left; top := self.top; focusControl := self; parent := self.parent; Caption := self.Caption; ItemIndex := self.ItemIndex; end; Ohne with ist das Auffinden von Fehlern schlicht und einfach deutlich einfacher, weil hier immer eine eindeutige Angabe der Attribute nötig ist. Und ob ich links nun immer fLabel. davor schreibe und mir rechts das self. erspare, ist vom Schreibaufwand jetzt auch nicht so unbedingt ein großes Mengenproblem ;-) |
AW: Objekt im onCreate erzeugen, aber wie?
Zitat:
Delphi-Quellcode:
Schau dir die doch bitte auch die Sourcen zu TCombobox und TEdit und deren Vorfahren an. Alles was da als Virtual oder Dynasmic deklariert ist, kannst du in einer abgeleiteten Komponente überschreiben und erweitern.
TMsDatumCombo= class(TCombobox)
... protected procedure Select; override; ... end; procedure TMsDatumCombo.Select; begin inherited; FLabel.Caption := Text; // Hier kannst du den Labeltext setzen, je nach dem was ausgewählt wurde. // Text ist der aktuell selektierte Eintrag in der Combo. end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:21 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