Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi WordWrap für RadioGroup? (https://www.delphipraxis.net/71704-wordwrap-fuer-radiogroup.html)

Helmi 19. Jun 2006 20:24


WordWrap für RadioGroup?
 
Hallo,

gibt es für RadioGroup ne Möglichkeit WordWrap (wie bei TCheckBox z. B.) nachzustellen?

gfjs 20. Jun 2006 06:27

Re: WordWrap für RadioGroup?
 
Vermutlich nicht. Würde ja auch keinen Sinn machen, da Du in eine Radiogroup ja keinen Text eingibst, sondern nur die RadioButtons einfügst. Ob es für die RadioButtons die Eigenschaft WordWrap gibt, weiß ich nicht auswendig (habe hier im Büro kein Delphi installiert). Wenn nicht, kannst Du es mal mit #13#10 versuchen, musst aber dann die Höhe des RadioButtons so wählen, dass auch zwei oder mehr Zeilen angezeigt werden können.

Gruß Jürgen.

marabu 20. Jun 2006 07:59

Re: WordWrap für RadioGroup?
 
Guten Morgen.

Mehrzeiliger Text für die Items einer RadioGroup wird aufgrund des von der VCL verwendeten button styles nicht umgebrochen. Man kann aber nachhelfen:

Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
  i: Integer;
  rbs: DWORD;
  rb: TRadioButton;
begin
  with RadioGroup do
  begin
    for i := 0 to Pred(Items.Count) do
    begin
      rb := Buttons[i];
      rbs := GetWindowLong(rb.Handle, GWL_STYLE);
//    rbs := rbs + BS_MULTILINE + BS_TOP;   // or statt plus ist besser ...
      rbs := rbs or BS_MULTILINE or BS_TOP;
      SetWindowLong(rb.Handle, GWL_STYLE, rbs);
    end;
    Invalidate;
  end;
end;
Grüße vom marabu

Helmi 20. Jun 2006 17:36

Re: WordWrap für RadioGroup?
 
Hallo,

danke für den Code!

schaut gut aus!

Vor allem interessant was passiert, wenn man mehrmals auf den button drückt :-)

marabu 20. Jun 2006 18:41

Re: WordWrap für RadioGroup?
 
Ich Schussel habe + statt or als Operator verwendet.

Grüße vom marabu

Helmi 20. Jun 2006 18:45

Re: WordWrap für RadioGroup?
 
Zitat:

Zitat von marabu
Ich Schussel habe + statt or als Operator verwendet.

also so funktionierts:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  rbs: DWORD;
  rb: TRadioButton;
begin
  with RadioGroup1 do
  begin
    for i := 0 to Pred(Items.Count) do
    begin
      rb := Buttons[i];
      rbs := GetWindowLong(rb.Handle, GWL_STYLE);
      rbs := rbs or BS_MULTILINE or BS_TOP;
      SetWindowLong(rb.Handle, GWL_STYLE, rbs);
    end;
    Invalidate;
  end;
end;

Helmi 20. Jun 2006 20:17

Re: WordWrap für RadioGroup?
 
Jetzt hätt ich noch ne frage:

Ich hab daraus eine Procedure gemacht:

Delphi-Quellcode:
procedure RadioGroup_WordWrap(RadioGroup: TRadioGroup);
var
  i: Integer;
  rbs: DWORD;
  rb: TRadioButton;

begin
  with RadioGroup do
    begin
      for i := 0 to Pred(Items.Count) do
        begin
          rb := Buttons[i];
          rbs := GetWindowLong(rb.Handle, GWL_STYLE);

          //Original
          rbs := rbs or BS_MULTILINE or BS_TOP;
 
          //Versuch zum Ein/Ausschalten
          If rbs = (rbs + BS_MULTILINE) then
            rbs := rbs - BS_MULTILINE
          else
            rbs := rbs + BS_MULTILINE;

          SetWindowLong(rb.Handle, GWL_STYLE, rbs);
        end;
      Invalidate;
    end;
end;

Wie kann ich das WordWrap ein- bzw. ausschalten?

marabu 20. Jun 2006 20:30

Re: WordWrap für RadioGroup?
 
So wie du mit OR eine Option einschaltest, so kannst du sie mit AND NOT wieder ausschalten. Probiere es aus.

marabu

Helmi 8. Jan 2008 21:25

Re: WordWrap für RadioGroup?
 
Hallo,

ich muss dieses Thema nochmal aufwärmen.

Mit dem oberen Code funktioniert ja das WordWrap für die RadioGroup.
Nur leider "verschiebt" sich der Text nicht nach oben, so dass der
RadioButton in der Mitte des Textes ist (so wie z. B. bei einer
CheckBox).

Wie kann ich den Text auch noch mitwandern lassen?

Lannes 9. Jan 2008 00:00

Re: WordWrap für RadioGroup?
 
Hallo,

ersetz mal BS_TOP durch BS_VCENTER, wobei ich BS_TOP optisch ansprechender finde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz