Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Form zeigt sich zu spät (https://www.delphipraxis.net/49700-form-zeigt-sich-zu-spaet.html)

noHuman 14. Jul 2005 19:15


Form zeigt sich zu spät
 
Hi !
Ich hab' folgenden Code in meiner Anwendung:

Delphi-Quellcode:
procedure TFrmBlowFish.Wait(time: word);
var Start: Integer;
begin
  Start := GetTickCount;
  while GetTickCount - Start <= time do
    application.ProcessMessages;
end;

procedure TFrmBlowFish.FrmBlowFishOnShow( Sender : TObject );
var I : integer;
begin
  for I := 0 to mm_projekt.Lines.Count do
    verschluesseln(mm_projekt.Lines.Strings[I]);
    aktuelle_zeile.Caption := IntToStr(I);
    Application.ProcessMessages;
    Wait(30);
end;
der code der zweiten procedure wird auch abgearbeitet,
nur da ist ein Problem:

aktuelle_zeile ist ein Label und zeigt den Fortschritt an,

aber das Programm zeigt sich erst wenn die for-Schleife

durchgearbeitet ist! (Das ganze muss aber in der OnShow Prozedur bleiben!)

Kennt einer von euch eine Lösung?

Danke im Voraus!

mirage228 14. Jul 2005 19:16

Re: Form zeigt sich zu spät
 
Hi,

Du hast das "begin" und "end" um Deinen Anweisungsblock vergessen.

So gehts:
Delphi-Quellcode:
procedure TFrmBlowFish.FrmBlowFishOnShow( Sender : TObject );
var I : integer;
begin
  for I := 0 to mm_projekt.Lines.Count do
  begin
    verschluesseln(mm_projekt.Lines.Strings[I]);
    aktuelle_zeile.Caption := IntToStr(I);
    Application.ProcessMessages;
    Wait(30);
  end;
end;
mfG
mirage228

nailor 14. Jul 2005 19:30

Re: Form zeigt sich zu spät
 
warum hast du nochmal extra processmessages drin, wenn das schon in der wait-funktion drin ist?
warum sollte jemand wollen, dass extra langsam verschlüsselt wird?

noHuman 14. Jul 2005 19:50

Re: Form zeigt sich zu spät
 
Liste der Anhänge anzeigen (Anzahl: 1)
@mirage
Deine Lösung funktioniert nicht!

@nailor
Spürbar langsam wird's auch wieder nicht!

Hier mal der Source:

Die (selbe) for-Schleife kommt 3x oder 4x vor.
Code weicht von den obigen (1st Post) leicht ab.
Der Betreffende Code ist in der unit Main

Bernhard Geyer 14. Jul 2005 19:58

Re: Form zeigt sich zu spät
 
Zitat:

Zitat von noHuman
Kennt einer von euch eine Lösung?
Danke im Voraus!

Das Problem ist das das OnShow-Event vor der Sichtbarschaltung des Formulars geschieht.
Du muß im OnShow einen Timer (minimale Zeit) starten und dann bei Eintreffen des Timers die Schleife durchlaufen lassen. Dann ist auch das Formular sichtbar.

noHuman 14. Jul 2005 20:34

Re: Form zeigt sich zu spät
 
@Bernhard Geyer

Danke!, das hat das Problem gelöst!


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf