Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Fenstergröße beibehalten
Delete - Di 02.04.19 19:19
Titel: Fenstergröße beibehalten
- Nachträglich durch die Entwickler-Ecke gelöscht -
Gausi - Mi 03.04.19 08:42
Bringt es etwas, bei den Eigenschaften der Form bei Constraints was einzutragen?
Delete - Mi 03.04.19 12:07
- Nachträglich durch die Entwickler-Ecke gelöscht -
Delete - Mi 03.04.19 18:06
- Nachträglich durch die Entwickler-Ecke gelöscht -
Sinspin - Do 04.04.19 11:09
Das sollte sich via überschreiben der WindowProc machen lassen.
Du reagierst dann auf die Events und verhinderst dass die orginal aktion in der orginal WindowProc ausgeführt wird. Für alle anderen Ereignisse rufst das Orginal auf.
Delete - Do 04.04.19 12:01
- Nachträglich durch die Entwickler-Ecke gelöscht -
Chiyoko - Do 04.04.19 12:09
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_WINDOWPOSCHANGING : case WM_WINDOWPOSCHANGED: break; Default: base.WndProc(ref m); } } |
Delete - Do 04.04.19 13:20
- Nachträglich durch die Entwickler-Ecke gelöscht -
Sinspin - Do 04.04.19 13:22
Kann es sein dass ich dich mit jemandem verwechsle?
Im
Beitrag zum PopupMenu [
https://www.entwickler-ecke.de/viewtopic.php?t=117504&postorder=asc&start=20] ging es doch schon um die WindowProc und da war jemand mit einem ganz ähnlichen Nutzernamen aktiv.
Aber, gerne hier nochmal ein Schnipsel der zeigt wie es gehen sollte.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| type TForm1 = class(TForm) protected procedure WndProc(var Message: TMessage) ; override; private end;
implementation procedure TForm1.WndProc(var Message: TMessage) ; begin case message.Msg of WM_WINDOWPOSCHANGING :; WM_WINDOWPOSCHANGED :; WM_SIZE :; WM_NCCALCSIZE :; else inherited; end; end; |
Delete - Do 04.04.19 13:29
- Nachträglich durch die Entwickler-Ecke gelöscht -
Chiyoko - Do 04.04.19 14:56
Frühlingsrolle hat folgendes geschrieben : |
Die auskommentierte Stelle, ist die, die mich interessiert.
Soll sie leer stehen? |
Ja, nur bei Aufruf von Base wird die Nachricht weiter geleitet.
Sinspin - Fr 05.04.19 10:54
Frühlingsrolle hat folgendes geschrieben : |
Das war nicht mein Topic. Ich habe dsrin, so wie du, eine Hilfestellung geleistet.
Das Thema Popupmenu hat so garnichts mit dem Thema hier zu tun, außer die WndProc() Methode, die ein Bestandteil von beiden Themen ist. |
Ich hatte oben WindowProc erwähnt und bin davon ausgegangen dass du noch weiter mitgelesen hast in dem Beitrag wo es auch schon auf WindowProc hinauslief. Mein Sample verhindert jedenfalls dass die Nachrichten vom Fenster verarbeitet werden können. Ob dir das hilft bei deinem Problem musst du testen.
Delete - Fr 05.04.19 16:41
- Nachträglich durch die Entwickler-Ecke gelöscht -
mandras - Fr 05.04.19 20:41
Hallo Frühlingsrolle,
ich habe Deinen Beispielcode in D6 getestet, ebenso mit Delphi XE2.
Ergebnis:
Der Fenstertitel wird nicht mehr gesetzt wenn ich den Button betätige,
ebenfalls hat das Fenster beim Programmstart keinen Titel mehr
da auch das initiale SetText abgefangen wird.
Sinspin - So 07.04.19 12:45
Hey.
Habe gerade mal beide Beispiele ausprobiert. Caption verhindern klappt. Und die anderen Botschaften verhindern hat ein geradezu witziges Ergebnis bei der Darstellung des Fensters zur Folge.
Zeig mal bitte dein Testprojekt. Ist sicher nur eine Kleinigkeit.
Delete - So 07.04.19 14:55
- Nachträglich durch die Entwickler-Ecke gelöscht -
Sinspin - Mo 08.04.19 17:59
Sooo, Debug Mode/Release Mode unter 32Bit in XE2.
Projekt heißt zwar noch PopupFinder aber hat damit nix mehr zu tuen. Hatte schlicht keine Lust das umzubenennen :zwinker:
Via "TestCaption" = true/false kann man zwischen beiden Tests umschalten und muss dann neu übersetzen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30:
| procedure TForm1.WndProc(var Message: TMessage) ; const TestCaption = false;
begin if not TestCaption then begin case message.Msg of WM_WINDOWPOSCHANGING : Log('WM_WINDOWPOSCHANGING'); WM_WINDOWPOSCHANGED : Log('WM_WINDOWPOSCHANGED'); WM_SIZE : Log('WM_SIZE'); WM_NCCALCSIZE : Log('WM_NCCALCSIZE'); else begin inherited; end; end; end else begin if Message.msg = WM_SETTEXT then Log('WM_SETTEXT : '+PChar(Message.LParam)) else begin inherited WndProc(Message); end; end; end; |
Delete - Mo 08.04.19 18:34
- Nachträglich durch die Entwickler-Ecke gelöscht -
Sinspin - Mo 08.04.19 22:23
D10.2, 32Bit unter Win10 64Bit. Geht auch. Caption und Size.
Allerdings scheint es wirklich eine Minimalgröße zu geben die man nicht unterschreiten kann. Sehr interessant.
Ich habe ein Programm, glaub ich mit XE2 übersetzt, hier laufen das ist deutlich kleiner vom Fenster als die Minimalgröße.
Es hat allerdings keinen üblichen Fensterrahmen sondern ist via WindowRegion zugeschnitten.
Der Teil den ich nicht kleiner bekommen habe ist somit einfach unsichtbar.
Delete - Di 09.04.19 09:02
- Nachträglich durch die Entwickler-Ecke gelöscht -
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2024 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!