Toon posts:

[DELPHI] maximizen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil dat mijn programma, wanneer deze in geminimaliseerd, gemaximized wordt als er aan een voorwaarde is voldaan. Wat is de aanroep hiervoor?

En ik zou ook graag een variabele willen kunnen veranderen als het programma geminimaliseerd is..

Weet iemand hoe?

Verwijderd

Moet je ff kijken naar de form properties windowstate
form.windowstate = ..maximize

Verwijderd

Topicstarter
waarom werkt dit dan niet??
code:
1
2
3
4
5
6
7
8
9
  begin
   //ShowMessage('Niet verbonden met internet');
   ImageRood.Visible := true;
   ImageGroen.Visible := false;
   MessageBeep($ffffffff);
   If Form1.WindowState = wsMinimized Then
   ShowMessage ('Maximize!');

  end;

als het programma geminimized is, zie ik niet die message...

Verwijderd

Voor 't maximizen kun je idd 't beste 't WindowState property gebruiken, en om te checken of 'ie geminimized is:

if not IsWindowVisible(Application.MainForm.Handle)...

Verwijderd

Topicstarter
Volgens mij kan het programma niet goed zien of hij geminimized is of niet...

Als ik hem heb geminimized, dat je hem dus niet in de taakbalk, dan zie ik geen message wanneer ik dus check op ws Minimized...

Verwijderd

Topicstarter
Op maandag 11 maart 2002 23:57 schreef Afterlife het volgende:
Voor 't maximizen kun je idd 't beste 't WindowState property gebruiken, en om te checken of 'ie geminimized is:

if not IsWindowVisible(Application.MainForm.Handle)...
welke paramater(s) moet ik dan meegeven? Ben nogal een newbie :(

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

dit werkt onder XP en D6 bij mij perfect anders...

code:
1
2
3
4
5
  case Form1.WindowState of
    wsNormal : form1.Caption := 'Normaal';
    wsMinimized: form1.Caption := 'Minimaal';
    wsMaximized : form1.Caption := 'Maximaal';
  end;

dit kun je doen om 't te veranderen
form1.WindowState := wsMaximized;


laat ze maar zeuren met hun windows handle, dar hebben we nou net delphi voor ;)
gebruik gewoon ff een test proggie om het effect van bovenstaande dingen te checken...

onresize van het form wordt trtouwens afgevuurd wanneer het formaat van het scherm verandert (ook minimalisere/maximaliseren etc.)

Cogito Ergo Credo


  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
Misschien een MessageDlg proberen?

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


Verwijderd

Topicstarter
Op dinsdag 12 maart 2002 00:04 schreef jopiek het volgende:
dit werkt onder XP en D6 bij mij perfect anders...

code:
1
2
3
4
5
  case Form1.WindowState of
    wsNormal : form1.Caption := 'Normaal';
    wsMinimized: form1.Caption := 'Minimaal';
    wsMaximized : form1.Caption := 'Maximaal';
  end;

dit kun je doen om 't te veranderen
form1.WindowState := wsMaximized;


laat ze maar zeuren met hun windows handle, dar hebben we nou net delphi voor ;)
gebruik gewoon ff een test proggie om het effect van bovenstaande dingen te checken...
Dit wat jij verteld werkt ook wel, maar dat is nou niet echt mijn probleem...

Waarom voert hij dit niet uit?
het programma is geminimaliseerd maar wordt niet getoond. Zou wel moeten volgens deze code toch?
code:
1
2
   If (Form1.WindowState = wsMinimized) then
   Form1.WindowState := wsNormal;

  • ArieProductions
  • Registratie: Januari 2002
  • Laatst online: 27-11-2024
code:
1
2
   If (Form1.WindowState = wsMinimized) then
   Form1.WindowState := wsNormal;

wanneer ik het 'uitdebugte', kwam ik tegen dat de windowstate niet wsMinimized is maar wsNormal ?

"Quidquid latine dictum sit, altum videtur" (Whatever is said in Latin sounds profound)


  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op dinsdag 12 maart 2002 00:17 schreef ArieProductions het volgende:
code:
1
2
   If (Form1.WindowState = wsMinimized) then
   Form1.WindowState := wsNormal;

wanneer ik het 'uitdebugte', kwam ik tegen dat de windowstate niet wsMinimized is maar wsNormal ?
Peter Below (TeamB) schreef dit:

Application.Minimize is de enige goed werkende manier

maar zelfs dat lijkt niet goed te gaan... er zit dus duidelijk ergens een bug (zelfs in D6 SP 2)

If IsIconic(application.Handle) then
Application.Restore;

is zelfs de engige manier om 'm weer terug te krijgen lijkt 't!

Cogito Ergo Credo


Verwijderd

Vrij logisch eigenlijk, omdat de mainform niet geminimalizeerd wordt als je op minimize drukt. De hoogte van de form wordt op 0 gezet.

Dit wordt gedaan omdat .. [hm :?] weet ik niet meer, maar had iets te maken met ontwerp van TApplication; dat deze alle messages moet ontvangen, ofzo, geloof ik...

[edit]
Oh ja, ik weet het weer: TApplication heeft een eigen onzichtbare window die de parent wordt van alle windows;

Hierdoor kun je een main form niet echt minimalizeren, omdat hij dan naar linksonder zou gaan, en je nog een blokje zou zien. Dus het effect wat je krijgt als je de WindowState van de mainform op wsMinimize zet.

Oplossing: Height van de mainform op 0 zetten.

Weet ik alleen niet meer waarom ze het zo hebben gedaan..

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Je hele applicatie valt weer binnen een TApplication, dit is een soort hidden form. Kun je tevoorschijn halen door een applicatie te maken die je NIET kan maximizen en dan toch via Taakbeheer maximaliseren.

"The shell stopped unexpectedly and Explorer.exe was restarted."


Verwijderd

Ej, dat was mijn tekst :)

  • jopiek
  • Registratie: September 2000
  • Laatst online: 21-08 19:56

jopiek

Tja... 'ns ff denken.

Op dinsdag 12 maart 2002 01:33 schreef DiFool het volgende:
Oplossing: Height van de mainform op 0 zetten.
En toch komt 't op mij niet erg netjes over, trouwens vraag ik me a of height op 0 helpt, want als je minimaliseert verandert de width ook...

Cogito Ergo Credo


Verwijderd

Met oplossing bedoelde ik de oplossing van Borland.

Zo is het nu geimplementeerd; als je op minimize drukt wordt de height van de mainform op 0 gezet.
[edit]
Oeps, source verkeerd gelezen:

Als je op minimize drukt, stuur je eigenlijk een WM_SYSCOMMAND met parameter SC_MINIMIZE naar de mainform.
Deze wordt echter afgevangen door Delphi; hierna wordt de hidden TApplication form zichtbaar gemaakt [dwz height 0 ipv width & height 0] en daar wordt dan die minimize commando naar toe gestuurd.

Windows zal dan de hidden TApplicatin form minimizen. En dus ook de mainform.
Pagina: 1