Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit Statusbar (https://www.delphipraxis.net/10702-probleme-mit-statusbar.html)

markon 23. Okt 2003 17:04


Probleme mit Statusbar
 
hallo.
habe folgendes problem:
es öffnet sich eine "mainform" im vollbild. (als hintergrund)
diese hat im ereigniss onactivate den code: frm_menu.ShowModal;
d.h. es wird eine form "frm_menu" geöffnet, welche im vordergrund als kleines fenster und aktiv ist.
das alles funktioniert!
nun habe ich auf der im hintergrund befindlichen form eine statusbar angelegt. diese sollte ja bekanntlich auf der form ganz unten sein. dies ist nich ganz der fall.
diese statusbar ist irgendwo in der mitte der form. das liegt daran, weil die form im vordergrund (mit modal geöffnet) irgendwie zu schnell aufbaut. schließe ich die form im vordergrund, dann "rutscht" die statusbar an ihrem eigentlichen platz, nämlich ganz nach unten.

meine frage: warum ist die statusbar nich gleich unten platziert, da wo sie hingehört? :gruebel:

wie kann ich erst die im hintergrund befindliche form komplett aufbauen, bevor die vorder erzeugt wird. muss aber ohne mausklick automatisch geschehen!

über hilfe wäre ich sehr dankbar.
gruß
marcus

Christian Seehase 23. Okt 2003 17:23

Re: Probleme mit Statusbar
 
Moin Markus,

das hab' ich auch noch nicht gehört :shock:

Versuch' mal ob's funktioniert, wenn Du vor den Aufruf von frm_menu.ShowModal ein Application.ProcessMessages einbaust.

XeRo 23. Okt 2003 18:26

Re: Probleme mit Statusbar
 
Merkwürdig...
Versuch mal vor dem Aufbau der zweiten form ein Sleep(10) einzubauen um denm Statusbar Zeit zu geben, oder du versuchst ein einfaches Refresh um die Form zu aktualisieren...

Weis nicht obs funktioniert... :roll:

Mirilin 23. Okt 2003 18:36

Re: Probleme mit Statusbar
 
Zitat:

Sleep pausiert Programmausführungen gemäß dem Parameter Millseconds. Unter Windows ist Sleep lediglich eine Verknüpfung mit der Sleep-Funktion in der System-API. Unter Linux ruft Sleep die usleep-Bibliotheksroutine auf.
Das nützt dir also nichts. Application.Processmessages, jedoch :

Zitat:

Durch einen Aufruf von ProcessMessages ermöglichen Sie der Anwendung, die Botschaften in der Warteschlange abzuarbeiten. ProcessMessages durchläuft die Botschaftswarteschlange von Windows, bis diese leer ist. Anschließend wird die Ablaufsteuerung wieder auf die Anwendung übertragen.

Die Vernachlässigung der Botschaftsverarbeitung wirkt sich nur auf die Anwendung aus, die ProcessMessages aufruft, nicht auf andere Anwendungen. Bei langen Operationen ermöglicht der periodische Aufruf von ProcessMessages, daß die Anwendung auf Zeichnen- und andere Botschaften antwortet.

Christian Seehase 23. Okt 2003 19:57

Re: Probleme mit Statusbar
 
Moin Xero,

Sleep kann nicht funktionieren, da hiermit der Thread für die angegebene Zeitdauer keinerlei Nachrichten mehr verarbeitet, und somit auch nicht mehr das Zeichnen des Formulares möglich ist.

XeRo 23. Okt 2003 20:00

Re: Probleme mit Statusbar
 
Und was ist mir Refresh? :?:

Christian Seehase 23. Okt 2003 20:07

Re: Probleme mit Statusbar
 
Moin Xero,

Refresh könnte gehen.
Wenn allerdings die Botschaftsverarbeitung durch das ShowModal ausgebremst wird (was ich mir irgendwie immer noch nicht so recht vorstellen kann) könnte es allerdings auch damit schiefgehen.

markon 24. Okt 2003 09:11

Re: Probleme mit Statusbar
 
Liste der Anhänge anzeigen (Anzahl: 1)
moin.
danke erstmal für euer postings.
dies hat aber leider alles nix genützt. weder refresh noch Application.ProcessMessages;
Delphi-Quellcode:
procedure Tfrm_Main.FormActivate(Sender: TObject);
begin
 //sleep(5000);
 //delay(5000);

 Application.ProcessMessages;

 frm_main.Refresh;

 frm_menu.ShowModal;

end;
irgendwie wird das showmodal zu zeitig ausgeführt, was ja aber nicht sein kann das es am ende steht.

hab mal nen screenshot gemacht.
so schauts aus wenn das programm ausgeführt wird. erst nach dem klick auf den button1 "rutscht" die statusbar an ihrem richtigen fleck.

FriFra 24. Okt 2003 09:31

Re: Probleme mit Statusbar
 
Versuch doch mal, ProcessMessages nach dem Refresh auszuführen, damit die Aplikation eine Chance hat den Refresh auch durchzuführen.

Sollte das alles nichts helfen, dann nimm doch einen Timer mit z.B. 100ms und ruf Dein ShowModal darüber auf.

markon 24. Okt 2003 09:34

Re: Probleme mit Statusbar
 
ich glaubs nich... :wall:

habe den "hänger" gefunden!
und zwar hatte ich der im hintergrund befindlichen form die eigenschaft "WindowState" den wert "wsmaximized" zugewiesen.
nun habe ich ihn dort wieder auf "wsnormal" gesetzt.
jetzt wird zur laufzeit die eigenschaft auf maximized gesetzt. zusammen mit dem ProcessManager funzt das ganze. die status bar wird wie gwollt / gewohnt angezeigt :thuimb:


Delphi-Quellcode:
procedure Tfrm_Main.FormActivate(Sender: TObject);
begin
 //sleep(5000);
 //delay(5000);

 Application.ProcessMessages;

 frm_main.WindowState:= wsmaximized;

 frm_main.Refresh;

 frm_menu.ShowModal;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 Uhr.
Seite 1 von 2  1 2      

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