AW: TForm.Height vs. ClientHeight
Lies bitte nochmals meine Nachricht! Setze AutoScroll im Design auf FALSE und im OnCreate der Form schreibst du "AutoScroll := True;" und dein Probem ist 99% sicher gelöst. Deine Kunden können so nachwievor die Autoscroll Funktion nutzen und deine Form wird richtig geladen mit den CcientXY Angaben. Wenn AutoScroll True ist, wenn du die Form speicherst, hast du die falschen Höhen und Breiten und lädst dann die Form.Height/Width und nicht ClientHeight/ClientWidth.
Wie gesagt mache ich das genau so bei allen meinen Formen, die AutoScroll nutzen sollen. Das "komische/falsche" Verhalten besteht seit Anfang an und wurde leider nie angepasst. Habe das schon vor 20 Jahren als Bug gemeldet, aber angepasst wurde das bis Heute nicht. |
AW: TForm.Height vs. ClientHeight
Ich hatte den ganzen Mist in hunderten Forms bereits von den DFMs ins OnCreate geschoben.
Aber Chäffe will dass so nicht, weil dann die Bearbeitung im FormDesinger das Scrollen dann noch nicht hat und somit die Form dort abgeschnitten wird. Das Problem wäre auch ganz einfach zu lösen, aber eben nur zur Laufzeit, aber nicht im FormDesigner. (der denn die Form schrottet, sobald man sie einmal in der IDE lädt+speichert) Nur dass sich Emba einfach weigert da die zwei Zeilen aufzunehmen und den Bug zu beheben. Wie gesagt, es muß einfach nur beim Zuweisen von Width das FClientWidth gelöscht werden.
Delphi-Quellcode:
Stattdessen hat jetzt Kollege einen 1500-Zeilen-Hook-Unit geschrieben, welche Form-Klassen in der IDE registriert und dort die Setter überschreibt. :cyclops:
type
TFormAccess = class(TForm); TMyForm = class(...) ... protected //procedure SetWidth(Value: Integer); override; // doesn't work because it's not virtual //procedure SetHeight(Value: Integer); override; procedure SetBounds(ALeft, ATop, AWidth, AHeight: Integer); override; end; procedure TMyForm.SetBounds(ALeft, ATop, AWidth, AHeight: Integer); begin if Width <> AWidth then {TFormAccess(Self).}FClientWidth := 0; if Height <> AHeight then {TFormAccess(Self).}FClientHeight := 0; inherited; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:28 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