![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно создать и удалить combobox
IronWit © (2003-07-21 17:31:00)привязанный к listview строго определенному.
Почему то когда я это делаю ручками, то после 2-3 трех созданий\удалений программа падает с ошибками 204 или 216. Что бы это значило?
Заранее спасибо.
IronWit (2003-07-26 09:26:00) [1]Хотелось разобраться... :)
Dimaxx (2003-07-25 23:57:00) [2]А зачем каждый раз создавать/удалять? Надо просто создать его один раз при создании формы, сделать невидимым, заполнить данными, установить на нужное место и отобразить. После выбора данных скрыть. Удалить при закрытии формы. Вот и все.
IronWit (2003-07-23 08:56:00) [3]2SPeller
я вообще ту строку убрал. Так как у меня при выходе из combobox снала отрабатывает процедурка onleave - которая 100% убивает его.
savva (2003-07-22 10:57:00) [4]> Плохиш (22.07.03 10:38)
> А слабо посмотреть в справке, что Borland про Destroy пишет?
Забудь про справку от Borland - это теперь не самое главное, так как там все про классы
Плохиш (2003-07-22 10:38:00) [5]А слабо посмотреть в справке, что Borland про Destroy пишет?
SPeller (2003-07-22 10:36:00) [6]А ещё у меня вызывает сомнение вот это кусок:
> if combobox<>nil then
> begin
> combobox:=NewComboBox( listview3, [] );
Может, всё-таки, в условии надо combobox =nil ? А то получается, что если комбобокс создан (не равен nil), то ты его создаёшь по-новой.
ironwit (2003-07-22 10:29:00) [7]работает :)
savva (2003-07-22 09:50:00) [8]я бы сделал
combobox.Free;
вместо
combobox.Destroy;
но это еще надо проверить:)
IronWit (2003-07-22 09:22:00) [9]2SPeller. :)
создание
if combobox<>nil then
begin
combobox:=NewComboBox( listview3, [] );
combobox.OnLeave:=ComboBox1Leave;
combobox.Width:=listview3.LVColWidth[0];
combobox.DeleteLines(0,combobox.count);
combobox.Add('');
combobox.Add('Rip');
for i:=0 to listview1.lvcount-1 do
begin
if length(listview1.LVItems[i,0])>0 then combobox.Add(listview1.LVItems[i,0]);
end;
if length(listview3.LVItems[listview3.curindex,0])>0 then combobox.Text:=listview3.LVItems[listview3.curindex,0];
combobox.show;
end;
Удаление
в процедурке
procedure TForm1.ComboBox1Leave(Sender: PObj);
begin
listview3.lvItems[cur,0]:=combobox.Text;
combobox.Destroy;
combobox:=nil;
end;
SPeller (2003-07-22 03:51:00) [10]Ошибка в 17-й строке.