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

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

Проблема с Listbox в runtime [D7, WinXP]


Страницы:   1 2

_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 Присваивание проводится без всяких @


Страницы:   1 2

Наверх

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