Entwickler-Ecke

WinForms - Sleep


bobi - Do 21.06.07 14:45
Titel: Sleep
Hi, ich möchte gerne das in meinen Programm immer eine gewisse Verzögerung zwischen den Zeitpunkten besteht wo etwas in das Label geschrieben wird, nur habe ich das Problem das er immer alle Sleeps abwartet und dann alles auf einmal ladet.

Gibt es da noch eine andere Möglichkeit?




Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
procedure TWinForm_Start.TWinForm_Start_start;
begin
  System.Threading.Thread.Sleep(9000);
end;

procedure TWinForm_Start.TWinForm_Start_Load(sender: System.Object; e: System.EventArgs);
begin
    If System.IO.File.Exists('cfg\login.jpscfg'then
  begin
    Label1.Text := ('Status: login.jpscfg wurde geladen');
    TWinForm_Start_Start;
  end
  else
  System.IO.File.CreateText('cfg\login.jpscfg');
  Begin
  If System.IO.File.Exists('cfg\db.jpscfg'then
  begin
    Label1.Text := ('Status: db.jpscfg wurde geladen');
    TWinForm_Start_Start;
  end
  else
  System.IO.File.CreateText('cfg\db.jpscfg');
  End;

  If System.IO.File.Exists('cfg\display.jpscfg'then
  begin
    Label1.Text := ('Status: display.jpscfg wurde geladen');
  end
  else
  System.IO.File.CreateText('cfg\display.jpscfg');

  If System.IO.File.Exists('cfg\startscript.jpscfg'then
  begin
    Label1.Text := ('Status: startscript.jpscfg wurde geladen');
  end
  else
  System.IO.File.CreateText('cfg\startscript.jpscfg');

  Begin
  If System.IO.File.Exists('cfg\superadmin.jpscfg'then
  begin
    Label1.Text := ('Status: superadmin.jpscfg wurde geladen');
  end
  else
  System.IO.File.CreateText('cfg\superadmin.jpscfg');
  End;
end;



MFG: bobi


Moderiert von user profile iconChristian S.: Topic aus .NET verschoben am Do 21.06.2007 um 15:48


r2c2 - Do 21.06.07 16:51

Application.DoEvents() + F1 sollte helfen...

mfg

Christian


bobi - Do 21.06.07 21:08

Habe mir das gerade mal angeschaut, aber ich muss zugeben ich weiß nicht wie ich das anwenden kann.


(Ich frage mich gerade warum mein Beitrag im C# Forum steht, wenn ich es in Delphi Forum geschrieben habe ^^)



Mit freundlichen Grüßen: bobi


Christian S. - Do 21.06.07 21:18

user profile iconbobi hat folgendes geschrieben:
(Ich frage mich gerade warum mein Beitrag im C# Forum steht, wenn ich es in Delphi Forum geschrieben habe ^^)
Hier mal die Spartenbeschreibung der .NET Sparte des DF:
Zitat:
Hier können sprachspezifische .NET-Probleme gestellt werden. .NET spezifische Themen müssen in unserem C#-Forum gestellt werden.

Dein Problem ist nicht sprachspezifisch. :-)


bobi - Fr 22.06.07 09:08

Ok, dann habe ich mich wohl mit den post in der spalte vertan und dafür entschuldige ich mich auch.

Hätte dennoch einer ein Beispiel für mich wie ich das in Delphi lösen kann?


Christian S. - Fr 22.06.07 09:20

user profile iconbobi hat folgendes geschrieben:
Hätte dennoch einer ein Beispiel für mich wie ich das in Delphi lösen kann?
Mit Application.DoEvents ;-) Wie hast Du denn bisher versucht, den Befehl anzuwenden? :-)


bobi - Fr 22.06.07 09:30

Ja, ich habe mir dann auch mal dazu die Hilfe von Borland angesehen, aber ich weiß nicht so richtig wie ich den einsetzen kann bzw muss.


r2c2 - Fr 22.06.07 15:23

user profile iconbobi hat folgendes geschrieben:
Ja, ich habe mir dann auch mal dazu die Hilfe von Borland angesehen, aber ich weiß nicht so richtig wie ich den einsetzen kann bzw muss.

Fangen wir mal damit an, was diese Methode macht. Was hast du von dem verstanden, was in der Hilfe steht. Oder besser: Was konkret hast du nicht verstanden?

mfg

Christian


bobi - Mo 25.06.07 08:34

Ich habe das so verstanden das diese Methode bewirkt, das Delphi die Prozesse nach einander abarbeitet. (denke ich ^^)


Was ich allerdings nicht verstehe ist, wie ich diesen Befehl bei mir mit in den Code einbringe!



MFG: bobi


r2c2 - Mo 25.06.07 14:20

user profile iconbobi hat folgendes geschrieben:
Ich habe das so verstanden das diese Methode bewirkt, das Delphi die Prozesse nach einander abarbeitet. (denke ich ^^)

Ähm.... nö. Die angefallenen Messages werden abgearbeitet.

Mal gaaanz kurz was das heißt:
Jeder Thread(also auch dein Programm) hat ne MessageQueue(sowas wie n Briefkasten). Wenn du irgendwas machst(Maus bewegen, Klicken, Tasten drücken, etc.) merkt das Windows und sendet ne Message an den aktiven Prozess(dein Prog). Wenn dein Prog arbeitet, guckt es normalerweise nicht in den Briefkasten, ob es etwas machen soll(z.B: das Fenster neu zeichnen, damit der User die Änderungen sieht). Mit DoEvents(bzw. unter Win32 ProcessMessages) wird nochmal extra in den Briefkasten geguckt, ob da vllt was drin is und, wenn ja wird zuerst das gemacht, was in den Briefen steht(neu zeichnen!)...

mfg

Christian