2013-07-11 1 views
1

В настоящее время TButtonGroup не имеет собственности WordWrap. Я искал способ иметь такую ​​функциональность, но мой поиск примеров до сих пор не приносил никаких результатов.Добавить функциональность WordWrap для кнопок ButtonGroup в Delphi XE3

Мой вопрос: как добавить функцию wordwrap для заголовка кнопок в TButtonGroup? Можете ли вы привести мне пример или вести меня на правильном пути? Ваш ответ очень благодарен! BTW Я использую delphi XE3

ответ

4

Простой wordwrap уже произойдет, что можно увидеть, если вы измените заголовок во время выполнения, отредактировав DFM следующим образом.

Items = < 
    item 
    Caption = 'Word'#13'Wrap'#13'3 Lines' 
    end 
    ... 

Но по умолчанию картина с WordWrap не будет выглядеть хорошо.
Вы могли бы реализовать OnDrawButton, но это должно было бы написать много кода.
Самый быстрый способ будет установить gboShowCaption в ButtonOptions ложь и реализации OnAfterDrawButton вроде этого:

procedure TForm1.ButtonGroup1AfterDrawButton(Sender: TObject; Index: Integer; Canvas: TCanvas; Rect: TRect; State: TButtonDrawState); 
var 
s:String; 
begin 
    InFlateRect(Rect,-4,-4); 
    s := TButtonGroup(Sender).Items[Index].Caption; 
    Canvas.TextRect(Rect,s,[tfWordBreak,tfCenter]); 
end; 
+1

+1, для просто и красиво (я просто оставить образец, используя 'OnDrawButton' событие, но ваше решение проще). Просто обратите внимание, что вы можете улучшить свой код, задав значение Canvas.Brush.Style для 'bsclear', когда пользовательские стили будут активны, а также вычисляют vert. центр текста. – RRUZ

+0

@RRUZ спасибо, я просто хотел показать, где зацепить, есть много вещей, которые можно/следует рассмотреть/улучшить ... – bummi

+0

@bummi Удивительный! Это не может быть проще! и я использовал вход RRUZ, чтобы он работал с моими стилями. Большое спасибо!! – user2441588

Смежные вопросы