• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

использование динамической компоненты

  • Автор темы infeter
  • Дата начала
Статус
Закрыто для дальнейших ответов.
I

infeter

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

Код:
procedure TFormMain.ClickMyList(Sender: TObject);
var
my: TListBox;
memo: TMemo;
begin
my:=(Sender as TListBox);
showmessage(my.Items.Strings[my.ItemIndex]);
end;

теперь МОЙ ВОПРОС. как Вы уже, наверное, заметили, я хочу передать имя выбранного значения tlistbox в TMemo. проблема в том, что эта TMemo тоже была создана динамически... имя, например, Memo0. как мне сослаться на Memo0 через переменную из моей процедуры, чтобы изменить там текст?

я в тупике... :rolleyes:
 
I

infeter

теперь зарегистрировался. срочно нужна помощь. скоро работу сдавать...
 
Z

zubr

Код:
procedure TFormMain.ClickMyList(Sender: TObject);
var
my: TListBox;
memo: TMemo;
begin
my:=(Sender as TListBox);
If FormMain.FindComponent('Memo0')<>nil then
If FormMain.FindComponent('Memo0') is TMemo then
begin
memo:=FormMain.FindComponent('Memo0');
memo.Lines.Add(my.Items.Strings[my.ItemIndex]);
end;
//showmessage(my.Items.Strings[my.ItemIndex]);
end;
 
I

infeter

Для: zubr
странно. у меня вообще ничего не работает... не определяет. плюс ещё надо сделать, чтобы компилировалось, вот так:
Код:
memo:=TMemo(FormMain.FindComponent('Memo0'));

блин.... ща думаю, в чём проблема...
 
I

infeter

короче если просто создать на форме компонент статически, а не динамически, то работает:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
memo: TMemo;
begin
memo:=Form1.FindComponent('Memo1') as TMemo;
memo.Lines.Add('s');
end;
а вот если динамически, то у меня AccessViolation Error... млин...
 
I

infeter

всё. разобрался... надо просто указывать в моём случае:
Код:
memo:=application.FindComponent('Memo1') as TMemo;
т.к. я делаю так:

Код:
With TMemo.Create(application) do
 begin
  Name:='Memo'+inttostr(i);
 end;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!