Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Autosize für Button?
JayK - Fr 20.01.06 22:56
Titel: Autosize für Button?
Hallo,
wie kriege ich es hin, dass ein Button seine Größe immer der Länge seiner Caption anpasst (mitwächst), wenn sich diese ändert? Ich möchte keine neue Komponente erstellen, sondern nur wissen, wie ich zur Laufzeit dafür sorgen kann, dass das Teil die Größe nach dem Platzbedarf des Textes ändert.
Schonmal Danke im Voraus
JayK
mkinzler - Fr 20.01.06 23:00
Nur manuell, d.h nach Ändern von Caption Breite berechnen und setzen. Da ein Button keine eigenschaft autosize besitzt und es kein Event für die Änderung von caption gibt, kann das ein Button nicht selber.
JayK - Fr 20.01.06 23:38
Ja das ist mir schon klar. Mir ging es vorrangig darum, wie ich denn die Breite nun berechnen kann. Ich hab da keine Idee :nixweiss:
mkinzler - Fr 20.01.06 23:45
JayK hat folgendes geschrieben: |
Ja das ist mir schon klar. Mir ging es vorrangig darum, wie ich denn die Breite nun berechnen kann. Ich hab da keine Idee :nixweiss: |
Irgendwie mit (Button.Font.Size + <Abstand zwischen Zeichen>)*Length(Button.Caption) + 2*<Abstand Text zu Rand>
Marc. - Fr 20.01.06 23:47
voherigen beitrag editiert.. bzw komplett ersetzt!
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure TForm1.Edit1Change(Sender: TObject); begin button1.Caption := edit1.Text; button1.Width := length(button1.Caption) * 10; end; |
allerdings ist das ergebnis wieder exponential...
Lannes - Sa 21.01.06 00:16
Hallo,
die Prozedur setzt die Button-Größe in Abhängigkeit zur Stringlänge und dem Font des Buttons:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure SetButtonWidthHeight(aButton: TButton;S: String); var B : TBitmap; begin B := TBitmap.Create; B.Canvas.Font := aButton.Font; aButton.Width := B.Canvas.TextWidth(S)+14; aButton.Height := B.Canvas.TextHeight(S)+14; aButton.Caption := S; B.Free; end;
procedure TForm1.Button2Click(Sender: TObject); begin SetButtonWidthHeight(Button1,'Ein Schalter'); end; |
JayK - Sa 21.01.06 16:07
Dankesehr, das klappt wunderbar :-D
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!