![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с Listbox в runtime [D7, WinXP]
_Dragon © (2004-07-15 15:22:00)Суть проблемы: создаю форму в runtime, "помещаю" на нее Listbox и кнопу, при нажатии на которую в листбокс должна добавиться строчка. Нажатие - Exeption! Ладно. Попробовал так: TListbox(form.findcomponent('List')). ... - история с Еxeption повторяется. Пробовал через указатель на Items - не проходит. Помогите пожалуйста...
_Dragon (2004-07-21 01:50:00) [1]Кстати, решение подсказал Анонимщик (Greets!) - создать форму статически, убрать ее из списка автосоздаваемых форм, а затем просто создавать ее и кидать все что нужно ...
_Dragon (2004-07-21 01:46:00) [2]Sorry, не тот код. Но даже при таком раскладе, обращение к
ListчерезFindcomponentвсе равно приводит к Exeption
Mim1 (2004-07-19 17:27:00) [3]
> Попробовал так: TListbox(form.findcomponent('List')). ...
> - история с Еxeption повторяется.
Если список создавался вот таким кодом
> List:=TListBox.Create(Form);
> with List do
> begin
> Parent:=Form;
> Align:=alTop;
> Height:=200;
> items.Add('Создание'); // Здесь все работает
> end;
То Findcomponent его не найдет так как он ищет по имени компонента, и у вас оно не определяется. т.е. нехватает
> with List do
> begin
name := 'List';
Palladin (2004-07-19 15:16:00) [4]Знающих такой неадертальностью мучить не стоит, для подобных случаев существует много литературы, а так же информации в интеренете... за то время пока ты пытался выяснить ответ на этот вопрос сам бы давно уже все нашел...
_Dragon (2004-07-19 14:27:00) [5]я понял...
Зы: ну и в асю постучать тоже можно...
Анонимщик (2004-07-19 14:23:00) [6]В чат хотел сказать
_Dragon (2004-07-19 14:22:00) [7]я и так здесь
Анонимщик (2004-07-19 14:20:00) [8]На форум лучше иди
_Dragon (2004-07-19 14:13:00) [9]Понятно...
З.Ы.
Может в Асе поболтаем??? Очень хочется пообщаться со знающим кодером: 311829532
Анонимщик (2004-07-19 14:10:00) [10]Трассировать до конца - это значит трассировать с исходниками борланда, в т.ч модуль forms.pas (и не только).
_Dragon (2004-07-19 13:56:00) [11]Гы ... При трассировке именно на строке
Form:=TForm1.Create(Application);
и вылазит ошибка! А что она значит, я не представляю.
Анонимщик (2004-07-19 13:53:00) [12]Во-первых, трассировать под отладчиком до последнего.
Во-вторых, в каком именно месте ругается? Что за вэлью с ивалид проперти?
_Dragon (2004-07-19 13:49:00) [13]Опять при создании формы Exeption вылазит, но уже 'Invalid property value' что делать?!?!?!?!?!?!?!??!?!
Анонимщик (2004-07-19 13:45:00) [14]Нужно зарегистрировать все классы, которые ты будешь создавать для этой формы.
RegisterClass(TButton);
...
UnRegisterClass(TButon);
_Dragon (2004-07-19 13:34:00) [15]Млин ... сделал ... теперь Exeption вылазит при попытке создания формы! Ругается, что не может найти класс TButton, хотя модуль подключен :-(
Вот код:
...
Type TForm1 = class(TForm)
private
procedure _Onclick(Sender:TObject);
end;
procedure TForm1._Onclick(Sender:TObject);
begin
TListBox(Self.FindComponent('List')).Items.Add('??????');
end;
procedure ShowForm;
var Form:TForm1;
List:TListbox;
begin
Form:=TForm1.Create(Application);
...
clickmaker (2004-07-19 13:26:00) [16]
> _Dragon © (19.07.04 13:12) [6]
type
TForm...
...
private
procedure _OnClick(Sender: TObject);
end;
procedure TForm._OnClick(Sender: TObject);
begin
...
end;
_Dragon (2004-07-19 13:12:00) [17]Каким образом это сделать??? Delphi ругается на все попытки объявить
_onclickметодом класса.
Sergey Kaminski (2004-07-19 03:00:00) [18]Никаких @.
_OnClick должна быть объявлена какprocedure _OnClick(Sender: TObject) of object, то есть быть методом класса.
_Dragon (2004-07-18 19:35:00) [19]Угхм... Насчет присваивания адресов процедур: если не трогать Листбокс, то все работает при нажатии на кнопу
Palladin (2004-07-18 19:27:00) [20]1 Обработчик события должен быть методом класса
2 Присваивание проводится без всяких @