Einzelnen Beitrag anzeigen

nahpets
(Gast)

n/a Beiträge
 
#7

AW: Canvas.Textwidth liefert falschen Wert

  Alt 13. Jan 2017, 11:06
Um die Mindestgröße eines Buttons zu ermitteln gehe ich im Prinzip so vor:
Delphi-Quellcode:
function TfrmDGB.SetButton;
var
          lb : TLabel;
begin
  lb := TLabel.Create(Self);
  lb.Font := btnFilter.Font;
  lb.AutoSize := True;
  lb.Caption := btnFilter.Caption;
  btnFilter.Width := lb.Width + 16;
  lb.Free;
end;
Mit dieser Methode haben die Buttons auch dann noch eine korrekte Breite, wenn die Schriftgröße zur Laufzeit verändert wird.

Verallgemeinert könnte das dann eventuell ungefähr so aussehen:
Delphi-Quellcode:
function GetWidth(c : TControl; Caption : String) : Integer;
var
          lb : TLabel;
begin
  lb := TLabel.Create(Nil);
  lb.Font := c.Font;
  lb.AutoSize := True;
  lb.Caption := Caption;
  Result := lb.Width + 16;
  lb.Free;
end;
Bei Labels, die automatisch die richtige Breite haben sollen, setze ich AutoSize auf True. Damit links und rechts ein kleiner Rand bleibt (was meiner Meinung nach besser aussieht), setze ich die Caption immer in der Form Leerzeichen + Text + Leerzeichen . Damit sieht das eigentlich in allen Anwendungen ordentlich aus.
  Mit Zitat antworten Zitat