Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

ComboBox. Как добавить колонки в выпадающий список? [D7, WinXP]


Voffka ©   (2005-09-28 11:10:00) 

Все перерыл уже.  Устал ;(. Что-то я никак не пойму возможно ли это вообще. Кажется такая мелочь должна присутствовать в TComboBox, а найти никак не могу. Подскажите где искать, или как подменять выпадающий список ListBox-ом. Заранее спасибо.


Amoeba   (2005-09-28 14:19:00) [1]

Посмотри на http://www.torry.net/pages.php?id=134компонент TColumnListBox v.1.2 (если без исходников, то он бесплатный)


Voffka   (2005-09-28 13:27:00) [2]


> Amoeba ©   (28.09.05 13:16) [5]
> В таком случае придется писать с нуля собственный компонент.
>

мда, это мясо ;(


Amoeba   (2005-09-28 13:16:00) [3]

В таком случае придется писать с нуля собственный компонент.


Voffka   (2005-09-28 11:46:00) [4]

спасибо, но рисовать разделители и я могу, но это не разделение на колонки как в ListBox, т.е. каждый элемент колонки это отдельный item


dmitry501   (2005-09-28 11:36:00) [5]

А почитать разные факи пробовали? Например вот-

procedure TForm1.ComboBox1DrawItem(Control: TWinControl;  
 Index: Integer; Rect: TRect; State: TOwnerDrawState);  
var  
 strVal, strAll: string;  
 pos1, pos2: Integer;  
 rc: TRect;  
 arrWidth: array [0..3] of Integer;  
begin  
 Combobox1.Canvas.Brush.Style := bsSolid;  
 Combobox1.Canvas.FillRect(Rect);  
 // the columns must be separated by ';'  
 strAll := Combobox1.Items[Index];  

 arrWidth[0] := 0;  
 arrWidth[1] := 100;  // Width of column 1  
 arrWidth[2] := 200;  // Width of column 2  
 arrWidth[3] := 300;  // Width of colimn 3  

 // Drawingrange for first column  
 rc.Left   := Rect.Left + arrWidth[0] + 2;  
 rc.Right  := Rect.Left + arrWidth[1] - 2;  
 rc.Top    := Rect.Top;  
 rc.Bottom := Rect.Bottom;  

 // Get text for first column  
 pos1   := Pos(';', strAll);  
 strVal := Copy(strAll, 1, pos1 - 1);  
 // Draw Text  
 Combobox1.Canvas.TextRect(rc, rc.Left, rc.Top, strVal);  
 // Draw separating line betwenn columns  
 Combobox1.Canvas.MoveTo(rc.Right, rc.Top);  
 Combobox1.Canvas.LineTo(rc.Right, rc.Bottom);  

 // Drawingrange for second column  
 rc.Left  := Rect.Left + arrWidth[1] + 2;  
 rc.Right := Rect.Left + arrWidth[2] - 2;  

 // Text fur zweite Spalte ausfiltern  
 // Get text for second column  
 strAll := Copy(strAll, pos1 + 1, Length(strAll) - pos1);  
 pos1   := Pos(';', strAll);  
 strVal := Copy(strAll, 1, pos1 - 1);  

 // Text ausgeben  
 // Draw Text  
 Combobox1.Canvas.TextRect(rc, rc.Left, rc.Top, strVal);  
 // Trennlinie zwischen Spalten zeichnen  
 // Draw separating line betwenn columns  
 Combobox1.Canvas.MoveTo(rc.Right, rc.Top);  
 Combobox1.Canvas.LineTo(rc.Right, rc.Bottom);  

 // Drawingrange for third column  
 rc.Left  := Rect.Left + arrWidth[2] + 2;  
 rc.Right := Rect.Left + arrWidth[3] - 2;  

 // Get text for third column  
 strAll := Copy(strAll, pos1 + 1, Length(strAll) - pos1);  
 pos1   := Pos(';', strAll);  
 strVal := Copy(strAll, 1, pos1 - 1);  

 // Draw Text  
 Combobox1.Canvas.TextRect(rc, rc.Left, rc.Top, strVal);  
 // Draw separating line betwenn columns  
 Combobox1.Canvas.MoveTo(rc.Right, rc.Top);  
 Combobox1.Canvas.LineTo(rc.Right, rc.Bottom);  
 strAll := Copy(strAll, pos1 + 1, Length(strAll) - pos1);  
end;  

// Example/ Beispiel:  

procedure TForm1.Button1Click(Sender: TObject);  
begin  
 with Combobox1.Items do  
 begin  
   Add('first;second;third;');  
   Add('column1;column2;column3;');  
 end;  
end;  

procedure TForm1.FormCreate(Sender: TObject);  
begin  
 //Oder im Objekt Inspektor einstellen  
 //Or set this Property in the Object Inspector  
 Combobox1.Style := csOwnerDrawFixed;  
end;


   
Взято с http://delphiworld.narod.ru


Voffka   (2005-09-28 11:29:00) [6]


> CHES ©   (28.09.05 11:22) [1]
> ComboBox1.Items.Add('Your string')

и как это мне поможет создать в выпадающем списке вторую колонку?


CHES   (2005-09-28 11:22:00) [7]

ComboBox1.Items.Add('Your string')


Наверх

Титульная страница Поиск, карта сайта Написать письмо