![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ControlAtPos [D5, Win2k, WinXP]
serjkp © (2005-09-08 16:36:00)Уважаемые, подскажите как быть. есть на форме куча всяких компонентов. на панелях кнопки, на тулбарах и т.д.
требуется узнать имя компонента под курсором. использую ControlAtPos получилось только узнать имя тех которые лежат непосредственно на форме.
всем спасибо...
jack128 (2005-09-08 18:11:00) [1]Обычно подобные алгоритмы рекурсивно реализуются
function ControlAtPos(AControl: TWinControl; const Pos: TPoint; AllowDisabled,
AllowWinControls: Boolean): TControl;
var
Temp: TControl;
TempPos: TPoint;
begin
Result := AControl.ControlAtPos(Pos, AllowDisabled, AllowWinControls);
if Result is TWinControl then
begin
TempPos.X := Pos.X - Result.Left;
TempPos.Y := Pos.Y - Result.Top;
Temp := ControlAtPos(TWinControl(Result), TempPos, AllowDisabled, AllowWinControls);
if Assigned(Temp) then
Result := Temp
end;
end;
serjkp (2005-09-08 18:01:00) [2]пасибочки, еще получилось с FindDragTarget...
Игорь Шевченко (2005-09-08 17:34:00) [3]FindVCLWindow
Signate (2005-09-08 17:08:00) [4]Я не знаю поможет или нет, но можно узнавать hwnd под курсором, а потом в цикле искать компонент с данный hwnd и что то уже делать... например узнать имя
TUser (2005-09-08 17:07:00) [5]Вызови метод ControlAtPos для того контрла, который был возвращен в первый раз. И т.д.
serjkp (2005-09-08 17:00:00) [6]идея в голове крутится а зацепиться не могу. получается использую ControlAtPos на форме, а при переходе на компонент нужно уже на нем, но вот как этот момент реализовать не знаю.
MBo (2005-09-08 16:47:00) [7]А не обдумал, почему так получается?
Ты ведь используешь метод ControlAtPos какого компонента?