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

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

Обработка событий через TActionlist [D6, Win2k]


diabolik_krsk ©   (2004-10-25 14:09:00) 

Доброго времени суток уважаемые мастера. У меня следующий вопрос.

На форме размещено 4 компонента TPanel и компонент TActionlist.
В TActionlist пишу обработчик событий и привязываю его к свойству OnClick компонента TPanel.
Однако в обработчике событий не могу определить над какой панелью нажата кнопка мыши.
Пытался обработать if Main.Panel1.OnClick - однако дельфя пишет: недостаточно параметров.
Подскажите как решить данную ситуацию.


diabolik_krsk   (2004-11-03 08:04:00) [1]

Спасибо. Все работает.


icWasya   (2004-10-26 12:24:00) [2]

что-то типа так


type
 THuckActionLink = class(TControlActionLink) ;



procedure TForm1.Action1OnExecute(Sender:TObject);
var
 ThisControl:TControl;
begin
 if Sender is TControl
 then
    ThisControl:=TControl(Sender)
 else
 if Sender is TControlActionLink
 then
    ThisControl:=THuckActionLink(Sender).FClient
 else
    ThisControl:=nil;
  //  далее работаем с ThisControl
end;


Экспериментатор   (2004-10-26 10:14:00) [3]

плюс возможно небольшое колдунство с ClientToScreen ScreenToClient


Экспериментатор   (2004-10-26 10:09:00) [4]

Используй в обработчике событий
GetCursorPos() для определения координат мыши

и function ControlAtPos(const Pos: TPoint; AllowDisabled: Boolean, AllowWinControls:Boolean=False): TControl;

для определения на каким контролом она вообще находится


Ega23   (2004-10-26 09:52:00) [5]

Не нашёл... Попробуй Tag свойство использовать.


diabolik_krsk   (2004-10-26 05:40:00) [6]

Буду благодарен.


Ega23   (2004-10-25 14:15:00) [7]

Если у тебя Action, то в качестве Sender ты получаешь TAction.
Можно просто создать метод OnPanelClick(Sender:TObject), присвоить его твоим панелькам. Тогда в качестве Sender ты уже TPanel будешь получать.
Как с Action быть точно не помню, попробую поискать...


Pentium133   (2004-10-25 14:14:00) [8]

возможнов в обработчике OnClick параметр Sender и будет как раз нужной панелью


Наверх

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