Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2016, 18:02   #1
factually
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 21
По умолчанию Проблема с динамичными объектами

Процедура в потоке:
Код:
procedure MagicThread.paneladd; 
var n:integer;
for n:=0 to list.Count-1 do begin
   panel:=TsPanel.create(form4);
   panel.parent:=form4.grp3;
   form4.check:=TsCheckBox.Create(form4);
   form4.check.Parent:=panel;
   form4.check.Caption:=list[n];
   form4.l2:=TsLabel.Create(Form4);
   form4.l2.Parent:=panel;
   Form4.l2.Caption:='Открыть';
   Form4.l2.OnClick:=Form4.onclick;
end;
end;
Необходимо на событие l2.onclick открывать ссылку в браузере с уникальным кодом из check.caption или list[n].
Пробую так:
Код:
procedure TForm4.onclick(Sender: TObject);
begin
ShellExecute(application.Handle,'Open',PChar('https://link.com/index.php?='+(check.caption)),Nil,Nil,SW_SHOWDEFAULT);
end;
Проблема в том, что после выполнения процедуры paneladd в потоке, значение check.caption всегда равно значению самого последнего чекбокса, т.е. самой последней строчки в list. А мне нужно, чтобы событие клика на объект l2 всегда соответствовало уникальному коду в check.caption, т.е. list[n] как при выполнении процедуры.

Последний раз редактировалось factually; 31.10.2016 в 18:04.
factually вне форума Ответить с цитированием
Старый 31.10.2016, 18:06   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Какому коду? Вы о чем?

Цитата:
Сообщение от factually Посмотреть сообщение
MagicThread
Цитата:
Сообщение от factually Посмотреть сообщение
form4
Цитата:
Сообщение от factually Посмотреть сообщение
l2
Цитата:
Сообщение от factually Посмотреть сообщение
check
хорошие имена.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 31.10.2016, 18:32   #3
factually
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 21
По умолчанию

Alex11223, код для ссылки из 6 цифр, например: 465603
factually вне форума Ответить с цитированием
Старый 31.10.2016, 19:43   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
form4.check:=TsCheckBox.Create(form 4);
Чего это? В смысле check. Понятно, что в check указатель на последний созданный объект. И в потоке визуальные компоненты создаешь? Смысл сего действа? В sender-е OnClick-a передается указатель на объект, на котором кликнули, вот с него и бери информацию.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.10.2016, 23:05   #5
factually
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
В sender-е OnClick-a передается указатель на объект, на котором кликнули, вот с него и бери информацию.
А как с него брать информацию? Можно пример?
factually вне форума Ответить с цитированием
Старый 31.10.2016, 23:19   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Ну если 6 цифр, то их можно в Tag засунуть. Или в том же Tag индекс массива хранить, в котором какая-то информация. TsLabel(Sender).Tag
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.10.2016, 23:33   #7
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

за каким тут этот недоделаный поток? )) узас кламесный
come-on вне форума Ответить с цитированием
Старый 31.10.2016, 23:55   #8
factually
Пользователь
 
Регистрация: 24.10.2016
Сообщений: 21
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Ну если 6 цифр, то их можно в Tag засунуть. Или в том же Tag индекс массива хранить, в котором какая-то информация. TsLabel(Sender).Tag
Спасибо!) Так и сделал, всё заработало как нужно.
factually вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОБЛЕМА С ОБЪЕКТАМИ Label VITA11111 Microsoft Office Excel 7 06.05.2013 20:22
Проблема с неиспользуемыми объектами ViRTaCe C# (си шарп) 0 18.03.2012 23:26
проблема с объектами ((( katysha Общие вопросы Delphi 2 24.04.2011 08:27
Проблема с объектами С++ bobby2008 Общие вопросы C/C++ 4 13.09.2010 15:58
Работа с объектами dr.Chas Общие вопросы Delphi 1 25.05.2010 17:45