Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#4

Re: Richtiges einblenden von Formularen

  Alt 24. Feb 2010, 07:36
Bei Delay hängen diese Gesamtzeiten vom OS und dem PC ab, also von der Auflösung des internen Timers.
Und dann hängen sie auch noch von der Auslastung der CPU und des Programmes.

ein einfaches Beispiel:
benötigt: ein Button, Memo und ein Edit (für das Delay)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  c, d, p, a: Cardinal;
begin
  p := StrToInt(Edit1.Text);
  a := 2000 div p; // 2 sec
  Memo1.Lines.Clear;
  AlphaBlend := True;
  c := GetTickCount;
  while a > 0 do begin
    d := GetTickCount;
    Delay(p);
    {start - irgendwas machen}
    Memo1.Lines.Add(IntToStr(GetTickCount - d));
    AlphaBlendValue := AlphaBlendValue + 1;
    Repaint;
    Application.ProcessMessages;
    {ende - irgendwas machen}
    Dec(a);
  end;
  Memo1.Lines.Add('= ' + IntToStr(GetTickCount - c));
  AlphaBlend := False;
end;
Bedenke jetzt noch, daß bei dir relativ viel gemacht wird (so Einiges muß ja neu berechnet und gezeichnet werden), welches in deine Gesamtzeit mit einberechnet werden muß.

Probier das Beispiel einfach mal mit 100, 10 und 1 Millisekunde aus.

Seit Vista gibt es eine andere Desktopverwaltung, wobei der Desktopmanager alle Fenstern zwischenspeichert und demnach nur noch die "fertigen" Bilder verrechnen/überblenden muß, wärend die älteren OS dafür gleich mal den ganzen Desktop und fast alle Fenster neu zeichnen lassen müssen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat