Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
ВнизКурсор Найти похожие ветки
← →
Дмитрий (2008-02-10 17:39) [0]Как определить находится ли курсор мыши на требуемом мне компоненте в run-time.
Я пытался сделать следующим образом, но ничего не получается.
procedure Tform_Color_Range.ApplicationEvents1Idle(Sender: TObject;
var Done: Boolean);
var
lControl: TControl;
lPnt: TPoint;
begin
GetCursorPos(lPnt);
lControl := ControlAtPos(ScreenToClient(lPnt), False, True);
if Assigned(lControl) then
Caption := lControl.Name;
end;
← →
Дмитрий (2008-02-10 17:51) [1]Вся фишка в том что мне нужно вывести имена компоненто вложенны в panel"ы а они почему-то не выводятся.
← →
Dib@zol © (2008-02-10 18:05) [2]Как там на ВЦЛ - не знаю, а вот как на ВинАПИ:
GetCursorPos + GetWindowRect + PtInRect (+ F1)
← →
Семеныч (2008-02-10 18:05) [3]Ищете на панелях, а ScreenToClient вызываете для формы. Получаются неверные координаты - и неверные результаты, конечно.
← →
Дмитрий (2008-02-10 18:09) [4]А как можно получить координаты на панелях ...
← →
Dib@zol © (2008-02-10 18:11) [5]> А как можно получить координаты на панелях ...
Windows.ScreenToClient и явное указание хендла контрола.
← →
Семеныч (2008-02-10 18:11) [6]> Dib@zol © (10.02.08 18:05) [2]
GetWindowRect с каким хэндлом вызывать будем, если он-то как раз и неизвестен? A PtInRect тут вообще никаким боком.
GetCursorPos + WindowFromPoint.
← →
Dib@zol © (2008-02-10 18:15) [7]> GetCursorPos + WindowFromPoint.
А может всё-таки ChildWindowFromPoint?
← →
Семеныч (2008-02-10 18:22) [8]> Dib@zol © (10.02.08 18:15) [7]
А где взять все тот же неизвестный хэндл для ChildWindowFromPoint?
← →
Dib@zol © (2008-02-10 18:25) [9]Tform_Color_Range.Handle, если не ошибаюсь?
Странно, обычно в подобных ветках не холиварят... Прогресс налицо :)
← →
Dib@zol © (2008-02-10 18:28) [10]Звиняюсь, без "Т" в начале нужно.
> [8] Семеныч (10.02.08 18:22)
И вообще, как Вы собрались получать хендл контрола с помощью этой функции?
← →
Игорь Шевченко © (2008-02-10 18:28) [11]
function TForm1.ControlAtMouse: TControl;
var
P: TPoint;
begin
GetCursorPos(P);
Result := FindDragTarget(P, True);
end;
пример:unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AppEvnts, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Label2: TLabel;
ApplicationEvents1: TApplicationEvents;
Panel1: TPanel;
Edit2: TEdit;
procedure ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
private
function ControlAtMouse: TControl;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ApplicationEvents1Idle(Sender: TObject; var Done: Boolean);
var
Control: TControl;
begin
Control := ControlAtMouse;
if Assigned(Control) then
Label2.Caption := Control.Name;
end;
function TForm1.ControlAtMouse: TControl;
var
P: TPoint;
begin
GetCursorPos(P);
Result := FindDragTarget(P, True);
end;
end.
Dib@zol © (10.02.08 18:15) [7]
Ты бы дал отдохнуть фонтану
← →
Дмитрий (2008-02-10 18:33) [12]Игорь Шевченко © (10.02.08 18:28) [11]
Большое спасибо.
← →
Семеныч (2008-02-10 18:35) [13]> Dib@zol © (10.02.08 18:25) [9]
> если не ошибаюсь?
Ошибаешься. Тут нужен хэндл окна панели, а не формы.
> Странно, обычно в подобных ветках не холиварят...
Тут холиварить не о чем, потому что ничего проще и лучше, чем GetCursorPos + WindowFromPoint ты не придумаешь, как ни старайся. Поэтому спорить по делу тут и правда не о чем, а если хочется поспорить из упрямства или пальцегнутия - сколько угодно, но без меня.
← →
Семеныч (2008-02-10 20:00) [14]> Игорь Шевченко © (10.02.08 18:28) [11]
ketmar говорит: "плохому учишь"...
:o)
ПыСы
Но я надеюсь, что он все же преувеличивает...
:o)
← →
ketmar © (2008-02-10 20:03) [15]>[14] Семеныч (2008-02-10 20:00:00)
в данном случае — не страшно. это не заклинание, это считалочка. считалочке можно. %-)
---
Understanding is not required. Only obedience.
← →
Игорь Шевченко © (2008-02-10 20:14) [16]Семеныч (10.02.08 20:00) [14]
Я учу хорошему - код взят почти один в один из TApplication.DoMouseIdle
source - источник знаний :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.03.09;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.047 c