![]() |
erst 2.Fenster sichtbar machen, und dann aktion ausführen?
Hi, ich hab das problem, dass ich aus nem hauptfenster nen 2. Fenster aufrufen will. Das Fenster lasse ich schon beim starten erzeugen, jedoch unsichtbar und nicht enabled.
Das Fenster wird mit
Delphi-Quellcode:
aufgerufen. Mein Problem ist nun, das ich etwas auslösen lassen will, was erst passieren soll, wenn das fenster geladen ist. Darum hab ich das in den OnActivate Teil reingeschoben, nur weis ich nit, wie ich dem klarmache, das das jetzt aktiviert ist, da der die umstellung auf enabled anscheinend nicht als aktivierung sieht(siehe code unten).
f_strasse.enabled:=false;
f_credits.show; Wenn ich jedoch auf nen button klick(leer), führt der dass aus, wie kann ich dem das anders vermitteln? Außerdem würd ich gern wissen, wie ich den code unten so abändern könnt, dass ich den timer rauslassen kann, und der trotzdem erst die form sichtbar macht, und dann das unten beschriebene ausführt.
Delphi-Quellcode:
:wiejetzt: :gruebel: :wiejetzt: :gruebel: :wiejetzt: :gruebel: :wiejetzt: :gruebel: :wiejetzt:
procedure Tf_credits.FormShow(Sender: TObject);
begin . . . {f_credits.Enabled:=true; f_credits.Visible:=true; wenn ich das anstatt dem timer nehme, klappt es theoretisch auch´, nur führt der die aktion erst aus(soll die farbe von nen label faden, was man auch sieht), so dass man das faden sieht, und die Leiste oben, der rest aber erst sichtbar wird, wnn er fertig ist.) timer2.Enabled:=true; end; procedure Tf_credits.Timer2Timer(Sender: TObject); begin f_credits.Enabled:=true; f_credits.Visible:=true; timer2.Enabled:=false; end; €dit: Sry für die merkwürdige ausdrucksweise :warn: |
Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe
Hi Thorben86
Ich habe das Problem immer so gelöst.
Delphi-Quellcode:
type
TForm1 = class(TForm) private fPainted : Boolean; { Private-Deklarationen } public procedure Paint; override; procedure AfterShow; { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} { TForm1 } procedure TForm1.AfterShow; begin end; procedure TForm1.Paint; begin inherited Paint; if not fPainted then begin fPainted := True; AfterShow; end; end; |
Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe
Du musst deinem Formular selbst eine benutzerdefinierte Message schicken:
Delphi-Quellcode:
Im Event OnShow schickst du deinem Formular selbst eine Message:
const
UM_INIT = WM_USER + 100; TForm1 = class(TForm) protected procedure UM_INIT(var msg: TMessage); message UM_INIT; end;
Delphi-Quellcode:
Sobald das Formular angezeigt wurde, wird die Message empfangen und verarbeitet:
procedure TForm1.FormShow(Sender: TObject);
begin // zuerst eigen Dinge erledigen .... // schicke Message an eigenes Formular PostMessage(Self.Handle, UM_PSS_INIT, 0, 0); end;
Delphi-Quellcode:
procedure TForm1.UM_INIT(var msg: TMessage);
begin // hier deinen Programmcode einfügen // evtl. prüfen, ob die Arbeit schon getan wurde if init_done then Exit; ... end; |
Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe
füge doch hier
Code:
noch
f_strasse.enabled:=false;
f_credits.show;
Code:
hinzu!
f_credits.activate;
|
Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe
Das mit der message kann ich leider nicht machen, weil meine info lehrerin nen fetten tick hat, alles was wir noch nicht im untericht besprochen haben, z.B repeat-until(nach nem 3/4 jahr delphi) dürfen wir nicht benutzen, auch wenn wir es uns selber beigebracht haben, und diese sachen sind "BÖSE" :wall: . Und ich glaub wenn ich der damit ankomme, reißt die mir den kopf ab, weil se keine ahnung hat, was das sein soll :wiejetzt: :stupid: (die weis nicht mal wo die netzwerkumgebung/Ordnerfreigabe ist)
|
Re: erst 2.Fenster sichtbar machen, und dann aktion ausführe
Das mit dem activate klappt, wenn ichs innen Timer setze, hab zwar eben nach sowas in der liste gesucht, habs aber anscheinend übersehen :wall: . Aber kennt denn keiner noch ne möglichkeit ohne den Timer, was meine Info-Lehrerin nicht umbringen würde(s.o.)
:dp: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:31 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