Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Вниз

Проблема с Listbox в runtime   Найти похожие ветки 

 
_Dragon ©   (2004-07-15 15:22) [0]

Суть проблемы: создаю форму в runtime, "помещаю" на нее Listbox и кнопу, при нажатии на которую в листбокс должна добавиться строчка. Нажатие - Exeption! Ладно. Попробовал так: TListbox(form.findcomponent("List")). ... - история с Еxeption повторяется. Пробовал через указатель на Items - не проходит. Помогите пожалуйста...


 
clickmaker ©   (2004-07-15 15:26) [1]

полностью код приведи


 
_Dragon ©   (2004-07-18 19:23) [2]

Счас ...



procedure ShowForm;
var Form:TForm;
   List:TListbox;

procedure _OnClick;
begin
List.Items.Add("строка");
end;

begin
Form:=TForm.Create(Application);

 with Form do
  begin
   Left:=100; top:=100;
   Width:=200; Height:=300;
   Color:=$00FFAD;
   BorderStyle:=bsSingle;
   Caption:="Форма";

   List:=TListBox.Create(Form);
    with List do
     begin
      Parent:=Form;
      Align:=alTop;
      Height:=200;
      items.Add("Создание");      // Здесь все работает
     end;

    with TButton.Create(Form) do
     begin
      Parent:=Form;
      width:=100; Height:=25;
      left:=50; top:=220;
      Caption:="Батон";
      Name:="Button";
      @OnClick:=@_Onclick;    // Это место меня волнует больше всего
     end;

    try
     ShowModal;
    Finally
     Free;
    end;
  end;
end;

end.



 
Palladin ©   (2004-07-18 19:27) [3]

1 Обработчик события должен быть методом класса
2 Присваивание проводится без всяких @


 
_Dragon ©   (2004-07-18 19:35) [4]

Угхм... Насчет присваивания адресов процедур: если не трогать Листбокс, то все работает при нажатии на кнопу


 
Sergey Kaminski ©   (2004-07-19 03:00) [5]

Никаких @.
_OnClick должна быть объявлена как procedure _OnClick(Sender: TObject) of object, то есть быть методом класса.


 
_Dragon ©   (2004-07-19 13:12) [6]

Каким образом это сделать??? Delphi ругается на все попытки объявить _onclick методом класса.


 
clickmaker ©   (2004-07-19 13:26) [7]


> _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:34) [8]

Млин ... сделал ... теперь 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);
...


 
Анонимщик ©   (2004-07-19 13:45) [9]

Нужно зарегистрировать все классы, которые ты будешь создавать для этой формы.
RegisterClass(TButton);
...
UnRegisterClass(TButon);


 
_Dragon ©   (2004-07-19 13:49) [10]

Опять при создании формы Exeption вылазит, но уже "Invalid property value" что делать?!?!?!?!?!?!?!??!?!


 
Анонимщик ©   (2004-07-19 13:53) [11]

Во-первых, трассировать под отладчиком до последнего.
Во-вторых, в каком именно месте ругается? Что за вэлью с ивалид проперти?


 
_Dragon ©   (2004-07-19 13:56) [12]

Гы ... При трассировке именно на строке
Form:=TForm1.Create(Application);
и вылазит ошибка! А что она значит, я не представляю.


 
Анонимщик ©   (2004-07-19 14:10) [13]

Трассировать до конца - это значит трассировать с исходниками борланда, в т.ч модуль forms.pas (и не только).


 
_Dragon ©   (2004-07-19 14:13) [14]

Понятно...
З.Ы.
Может в Асе поболтаем??? Очень хочется пообщаться со знающим кодером: 311829532


 
Анонимщик ©   (2004-07-19 14:20) [15]

На форум лучше иди


 
_Dragon ©   (2004-07-19 14:22) [16]

я и так здесь


 
Анонимщик ©   (2004-07-19 14:23) [17]

В чат хотел сказать


 
_Dragon ©   (2004-07-19 14:27) [18]

я понял...
Зы: ну и в асю постучать тоже можно...


 
Palladin ©   (2004-07-19 15:16) [19]

Знающих такой неадертальностью мучить не стоит, для подобных случаев существует много литературы, а так же информации в интеренете... за то время пока ты пытался выяснить ответ на этот вопрос сам бы давно уже все нашел...


 
Mim1 ©   (2004-07-19 17:27) [20]


> Попробовал так: 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";


 
_Dragon ©   (2004-07-21 01:46) [21]

Sorry, не тот код. Но даже при таком раскладе, обращение к List через Findcomponent все равно приводит к Exeption


 
_Dragon ©   (2004-07-21 01:50) [22]

Кстати, решение подсказал Анонимщик (Greets!) - создать форму статически, убрать ее из списка автосоздаваемых форм, а затем просто создавать ее и кидать все что нужно ...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.034 c
6-1086176513
osama
2004-06-02 15:41
2004.08.01
Памажите сделать сервер средствами АПИ


14-1089620690
Stany
2004-07-12 12:24
2004.08.01
SysInternals Process Explorer (NT) Source Code


4-1087810017
Subdigger
2004-06-21 13:26
2004.08.01
CreateProcess


3-1089200977
AlexanderSK
2004-07-07 15:49
2004.08.01
Как внутри триггера запретить вносить изменения?


14-1089302163
OSokin
2004-07-08 19:56
2004.08.01
Мастера Дельфи





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский