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

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

Вызов событий Combobox созданных runtime


dzmitry_li ©   (2005-11-14 16:32:00) 

Нда, споткнулся на простом коде...
создаю Combobox runtime, устанавливаю обработчик событий, но они как я не бьюсь - не вызываются,
Delphi2005 и Delphi7 проверено и неработоспособно... куда плясать?

код ниже


procedure TForm1.FormCreate(Sender: TObject);
begin
 Col.Combo:=TComboBox.Create(nil); // Form1, Application
 Col.Combo.ItemHeight:=13;
 Col.Combo.DropDownCount:=16;
 Col.Combo.Style:=csDropDownList;
 Col.Combo.Parent:=Form1;
 Col.Combo.OnChange:=ComboBox1Change;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
ShowMessage('Ну вызовись этот грёбаный метод!')
end;


dzmitry_li   (2005-11-14 18:03:00) [1]

переволновался... прошёлся по улице (когда шёл домой с работы), и проблема решилась
отвечу сразу на вопрос что такое Col, а допустим это

type TCol=record
p: TPanel;
Combo: TComboBox;
end;
var
Col: TCol;

второе, хотел внедрить в StringGrid в некоторые ячейки выпадающий список ComboBox
соответственно делал вышеприведённый код.Забавно что когда Parent форма - события работают, когда парент StringGrid - снова не работает.
То что у меня проглотилось и заработало вот код

Col.p:=TPanel.Create(Application);
Col.p.Visible:=True;
Col.p.Parent:=StringGrid2;
Col.Combo:=TComboBox.Create(nil);
Col.Combo.Visible:=True;
Col.Combo.Tag:=i;
Col.Combo.Parent:=Col.p;
Col.Combo.OnClick:=ComboBox1Click;
Col.Combo.Items.Add('1');
Col.Combo.Items.Add('2');
Col.Combo.Items.Add('3');
Col.Combo.Height:=100;
Col.p.Width:=Col.Combo.Width;
Col.p.Height:=Col.Combo.Height;

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


DesWind   (2005-11-14 17:01:00) [2]

Этот код полностью рабочий. А что такое Col ?


dzmitry_li   (2005-11-14 16:54:00) [3]

блин...

ну ладно... читаю хелп по OnClick (специально и внимательно), не нахожу крамолы
и пишу


Col.Combo.OnClick:=ComboBox1Click;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
ShowMessage('Ну вызовись этот грёбаный метод!')
end;


результат тот же...

из всех перепробаванных методов рантайм ловятся только события клавиатуры
непорядок - как исправить


Reindeer Moss Eater   (2005-11-14 16:42:00) [4]

Прочитай Note к свойству OnChange в справке.


Наверх

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