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

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

Как программно создать и удалить 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-й строке.


Наверх

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