![]() |
OnFormCreate (Paintbox)
Guten Tag,
ich wollte, dass meine Paintbox beim starten weiß ist. Da es über die Eigenschaften nicht klappen wollte, habe ich mir folgenden Code zusammen gebastelt:
Code:
Wenn ich jetzt das Programm starte ist die Paintbox trotzdem nicht weiß. Das komische ist, wenn ich den selben Code bei einem OnButtonClick Event einfüge funktioniert es. Wo ist der Fehler?
procedure TForm1.FormCreate(Sender: TObject);
begin Paintbox1.canvas.brush.color:=clblack; Paintbox1.Canvas.FillRect(Rect(0,0,paintbox1.width,paintbox1.height)); end; Vielen Dank! |
AW: OnFormCreate (Paintbox)
Im OnCreate wird doch erst alles erzeugt, da ist die PaintBox möglicherweise noch gar nicht "functionsfähig". Versuchs doch mal im OnShow.
|
AW: OnFormCreate (Paintbox)
Zitat:
|
AW: OnFormCreate (Paintbox)
Liste der Anhänge anzeigen (Anzahl: 1)
Im Anhang ist ein kleines Demo (exe + sourcecode) für die Paintbox.
Es ist gut kommentiert - damit dürfte das was in Beitrag #3 gesagt wurde klarer werden. |
AW: OnFormCreate (Paintbox)
Vielen Dank! Hat funktioniert.
|
AW: OnFormCreate (Paintbox)
Ich löse so etwas gerne mit einer Funktion Nachformcreate. Die ich dann direkt nach dem Erzeugen aufrufe.
Code:
Form1:=TForm1.Create(self);
Form1.NachFormCreate; Form1.Showmodal; |
AW: OnFormCreate (Paintbox)
Aber das wird nicht funktionieren.
Weil wie gesagt wurde, das TPaintBox sofort überschrieben wird. Zumindest dürfte es im "ShowModal" wieder weg sein. Und ansonsten muss du nur ein Fenster drüber bewegen und es wäre wieder weg. Und wo liegt der Sinn der Methode? Weil das ist doch quasi so:
MfG Fabian |
AW: OnFormCreate (Paintbox)
Zitat:
Früher glaubte ich das auch, aber ich konnte noch nie einen Fehler erzeugen, indem ich im OnCreate auf VCL-Controls zugegriffen habe. Das funktionierte bisher immer. :gruebel: |
AW: OnFormCreate (Paintbox)
Moin,
wenn man sich TCustomForm.Create() anguckt, dann ruft er FOnCreate relativ spät auf:
Delphi-Quellcode:
MfG
constructor TCustomForm.Create(AOwner: TComponent);
begin inherited Create(AOwner); {$IF DEFINED(CLR)} GlobalNameSpace.AcquireWriterLock(MaxInt); {$ELSE} GlobalNameSpace.BeginWrite; {$IFEND} try FCreatingMainForm := Application.FCreatingMainForm; if FCreatingMainForm then Application.FCreatingMainForm := False; InitializeNewForm; if (ClassType <> TForm) and not (csDesigning in ComponentState) then begin Include(FFormState, fsCreating); try if not InitInheritedComponent(Self, TForm) then raise EResNotFound.CreateFmt(SResNotFound, [ClassName]); finally Exclude(FFormState, fsCreating); end; {$IF NOT DEFINED(CLR)} if OldCreateOrder then {$IFEND} DoCreate; end; finally {$IF DEFINED(CLR)} GlobalNameSpace.ReleaseWriterLock; {$ELSE} GlobalNameSpace.EndWrite; {$IFEND} end; end; Fabian |
AW: OnFormCreate (Paintbox)
Wenn OldCreateOrder false ist, dann im gezeigten Quelltext garnicht?
Delphi-Quellcode:
procedure TCustomForm.AfterConstruction;
begin if not OldCreateOrder then DoCreate; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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