![]() |
Variants ist seit Delphi 6 eine eigene Unit, die vorher woanders drin war. Frag mich nur nicht wo.
|
Hallo,
Du kannst die Variants normal raus werfen, auch bei allen anderen Projekten mache ich sie immer überall raus, weil nie gebraucht wird. Grüsse, Daniel :hi: |
Hi,
Variants hab ich rausgeworfen. Ich bekomme immer noch eine Meldung SetSubComponent nicht gefunden. Gruß oki |
Hi,
man muß nur wissen wen man fragt. 8) Zitat:
Code:
Aber auch das hat keine Auswirkungen. Label ist nicht zu sehen, nur im ObjectTreeView.
type
TRealEdit = class(TCustomEdit) private fAlignment:TAlignment; fOnlyReals:boolean; fLabel:TLabel; procedure SetAlignment(Value:TAlignment); procedure SetOnlyReals(Value:boolean); procedure SetLabelPos; protected procedure SetParent(Value:TWinControl); procedure SetLabel(Value:TLabel); procedure CreateParams(var Params:TCreateParams); override; procedure KeyPress(var Key:Char); override; public constructor Create(AOwner: TComponent); override; destructor destroy; override; published property Alignment: TAlignment read fAlignment write SetAlignment; property OnlyReals: Boolean read fOnlyReals write SetOnlyReals; property RealLabel: TLabel read fLabel write SetLabel; end; |
mir geht bei deiner Deklaration von SetParent das "override" ab...! :roll:
OK, jetzt hast du mich soweit! :mrgreen: Sobald ich zuhause bin setz ich mich hin und probier das mal aus! Das kanns doch nicht sein, dass das nicht hinhaut! ;) |
Hi Leute,
jetzt mal was zum grübeln. Wenn etwas nicht mehr so will wie es soll, dann mach ich es erst mal ganzzzzzzzz einfach. Ich hab auf einem Formular einen Button platziert und wenn mal auf diesen clickt wird ein Label zur Laufzeit erstellt. Jetzt passiert folgendes: wenn ich nur schreibe
Delphi-Quellcode:
ist das Label zwar da (hab ich geprüft), aber nicht zu sehen.
FLabel := TLabel.Create(self);
Schreibe ich
Delphi-Quellcode:
ist das Label auch zu sehen. Über Top und Left setze ich natürlich die Position.
FLabel := TLabel.Create(self);
FLabel.Parent := self; Also ist mal eins klar, Parent muß zwingend gesetzt werden und erfolgt nicht automatisch im Create über Owner. Parent ist demzufolge das Element auf dem sich das Label befindet und zu dessen Client-Bereich Top und Left in Beziehung steht. Mit dem ganzen Kram bin ich mir jetzt recht sicher. Die Frage ist jetzt, was ist nun Owner im Create des TRealEdit und ist der Owner identisch mit dem Parent? Ich denke mal nicht! Es muß wohl bei Setzen des Parent des Labels nicht der Owner des RealEdit sondern der Parent verwendet werden. Ich teste mal weiter. Gruß oki |
Zitat:
|
ja ja Motzi,
ich hab doch nur laut nachgedacht. Ich bin Aber schon ein Stück weiter. Folgender Code:
Delphi-Quellcode:
So, nun kommt der Witz. Der Besitzer (Owner) des Labels ist das RealEdit! Somit ist self der richtige Parameter im Create!
constructor TRealEdit.Create(AOwner: TComponent);
begin inherited; FAlignment := taRightJustify; OnlyReals := true; FLabel := TLabel.Create(self); FLabel.Parent := TWincontrol(AOwner); FLabel.Name := 'RealLabel'; // FLabel.SetSubComponent(true); FLabel.Caption := 'CAPTION'; // Position des Lables setzen SetLabelPos; end; Als Parent wird der Besitzer des RealEdit verwendet, denn in diesem wird das RealEdit dargestellt. Dort soll ja auch das Label hin. Die Typkonvertierung ist nun nicht sehr elegant, da fällt euch bestimmt was zu ein. Ich hab die ganze sache mal ausprobiert. Die hat nur einen Schönheitsfehler, das Label erscheint zur Laufzeit, aber nicht zur Designzeit. Naja, wird noch. Die Methode SetLabelPos steht unter privat und setzt Top und Left des Labels in Abhängigkeit von Top und Left des RealEdits. Da muß man dann auch noch weitermachen. Gruß oki |
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
wie sagt Motzi : "Monsterthread", ja schon recht groß *grusel* hier hängt noch eine Version dran, bei der sich die maximale Anzahl an Nachkommastellen im OI einstellen läßt. Vorgabewert ist dabei 2. Das Label geht noch nicht!!! |
mir ist da ein kleiner fehler aufgefallen:
wenn ich "Alignment" ändere, wird das Alignment der Komponente zwar geändert (ich kanns sehen), aber im OI steht immer noch taRightAlignment! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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 by Thomas Breitkreuz