Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Text auf Button zweizeilig darstellen (https://www.delphipraxis.net/966-text-auf-button-zweizeilig-darstellen.html)

SmileyInkognito 2. Okt 2002 14:33


Text auf Button zweizeilig darstellen
 
Ich möchte einen langen Text auf einem Button zweizeilig darstellen.
Wer kann mir bei der Lösung helfen?

RomanK 2. Okt 2002 14:39

Nimm einen TBitBtn und dann
Code:
bitbtn1.Caption:='Erste'+#13+#10+'Zweite';
Zweite Registrierkarte "Additional"(Englische Version) und dann erster Button!

Alexander 2. Okt 2002 14:45

Das könnte man z.b. so machen
Code:
  i := GetWindowLong(Button1.Handle, GWL_STYLE);
  SetWindowLong(Button1.Handle, GWL_STYLE, i or BS_MULTILINE);
  Button1.Caption := 'Line1' + #13#10 + 'Line2';
Natürlich muss i noch deklariert werden

Alexander 2. Okt 2002 14:47

ich sollte vielleicht auch mal auf Absenden klicken und nicht noch mit dem Posten warten.....

Aber meine Version müsste auch mit einem normalen Button gehen :mrgreen:

RomanK 2. Okt 2002 14:57

Tut sie!
Aber meine ist wohl etwas einfacher zu verstehen!!
Man müss ja nicht mit dem Panzer auf Spatzen schießen!

Und wenn wir schon dabei sind dann mach es besser so:
Code:
SetWindowLong(Button1.Handle, GWL_STYLE, GetWindowLong(Button1.Handle, GWL_STYLE) or BS_MULTILINE);
  Button1.Caption := 'Line1' + #13#10 + 'Line2';
Weil dann muss man i nicht deklarieren :wink:

Alexander 2. Okt 2002 15:01

dann ist es aber noch schwerer zu verstehen, da unübersichtiger. Man kann sich ja ne Funktion daraus machen (lohnt zwar fast gar nicht, aber nun ja), wenn man es öfter braucht.

RomanK 2. Okt 2002 15:13

Da man es in der Tat öfters brauchen kann, hab ich mal eine Funktion geschrieben:
Code:
function TwoLines(but:TButton;First,Second:String):Boolean;
begin
if SetWindowLong(but.Handle, GWL_STYLE, GetWindowLong(but.Handle, GWL_STYLE) or BS_MULTILINE)> 0 then
begin
  but.Caption :=First + #13#10 + Second;
  result :=True;
end
else
result := false;
end;

Christian Seehase 2. Okt 2002 15:24

Moin Roman,

warum dann nicht gleich mit beliebig vielen Zeilen?

Code:
[b]function[/b] SetMultiLineCaption([b]const[/b] p_Button : TButton;[b]const[/b] p_sCaption : [b]String[/b];[b]const[/b] p_fAutoAdjust : Boolean = false) : Boolean;

[b]begin[/b]
  Result := false;
  [b]if[/b] SetWindowLong(p_Button.Handle, GWL_STYLE, GetWindowLong(p_Button.Handle, GWL_STYLE) [b]or[/b] BS_MULTILINE)> 0 [b]then[/b]
  [b]begin[/b]
    p_Button.Caption := p_sCaption;
    Result := true;
  [b]end[/b];
[b]end[/b];

[b]procedure[/b] TForm1.Button1Click(Sender: TObject);
[b]begin[/b]
  SetMultiLineCaption(self.Button1,'Und'#13#10'noch'#13#10'mehr'#13#10'Zeilen',true);
[b]end[/b];
Jetzt könnte man noch eine automatische Grössenanpassung mit einbauen, damit's auch passt. (ist vorbereitet)

Alexander 2. Okt 2002 16:34

naja jetzt ist aber die perfekte Lösung :mrgreen:

Daniel B 3. Okt 2002 18:01

Hi SmileyInkognito,

Neuen Beitrag hinzufügen, bezieht sich nur auf die Library.
Normale Fragen bitte auch in den normalen Sparten.
Dort bitte nur was schreiben, wenn ein Eintrag in die Library aufgenommen werden soll.
Ab nach OP.

Grüsse, Daniel :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 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