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

Вниз

ComboBox. Как добавить колонки в выпадающий список?   Найти похожие ветки 

 
Voffka   (2005-09-28 11:10) [0]

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


 
CHES ©   (2005-09-28 11:22) [1]

ComboBox1.Items.Add("Your string")


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


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

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


 
dmitry501 ©   (2005-09-28 11:36) [3]

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

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:46) [4]

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


 
Amoeba ©   (2005-09-28 13:16) [5]

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


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


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

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


 
Amoeba ©   (2005-09-28 14:19) [7]

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



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

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

Наверх




Память: 0.47 MB
Время: 0.039 c
2-1126642440
markon
2005-09-14 00:14
2005.10.16
Вызов функции, написанной в одном модуле из другого модуля


5-1103129104
Anatoly
2004-12-15 19:45
2005.10.16
Коллекция после запуска пустая


4-1124213393
SuperMatser
2005-08-16 21:29
2005.10.16
Кто нить работал с GetBKcolor? ничего не получается!!!!!!!!!!!!!!


14-1127812199
pazitrton_brain
2005-09-27 13:09
2005.10.16
Зацените программу


1-1127574107
Vitaliy
2005-09-24 19:01
2005.10.16
Динамические массивы в делфи





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