информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Страшный баг в WindowsАтака на Internet
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
 Умер Никлаус Вирт 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
Раз такой умный, то попробуй поработать с ним как с объектом типа TPanel 05.06.03 14:45  Число просмотров: 1248
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
<programming>
Обработка событий динамически созданного объекта 04.06.03 16:05  
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Делаю динамически панельки (в массив Mpanel) вешаю их на на процедуру MyPanelClk
обработки события onMouseClick. Как мне в этой процедуре можно узнать на какую
панель было произведено нажатие? И как мне с ней что либо сделать?


Var
...
MPanel: array of TPanel;
PanelCount: byte;
...

procedure TForm1.MyPanelClk(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin

...

end;

...
setlength(Mpanel,i+1); // здесь i=PanelCount - количеству
уже созданных панелей или 0 в противном случае
Mpanel[i]:=TPanel.Create(Self);
Mpanel[i].Parent:=self;
Mpanel[i].OnMouseDown:=MyPanelClk;
Mpanel[i].Width:=x;
Mpanel[i].Left:=y;
Mpanel[i].Top:=z;
Mpanel[i].Height:=t;

...
[Pascal] Обработка событий динамически созданного объекта 06.06.03 13:20  
Автор: Namor Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Делаю динамически панельки (в массив Mpanel) вешаю их на на
> процедуру MyPanelClk
> обработки события onMouseClick.
>Как мне в этой процедуре можно узнать на какую панель было роизведено >нажатие?
При создании делаешь так:
Mpanel[i].Tag:=i;
При обработке:
TPanel(Sender).Tag - сие есть номер элемента в массиве

[wbr]
параметр Sender в обработчике это и есть твоя панель 04.06.03 17:09  
Автор: Killer{R} <Dmitry> Статус: Elderman
<"чистая" ссылка>
Об этом я както сам догодался, а как с ним работать? 05.06.03 12:19  
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
[Pascal] Как с объектом типа TPanel 05.06.03 12:56  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
Раз такой умный, то попробуй поработать с ним как с объектом типа TPanel 05.06.03 14:45  
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
А что преобразование типов уже отменили ??? TPanel(Sender) 05.06.03 14:56  
Автор: Cyril <sc> Статус: Member
<"чистая" ссылка>
Понял, все. Работает 06.06.03 09:49  
Автор: ASJinx Статус: Незарегистрированный пользователь
Отредактировано 06.06.03 10:21  Количество правок: 1
<"чистая" ссылка>
это вообще то указатель, как и многие T**** переменные в делфи. 06.06.03 10:13  
Автор: Killer{R} <Dmitry> Статус: Elderman
Отредактировано 06.06.03 10:15  Количество правок: 1
<"чистая" ссылка>
в билдере это все прозрачнее- параметр записывается как TObject *Sender
[Pascal] Спокойно. 05.06.03 14:55  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
Объясни тольком, что у тебя не получается?

Боюсь показаться уж слишком умным, но попробуй использовать конструкцию (Sender as TPanel).
Даааа, долго пришлось добиваться 2-х простых слов 05.06.03 15:50  
Автор: ASJinx Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Не ворчи, а поучись правильно задавать вопросы. 05.06.03 15:56  
Автор: ZloyShaman <ZloyShaman> Статус: Elderman
<"чистая" ссылка>
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2024 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach