Text eines zweizeiligen Buttons zentrieren?
-
Hallo zusammen!
Hat jemand schon mal davon gehört, dass man den Text eines zweizeiligen Buttons zentrieren kann?
Wenn ja: Würde mich sehr auf eine Antwort freuen.
Wenn nein: Meint ihr, sowas ist ohne allzu riesigen Aufwand machbar?Danke, Jannika
-
Hallo,
wie genau meinst du dass? Ist der Text bei einem Button nicht immer zentriert, egal welche Größe er hat?
-
Nein, leider nicht!
Also bei einer Zeile ist ja klar, dass der Text zentriert ist, aber sobald ich zwei Zeilen habe, ist der Text linksbündig, also nicht mit dem Buttonrand, sondern, irgendwo in der Mitte, nur die zwei Zeile, fangen beide an der gleichen Stelle an:
So soll's sein:
abc abcde
Und so ist es:
abc abcde
Musste die CodeTags nehmen, da ich sonst die Form nicht dastellen konnte!
-
OK, jetzt weiß ich, wie du das meinst.
Allerdings kann man soweit ich weiß (zumindest bei mir, BCB4) überhaupt keine "mehrzeiligen" Buttons erstellen... zumindest nicht, wenn man die Komponente TButton benutzt. Ich habe mir da immer damit beholfen, die Buttons einfach selbst zu zeichnen, aber wahrscheinlich geht's auch einfacherEdit:
Vielleicht ist das bei BCB5 bzw. BCB6 auch von Haus aus drin... aber schau dir sonst doch mal die Hilfe an oder nach einer Property 'Align' oder so ähnlich.
-
Reyx schrieb:
Allerdings kann man soweit ich weiß (zumindest bei mir, BCB4) überhaupt keine "mehrzeiligen" Buttons erstellen...
Es gäbe wohl keine Formatierungsprobleme in der zweiten Zeile, wenn es keine zweite Zeile gäbe...
In der FAQ steht, wie man mehrzeilige Captions hinkriegt. Bringt Jannika jetzt wohl nix, aber dir vielleicht
-
Die zweizeiligen Buttons habe ich schon! Das klappt ganz wunderbar, aber die sehen halt etwas komisch aus! Und deshalb wollte ich den Text zentrieren! Schade, aber trotzdem Danke!
-
Ist zwar nicht die edelste Lösung, aber kannst du die Captions (der einzelnen Zeilen) nicht einfach mit Blanks " " davor und dahinter so "zurechtschieben", dass sie zentriert dargestellt werden?
Ich meine so nach dem Motto:
"abcd abcdef"
einfach
" abcd abcdef"
machen?
Das ganze natürlich nur, wenn die Buttongröße nicht variabel ist...
@HEZ
Simmt, daran hatte ich nicht gedacht
-
Vielleicht könnte man den FAQ Beitrag doch nutzen.
wenn man stattSetWindowLong(Button->Handle, GWL_STYLE, GetWindowLong(Button->Handle, GWL_STYLE) | BS_MULTILINE);
SetWindowLong(Button->Handle, GWL_STYLE, GetWindowLong(Button->Handle, GWL_STYLE) | BS_MULTILINE | BS_CENTER);
nutzt.
Ich habs aber nicht getestet.
Siehe auch hier in der MSDN
-
@Braunstein
Ja, so klappt's... zumindest bei mir
Wär ich vielleicht auch drauf gekommmen, wenn ich diesen FAQ-Beitrag gefunden hätteNaja, das Problem sollte damit zumindets gelöst sein...
-
Schlechte Nachrichten!!!!
Es klappt nicht so wie es soll! Werde jetzt mal schuaen, was ich noch tun kann!
Vielen Dank! Hatte zwischenzeitlich mal ein Hochgefühl....
-
Was genau klappt denn nicht? Bei mir ist der Button definitiv so zu sehen wie du ihn, deiner Beschreibung nach, haben wolltest!
Kommt eine Fehlermeldung?
Siehst du keine Veränderung?
-
Also, es hat sich gar nichts geändert , sieht noch genauso aus, wie vor dem Einfügen von BS_CENTER.
Habe jetzt auch versucht, BS_CENTER in ein seperates SetWindowLong zu schreiben, aber es tut sich immer noch nichts!
Irgendwie doof! Hast du noch was anderes gemacht, außer BS_CENTER eingefügt?
-
Ich habe im Constructor von Form1 einfach für zwei unterschiedliche Buttons mit gleichem Text die Methoden angewandt (mit BS_CENTER bei Button 2, bei Button 1 ohne)...
Naja, wie gesagt, es klappt bei mir, allerdings (wie als allererstes von mir gesagt ;-)) wird der Button-Text bei mir halt wirklich immer zentriert dargestellt, egal, ob mit oder ohne BS_CENTER, daher kann ich nicht beurteilen, ob es funktioniert oder nicht (hab ich aber erst vor kurzem gemerkt)...
Hast du es mal mit einem ReBuild oder anhand einer Minimalprojektes (nur ein Form + Button und dann die verschiedenen Methoden durcharbeiten) versucht?
Was ich nicht genau weißt ist, ob es sich bei der Methode um eine WinApi oder VCL-Funktion handelt. Sollte letzteres der Fall sein (was ich allerdings nicht glaube
), könnte es auch an deiner Version der VCL liegen...
Und wenn alles nichts hilft, hast du es denn mal mit Blanks versucht?
-
Es ist eine API-Funktion.
Ich habe jetzt auch mal Zeit gefunden ein bischen rumzuprobieren. Bis jetzt habe ich noch keine einfache Lösung gefunden.
Das Ausgleichen mit Blanks ist eine Möglichkeit, das schreiben einer eigenen Button-Komponente eine andere.
Am Einfachsten dürfte es wohl sein eine fertige Komponente zu nehmen, die Alles schon kann. Ich verwende für solche Sachen normalerweise die LMD-Tools.
Da gibts auch eine kostenfreie abgespeckte Variante. Die haben auch einen Button mit den gewünschten Eigenschaften dabei.Ciao
-
Hallo!
Vielen vielen Dank! Mit den LMD-Tools klappt die Sache ganz wunderbar!!!!