Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Minimize -> Maximize Problem


TomyN - Do 03.03.11 19:21
Titel: Minimize -> Maximize Problem
Hi,

ich habe folgendes Problem (in TurboDelphi).
Ich habe eine ganz normale Form, die der Benutzer auch minimieren kann. Abhängig von internen Geschichten, wird das Fenster über showWindow(self.handle, sw_Restore) einmalig wieder eingeblendet.

Nun das komische: Nachdem das Fenster eingeblendet wurde, funktioniert der 'Minimize' Button nicht mehr, d.h. das Fenster reagiert nicht, die andere Taste ('Maximize' oder 'Restore') funktionieren weiterhin.

Irgendwelche Ideen?

Tomy


elundril - Do 03.03.11 19:25

hast du auch schon mal probiert SW_Show statt SW_Restore zu nehmen? Sollte eigentlich das Fenster auch wieder anzeigen.

lg elundril


jaenicke - Do 03.03.11 19:42

Probleme in dieser Richtung kommen mir bekannt vor. Das liegt daran, das ShowWindow kein echter Ersatz für Show ist.

Ich muss mal schauen wie ich das seinerzeit gelöst habe... Wenn ich zu Hause bin, sitze noch in der Bahn.


Gerd Kayser - Do 03.03.11 21:11

user profile iconTomyN hat folgendes geschrieben Zum zitierten Posting springen:
Nachdem das Fenster eingeblendet wurde, funktioniert der 'Minimize' Button nicht mehr, d.h. das Fenster reagiert nicht, die andere Taste ('Maximize' oder 'Restore') funktionieren weiterhin.
Statt Restore versuche es einmal so:

Delphi-Quelltext
1:
2:
  ShowWindow(Mainform.Handle, SW_SHOWNORMAL);
  SetForegroundWindow(Mainform.Handle);


TomyN - Fr 04.03.11 18:30

Hi,

so, nun hab ich mal ein wenig probiert.

Es funktioniert:

showWindow(application.handle, sw_restore);

Es funktioniert nicht (kein Minimize über die Taste in der Menüleiste mehr möglich)

showWindow(masterForm.handle, sw_show); //Oder sw_restore oder oder...

Aber

getForegroundWindow liefert den Handle von masterForm zurück, nicht den der Application, wobei allerdings
isIconic(application.handle) wieder funktioniert...

Naja, irgendeinen Grund dafür wird's schon geben...

Danke für alle Antworten.

Tomy


jaenicke - Fr 04.03.11 18:42

Ja richtig, du hast ja noch die Version vor dem Fix mit dem unsichtbaren Application-Fenster (bei Delphi 2007). Vorher war dieses Fenster auf der Taskleiste eingeblendet und nicht dein Hauptfenster. Deshalb muss man da sehr genau schauen welche Fenster man da anspricht.

Ich frage mich aber warum du das alles überhaupt so machst, wenn es nur um das Minimieren der Form oder so geht. Ich meine, es gibt doch FormX.WindowState, Application.Restore usw., passt da nichts? :gruebel:


TomyN - Fr 04.03.11 19:15

Hi,

könnte schon sein, dass da irgendeine Variante passt. Hab da am Anfang ein paar Sachen probiert, da hat es nicht so recht funktioniert.
Im Netz hab ich dann was zum 'unsichtbaren' Fenster gefunden, da wurde das mit den Systemfunktionen vorgeschlagen, drum bin ich da erstmal hängen geblieben.


Tomy


FrEaKY - Sa 26.03.11 20:31

Warum denn nicht
Application.Restore;
?
Wenn man schon die VCL nutzt...