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

Вниз

Хочу ListBox, в котором многострочные Item сы и   Найти похожие ветки 

 
Dust ©   (2006-03-18 13:15) [0]

Хочу ListBox, в котором многострочные Item"сы и возможность задавать цвет для каждого итемса.


 
TStas ©   (2006-03-18 14:01) [1]

Ну есть же TTreeView


 
Dust ©   (2006-03-18 15:00) [2]

Если это оно, то расскажи, как мне организовать из дерева список выбора, где каждый элемент будет иметь много строк текста (3-4 строки) и будет окрашен в свой цвет.


 
Virgo_Style ©   (2006-03-18 15:05) [3]

OnDrawItem ?


 
Кашперук Иван   (2006-03-18 17:03) [4]

Могу предложить использовать TStringGrid -  вот для него есть код многострочности, и с цветом - совсем нет проблем, а если убрать у него вертикальные горизонтальные линии из Options, то будет вам тот же ListBox :)

http://cracklab.ru/pro/faq.php?pg=2613
http://cracklab.ru/pro/faq.php?pg=2611
http://cracklab.ru/pro/faq.php?pg=2610


 
Handle   (2006-03-18 17:15) [5]

procedure TForm1.FormCreate(Sender: TObject);
begin
ListBox1.Style := lbOwnerDrawVariable;

 with ListBox1.Items do
 begin
   ListBox1.Items.AddObject("Хочу ListBox, в котором многострочные Item"сы и возможность задавать цвет для каждого итемса.", Pointer(clRed));
   ListBox1.Items.AddObject("Если это оно, то расскажи, как мне организовать из дерева список выбора, где каждый элемент будет иметь много строк текста (3-4 строки) и будет окрашен в свой цвет.", Pointer(clGreen));
 end;

end;

procedure TForm1.ListBox1MeasureItem(Control: TWinControl; Index: Integer;
 var Height: Integer);
var
 i, PosSp: Integer;
 strVal: string;
 strTmp: string;
begin
 if Index >= 0 then
 begin
   strVal := ListBox1.Items[Index];
   strTmp := WrapText(strVal, 20);
   i := 1;
   while Pos(#$D#$A, strTmp) > 0 do
   begin
     i      := i + 1;
     strTmp := Copy(strTmp, Pos(#13#10, strTmp) + 2, Length(strTmp));
   end;
   Height := i * ListBox1.ItemHeight;
 end;
end;

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
 Rect: TRect; State: TOwnerDrawState);
var
 strVal: string;
 strTmp: string;
 intPos: Integer;
 i: Integer;
 rc: TRect;
begin
 with Control as TListBox do
  begin
    Canvas.FillRect(Rect);
    Canvas.Font.Color := TColor(Items.Objects[Index]);
    Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]);
  end;
 strVal := WrapText(ListBox1.Items[Index], 20);
 i      := 0;
 ListBox1.Canvas.FillRect(Rect);
 while Pos(#$D#$A, strVal) > 0 do
 begin
   intPos := Pos(#$D#$A, strVal);
   if intPos > 0 then
     strTmp := Copy(strVal, 1, intPos - 1)  
   else
     strTmp := strVal;
   rc     := Rect;
   rc.Top := Rect.Top + i * ListBox1.ItemHeight;
   ListBox1.Canvas.TextRect(rc, Rect.Left, Rect.Top + i * ListBox1.ItemHeight,
     strTmp);
   strVal := Copy(strVal, intPos + 2, Length(strVal));
   Inc(i);
 end;
 rc     := Rect;
 rc.Top := Rect.Top + i * ListBox1.ItemHeight;
 ListBox1.Canvas.TextRect(rc, Rect.Left, Rect.Top + i * ListBox1.ItemHeight, strVal);
 ListBox1.Canvas.Brush.Style := bsClear;
 ListBox1.Canvas.Rectangle(Rect);

end;


 
Handle   (2006-03-18 18:07) [6]

Ошибка здесь возникает
котором многострочные Item"сы и возможность


 
API ©   (2006-03-18 19:20) [7]

""


 
Dust ©   (2006-03-18 19:20) [8]

Не страшно, кавычки вносить в строку я умею


 
Dust ©   (2006-03-18 19:21) [9]

Всё равно не удобно....
Да и подогнать длинну текста, руками - занятие геморойное.


 
API ©   (2006-03-18 20:41) [10]

Да и подогнать длинну текста, руками - занятие геморойное.

DrawText



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

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

Наверх





Память: 0.47 MB
Время: 0.012 c
2-1144314543
fast2
2006-04-06 13:09
2006.04.23
Как в PageControl e вставить новый TabSheet среди существующих?


2-1144704080
Vovanchik
2006-04-11 01:21
2006.04.23
IB


3-1140959607
stone
2006-02-26 16:13
2006.04.23
Удаление из DBF


3-1141207231
_RusLAN
2006-03-01 13:00
2006.04.23
Firebird. IBExpert. Помогите разобраться с Backup/Restore


8-1121935386
asprofi
2005-07-21 12:43
2006.04.23
Как осущесвить перемотку видео без торможения движка DSPack ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский