Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Вниз

Переход на новую строку в свойстве Items компонента RadioGroup?   Найти похожие ветки 

 
Lebedev ©   (2007-06-19 08:38) [0]

Как осуществить переход на новую строку в свойстве Items компонента RadioGroup? А так же в свойстве Caption.
То есть, если надпись напротив «элемента выбора» слишком длинная, что не влезает в окно, и хочется её сделать в две строки. В самом редакторе Items так сделать не удаётся, так как он воспринимает это как новый «элемент выбора».
То же относительно свойства Caption.
Спасибо!


 
{RASkov} ©   (2007-06-19 13:12) [1]

> Как осуществить переход на новую строку в свойстве Items
> компонента RadioGroup?

Не уверен что в D6 есть свойство WordWrap у TRadioButton"ов.... В D7 есть....

var N: Integer;
begin
 for N := 0 to RadioGroup.Items.Count-1 do
   RadioGroup.Buttons[N].WordWrap:=True;
end;


 
Lebedev ©   (2007-06-20 07:39) [2]

В D6 выдаёт ошибку. Есть другой способ?


 
Lebedev ©   (2007-06-20 13:59) [3]

Up


 
Kolan ©   (2007-06-20 14:20) [4]

procedure TCustomLabel.SetWordWrap(Value: Boolean);
begin
 if FWordWrap <> Value then
 begin
   FWordWrap := Value;
   AdjustBounds;
   Invalidate;
 end;
end;

procedure TCustomLabel.AdjustBounds;
const
 WordWraps: array[Boolean] of Word = (0, DT_WORDBREAK);
var
 DC: HDC;
 X: Integer;
 Rect: TRect;
 AAlignment: TAlignment;
begin
 if not (csReading in ComponentState) and FAutoSize then
 begin
   Rect := ClientRect;
   DC := GetDC(0);
   Canvas.Handle := DC;
   DoDrawText(Rect, (DT_EXPANDTABS or DT_CALCRECT) or WordWraps[FWordWrap]);
   Canvas.Handle := 0;
   ReleaseDC(0, DC);
   X := Left;
   AAlignment := FAlignment;
   if UseRightToLeftAlignment then ChangeBiDiModeAlignment(AAlignment);
   if AAlignment = taRightJustify then Inc(X, Width &#151; Rect.Right);
   SetBounds(X, Top, Rect.Right, Rect.Bottom);
 end;
end;

procedure TCustomLabel.DoDrawText(var Rect: TRect; Flags: Longint);
const
 EllipsisStr = "&#133";
 Ellipsis: array[TEllipsisPosition] of Longint = (0, DT_PATH_ELLIPSIS,
   DT_END_ELLIPSIS, DT_WORD_ELLIPSIS);
var
 Text, DText: string;
 NewRect: TRect;
 Height, Delim: Integer;
begin
 Text := GetLabelText;
 if (Flags and DT_CALCRECT <> 0) and ((Text = "") or FShowAccelChar and
   (Text[1] = "&") and (Text[2] = #0)) then Text := Text + " ";
 if not FShowAccelChar then Flags := Flags or DT_NOPREFIX;
 Flags := DrawTextBiDiModeFlags(Flags);
 Canvas.Font := Font;
 if (FEllipsisPosition <> epNone) and not FAutoSize then
 begin
   DText := Text;
   Flags := Flags and not DT_EXPANDTABS;
   Flags := Flags or Ellipsis[FEllipsisPosition];
   if FWordWrap and (FEllipsisPosition in [epEndEllipsis, epWordEllipsis]) then
   begin
     repeat
       NewRect := Rect;
       Dec(NewRect.Right, Canvas.TextWidth(EllipsisStr));
       DrawText(Canvas.Handle, PChar(DText), Length(DText), NewRect, Flags or DT_CALCRECT);
       Height := NewRect.Bottom &#151; NewRect.Top;
       if (Height > ClientHeight) and (Height > Canvas.Font.Height) then
       begin
         Delim := LastDelimiter(" "#9, Text);
         if Delim = 0 then
           Delim := Length(Text);
         Dec(Delim);
         if ByteType(Text, Delim) = mbLeadByte then
           Dec(Delim);
         Text := Copy(Text, 1, Delim);
         DText := Text + EllipsisStr;
         if Text = "" then
           Break;
       end else
         Break;
     until False;
   end;
   if Text <> "" then
     Text := DText;
 end;
 if not Enabled then
 begin
   OffsetRect(Rect, 1, 1);
   Canvas.Font.Color := clBtnHighlight;
   DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
   OffsetRect(Rect, &#151;1, &#151;1);
   Canvas.Font.Color := clBtnShadow;
   DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
 end
 else
   DrawText(Canvas.Handle, PChar(Text), Length(Text), Rect, Flags);
end;


Вот кусок из VCL который делает WordWrap


 
Lebedev ©   (2007-06-26 08:36) [5]

Я D7 себе установил. Так что сейчас стало проще.
Только вопрос а как быть с заголовком у RadioButton? Как в Caption переносить на новую строку? Посмотрел, что свойство WordWrap в этом случае не работает.


 
Lebedev ©   (2007-06-26 13:12) [6]

up


 
{RASkov} ©   (2007-06-26 20:12) [7]

> [5] Lebedev ©   (26.06.07 08:36)
> Как в Caption переносить на новую строку?

Наверное только переписыванием компонента TRadioGroup....
Делфи нет.... глянуть...


 
Германн ©   (2007-06-27 01:17) [8]


> {RASkov} ©   (26.06.07 20:12) [7]
>
> > [5] Lebedev ©   (26.06.07 08:36)
> > Как в Caption переносить на новую строку?
>
> Наверное только переписыванием компонента TRadioGroup...
> .
>

Я лично в тех случаях, когда мне нужны многострочный Капшен в компонентах, которые сами не умеют их отрисовывать, использую TLabel расположенный в том месте, где должен был бы (по идее) находиться Капшен.
:)


 
{RASkov} ©   (2007-06-27 02:11) [9]

> [8] Германн ©   (27.06.07 01:17)

+1
или стараюсь не допускать таких длинных названий...

В радиогроуп в зависимости от кол-ва итемов и размера самой группы может такой капшен выглядеть не красиво :)
Я пытался переписать(т.н. там минимальные изменения сделал и увидев лажу - плюнул) метод Паинт у Радиогроуп, перенос получился, но как я говорил... не красиво смотриться с итемами...
В данном случае можно воспользоваться Панель+Метка+Радиобутонны.... выровнив их как нужно в дизайнере... (если конечно динамично у автора итемы не меняются динамично в рантайме)... имхо.


 
Германн ©   (2007-06-27 02:23) [10]


> {RASkov} ©   (27.06.07 02:11) [9]
>
> > [8] Германн ©   (27.06.07 01:17)
>
> +1
> или стараюсь не допускать таких длинных названий...
>

Не всегда возможно "описАть в двух словах" суть данной опции. А на хинт очень часто не обращают внимание. А уж чтение справки - это уже перебор для наших людёв! :)


 
{RASkov} ©   (2007-06-27 02:26) [11]

> Не всегда возможно "описАть в двух словах" суть данной опции.

Во-во.. порой прямо "бесишься" от придумывания "покороче"... :)) Ну или..да, метка+.... А куда деваться...)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.034 c
15-1182120075
midi
2007-06-18 02:41
2007.07.22
Кто знает смысл этой функции?


15-1182306120
Slider007
2007-06-20 06:22
2007.07.22
С днем рождения ! 20 июня 2007 среда


2-1183203762
Qzzma
2007-06-30 15:42
2007.07.22
TTreeView


3-1177048463
MZ
2007-04-20 09:54
2007.07.22
Фильтр в DBGridEh


15-1182859309
Ega23
2007-06-26 16:01
2007.07.22
Хочу редактор классов для Delphi 7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский