Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi bei maximierung positionsänderung des forms verhindern (https://www.delphipraxis.net/95619-bei-maximierung-positionsaenderung-des-forms-verhindern.html)

stephan007 10. Jul 2007 14:39


bei maximierung positionsänderung des forms verhindern
 
hallo!

ich habe folgendes problem:
ich stelle ein formular dar, das je nach inhalt einmal maximiert werden darf und einmal wieder nicht. folglich will ich den maximierungsbutton nicht ausblenden, weil es sonst verwirrend ist.

hab es nun mit constraints gelöst, die meinem fenster einfach eine feste größe geben. soweit so gut, d.h. wenn ich auf den button klicke, passiert rein garnichts. ausgenommen, dass das fenster ins linke obere eck wandert, allerdings in der fixen größe. klicke ich wieder drauf, wandert es wieder dorthin retour, wo es vorher war.

ich hab nun also die maximierung verhindert, aber nicht, dass das fenster mit der linken oberen ecke ins linke bildschirmeck zieht.

hat wer von euch eine idee, wie ich das verhindern könnte. denn es schaut sonst reichlich sonderbar aus, wenn sich die fenstergröße zwar nicht ändert, das formular sich aber plötzlich im eck oben befindet. also sozusagen springt.

es soll aber nicht generell unterbunden werden, sondern nur für eine bestimmte festerdarstellung. d.h. sozusagen ein flag kann verwendet werden, das angibt, ob das fenster einen typ hat, der maximieren erlaubt oder nicht. gewissermassen eine fallunterscheidung.

danke!

stephan.

Matze 10. Jul 2007 14:57

Re: bei maximierung positionsänderung des forms verhindern
 
Hi,

ich finde es sehr verwirrend, wenn man einen aktiven Maximieren-Button hat, dieser jedoch nichts bewirkt.

Ich würde das so lösen:

Delphi-Quellcode:
// Maximierung erlauben
Form1.BorderIcons := [biSystemMenu, biMinimize, biMaximize];
Form1.BorderStyle := bsSizeable;

// Maximierung unterbinden
Form1.BorderIcons := [biSystemMenu, biMinimize];
Form1.BorderStyle := bsSingle;

DelphiKlaus 10. Jul 2007 14:58

Re: bei maximierung positionsänderung des forms verhindern
 
Bei Delphi6 sollte es ausreichen, wenn Du aus den Bordericons des Formulars das biMaximize rausnimmst bzw. es hinzufügst. Dann kann der Anwender mal maximieren und mal nicht, so wie Du es steuerst.

uligerhardt 10. Jul 2007 14:59

Re: bei maximierung positionsänderung des forms verhindern
 
Zitat:

Zitat von stephan007
ich stelle ein formular dar, das je nach inhalt einmal maximiert werden darf und einmal wieder nicht. folglich will ich den maximierungsbutton nicht ausblenden, weil es sonst verwirrend ist.

Verwirrend ist doch eher, wenn ein Maximieren-Button angezeigt wird, der aber nicht maximiert?
Außerdem: Falls du den Minimieren-Button anzeigst, verschwindet ein ausgeblendeter Maximieren-Button ja nicht, sondern wird nur ausgegraut.

Wenn's aber unbedingt sein muss, schau dir doch mal WM_GETMINMAXINFO an.

Uli.

OregonGhost 10. Jul 2007 15:23

Re: bei maximierung positionsänderung des forms verhindern
 
Die korrekte Lösung wurde bereits erwähnt. Aber als Ergänzung:
Bist du sicher, dass nichts passiert, wenn du das über Constraints löst? Eigentlich müsste doch der Maximieren-Button trotzdem das Symbol wechseln, was erst recht verwirrend ist.

stephan007 11. Jul 2007 08:12

Re: bei maximierung positionsänderung des forms verhindern
 
ja, er wechselt das symbol.
ich hab das mit dem umsetzen schon mal versucht (das icon verschwinden zu lassen) nur geht das bei einem "unsichtbaren" form bzw. beim onshow nicht. mal schauen, ob ich das beim create oder so reinpacken kann. also wo, bevor das form angezeigt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:20 Uhr.

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