1
我正在使用以下代碼。 Code from Checked AnswerLazarus在光標下找到控件
我需要從幾個TLabel中的一個鼠標光標下獲得控件(Label.Caption),並且它在標籤位於主要From上時工作正常。我將標籤放在主窗體的面板上,現在只能找到面板。我只希望在面板上的衆多標籤中選擇一些。
我試着改變標籤的Z順序爲「帶到前面」,但它沒有區別,仍然有面板。我如何再次在光標下找到一個標籤,現在它們在面板上?
Lazarus似乎沒有FindVCLWindow或ObjectAtPoint。
procedure TForm1.Button1Click(Sender: TObject);
var
ctrl : TControl;
point : TPoint;
begin
point := Mouse.CursorPos; // Mouse pos at screen
Dec(point.X, Left); // Adjust for window.
Dec(point.Y, Top);
Dec(point.Y, GetSystemMetrics(SM_CYCAPTION)); // Adjust to client area.
ctrl := ControlAtPos(point, True, True, True);
// I added the following
tStr:=ctrl.Name; // DEBUG: This now shows "Panel2"
aStr:=(ctrl as TLabel).Caption; // This used to work
end;
真棒,謝謝。這在Panel上工作得很好。 – X10WannaBe