| Autor |
Beitrag |
TheNeon
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Fr 13.06.03 15:58
Hallo,
ich möchte meine Form "einfrieren".
Da ich in einer Funktion ziemlich viel an der Form ändere (Farben, Schriftart, - größe, Farbverlauf, Bilder etc) und das sehr lange dauert (ca. 2sec) möchte ich nicht, dass der User genau sieht wie alles so gewechselt wird, da es auch ziemlich unschön aussieht. Wie kann ich denn unterbinden, dass die Form "aktualisiert" wird ???
DANKE 
|
|
Hansi@OMG
      
Beiträge: 304
Vista
Delphi 2006 Prof., Lazarus
|
Verfasst: Fr 13.06.03 16:21
Versuchs mal damit, du machst eine 2. Form wo drinsteht, dass die Einstellungen übernommen werden. Und Bevor die Einstellungen übernommen werden, sagst du ihm, form1.visible:=false; und das er die 2. Form zeigen soll und mit einem Timer in Form2 kannst du die Form2 nach 2 sec. wieder schließen und die erste Form wieder anzeigen lassen.
_________________ Who doesn't know the Micrsoft developer "Mahatma Fatal Error"?
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Fr 13.06.03 16:25
| Hansi@OMG hat folgendes geschrieben: | | Versuchs mal damit, du machst eine 2. Form wo drinsteht, dass die Einstellungen übernommen werden. Und Bevor die Einstellungen übernommen werden, sagst du ihm, form1.visible:=false; und das er die 2. Form zeigen soll und mit einem Timer in Form2 kannst du die Form2 nach 2 sec. wieder schließen und die erste Form wieder anzeigen lassen. |
ich hätte aber gerne, dass meine MainForm sichtbar bleibt

|
|
BungeeBug
      
Beiträge: 901
|
Verfasst: Fr 13.06.03 16:36
Hi,
sezt doch einfach alle Komponenten Visible := fasle ein  dann is die Form zwar leer aber man sieht nix
MfG BungeeBug
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Fr 13.06.03 16:53
|
|
yukon-troll
      
Beiträge: 60
|
Verfasst: Fr 13.06.03 17:42
Hallo,
mach doch einfach einen Screenshot von deinem Anwendungsfenster
und setze ihn für die Zeit der Verarbeitung darüber (z.B. mit einer ImageKomponente
auf einem Panel oder einer 2. Form).
So brauchst du nichts an der Sichtbarkeit der Komponenten zu ändern.
MfG yukon-troll
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Fr 13.06.03 18:07
|
|
yukon-troll
      
Beiträge: 60
|
Verfasst: Fr 13.06.03 18:24
ich meinte hierbei natürlich einen aktuellen Screenshot und keinen vorher festgelegten,
d.h. erst beim Ausführen deiner Funktion:
Screenshot erstellen -> darüberlegen -> alle Änderungen an Form vornehmen
-> darübergelegten entfernen
(du wolltest doch das der User das Wechseln der Einstellungen nicht sieht ?)
MfG yukon-troll
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Fr 13.06.03 18:36
hmm .... ja ok, so dürfte es gehen, allerdings finde ich das etwas umständlich und wohl etwas Speicher- bzw. CPU-belastend.
oder??

|
|
toms
      
Beiträge: 1099
Erhaltene Danke: 2
|
Verfasst: Fr 13.06.03 18:43
Probier's doch mal mit WM_SETREDRAW.
|
|
yukon-troll
      
Beiträge: 60
|
Verfasst: Fr 13.06.03 18:49
die CPU-Belastung dürfte hierbei vernachlässigbar sein,
und der Speicher wird ja nur für den Moment der Anzeige belegt,
wenn du die beteiligten Komponenten erst bei Bedarf zur Laufzeit
erzeugst und gleich wieder freigibst.
Du musst halt immer zwischen Aufwand und Nutzen abwägen.
Du könntest natürlich auch die entsprechenden Windowsbotschaften zum
Neuzeichnen der Komponenten oder der Form abfangen
und erst am Ende der Verarbeitung durch ein
Invalidate ein Neuzeichnen erzwingen, aber bei vielen Komponenten ?
Wie gesagt Aufwand<->Nutzen.
MfG yukon-troll
|
|
yukon-troll
      
Beiträge: 60
|
Verfasst: Fr 13.06.03 19:01
@toms
ich glaube dein Vorschlag ist die bessere Lösung,
WM_SETREDRAW war mir noch nicht bekannt !
Danke
MfG yukon-troll
|
|
TheNeon 
      
Beiträge: 408
Windows
VS2010 C#
|
Verfasst: Fr 13.06.03 19:45
|
|
yukon-troll
      
Beiträge: 60
|
Verfasst: Sa 14.06.03 09:00
sollte so funktionieren (nicht getestet):
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7:
| SendMessage(Form.Handle, WM_SETREDRAW, LPARAM(false), 0);
SendMessage(Form.Handle, WM_SETREDRAW, LPARAM(true), 0); Form.Invalidate; |
MfG yukon-troll
|
|