Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#22

AW: TForm.Height vs. ClientHeight

  Alt 20. Jun 2022, 17:04
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.
$2B or not $2B
  Mit Zitat antworten Zitat