Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Timer für procedure verzögerung? (https://www.delphipraxis.net/26815-timer-fuer-procedure-verzoegerung.html)

HagBurt 29. Jul 2004 22:31


Timer für procedure verzögerung?
 
Hallo

Villeicht stell ich ne dumme frage:
wenn ich eine onformcreate prozedur verzögert ausführen
möchte muss ich das mit einem timer machen???

Danke für Antworten

Christian Seehase 29. Jul 2004 22:45

Re: Timer für procedure verzögerung?
 
Moin HagBurt,

kannst Du mal erklären, was Du vorhast?
So unmittelbar würde ich sonst in die Zeilen des OnCreate einfach Hier im Forum suchenDelay einstreuen, kann aber im genannten Falle nicht wirklich einen Sinn darin sehen.

axelf98 29. Jul 2004 22:59

Re: Timer für procedure verzögerung?
 
So dumm ist die Frage gar nicht:

Ich hatte selbst so ein Problem. Wenn man mehrere Fenster hat und die beim Start zeigen will und evtl. noch mit Inhalt füllen will, geht das nicht direkt im Oncreate des Hauptfensters, weil zu dem Zeitpunkt die anderen Fenster noch nicht "da" sind. Baut man einen Timer ein, mit 200ms Verzögerung, läuft das Ganze:

Delphi-Quellcode:
procedure TStartfenster.Timer1Timer(Sender: TObject);
begin
 AnderesFenster.visible := true;
 ...
 Timer1.enabled := false; // Hier wird er gleich wieder deaktiviert
end;
Oder gibt es noch eine andere Lösung für das Problem?

supermuckl 29. Jul 2004 23:04

Re: Timer für procedure verzögerung?
 
man könnte ja die dinge die für die anderen forms da sind ja in die entsprechenden anderen OnCreate der jeweiligen forms reinpacken

XHelp 30. Jul 2004 00:56

Re: Timer für procedure verzögerung?
 
Mit mehreren Forms:
Ich würde gucken, welche Form als letzte erstellt wird und dann einfach bei der form OnCreate erstellen, und auf andere forms zugreifen.

SirThornberry 30. Jul 2004 07:37

Re: Timer für procedure verzögerung?
 
Oder in der ProjectDatei das ganze so lösen
Delphi-Quellcode:
[...]
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);
  Application.CreateForm(TForm3, Form3);
  Application.CreateForm(TForm4, Form4);
  Form1.DoTheThingsYouCouldNotDoInONCREATEofForm1;
[...]
wobei ich selbst das ganze in der Regel so löse das ich das im OnCreate von Form4 mache. Mit den 200 ms verzögerung ist keine gute Lösung, wenn der Rechner mal bischen ausgelastet ist dann kann es recht schnell vorkommen das 200 ms nicht reichen.

shmia 30. Jul 2004 09:36

Re: Timer für procedure verzögerung?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von HagBurt
Villeicht stell ich ne dumme frage:
wenn ich eine onformcreate prozedur verzögert ausführen
möchte muss ich das mit einem timer machen???

Du willst die Prozedure nicht verzögert ausführen, sondern du willst die Prozedure dann
ausführen, sobald dein Formular komplett angezeigt wird.
Würde man die Procedure in OnCreate oder OnShow aufrufen, wäre das Formular ja noch gar nicht
zu sehen.
Und nun der Trick: Das Formular sendet mit SendMessage eine Userdefined Message an sich selbst.
Diese Message wird ganz hinten in die Windows Message-Queue eingereit und dann verarbeitet, wenn alle
anderen Messages verarbeitet worden sind.
Ein Timer löst entweder schon aus, wenn das Formular noch gar nicht sichtbar ist oder man
muss den Timer sehr spät feuern lassen.

axelf98 30. Jul 2004 10:12

Re: Timer für procedure verzögerung?
 
Bei meinem Problem hab ich einen Timer genommen, der etwas mehr Zeit hat. Es handelt sich um einen Splash-Screen, der eh ein bissl sichtbar sein soll!

runger 30. Jul 2004 10:35

Re: Timer für procedure verzögerung?
 
Hallo shmia,

bitte, bitte teste doch die Dinge die Du hier ins Forum stellst!
Und bitte ein kleines Textfile mit ein paar gaaaaaaaanz kleinen Erklärungen was man mit dem Ding anfangen kann!
Dann haben andere auch was davon. So lohnt sich das runterladen nicht!

Rainer

Trinity.dp 10. Dez 2010 10:59

AW: Re: Timer für procedure verzögerung?
 
Zitat:

Zitat von shmia (Beitrag 185722)
Zitat:

Zitat von HagBurt
Villeicht stell ich ne dumme frage:
wenn ich eine onformcreate prozedur verzögert ausführen
möchte muss ich das mit einem timer machen???

Du willst die Prozedure nicht verzögert ausführen, sondern du willst die Prozedure dann
ausführen, sobald dein Formular komplett angezeigt wird.
Würde man die Procedure in OnCreate oder OnShow aufrufen, wäre das Formular ja noch gar nicht
zu sehen.
Und nun der Trick: Das Formular sendet mit SendMessage eine Userdefined Message an sich selbst.
Diese Message wird ganz hinten in die Windows Message-Queue eingereit und dann verarbeitet, wenn alle
anderen Messages verarbeitet worden sind.
Ein Timer löst entweder schon aus, wenn das Formular noch gar nicht sichtbar ist oder man
muss den Timer sehr spät feuern lassen.

wollte nur sagen, dass mir das hier sehr weiter geholfen hat. Lohnt sich reinzuschauen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr.
Seite 1 von 2  1 2      

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