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:
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;
Stattdessen hat jetzt Kollege einen 1500-Zeilen-Hook-
Unit geschrieben, welche Form-Klassen in der
IDE registriert und dort die Setter überschreibt.