Erstellen einer Delphi VCL Forms-Anwendung und stellen 2 TButton
und ein TApplicationEvents
auf dem Formular:FindDragTarget erkennt nicht deaktiviert Kontrollen
Dann legen Sie diese Ereignis-Handler:
unit Unit2;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.AppEvnts;
type
TForm2 = class(TForm)
Button1: TButton;
Button2: TButton;
ApplicationEvents1: TApplicationEvents;
procedure ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
Screen.Cursor := crHelp;
end;
procedure TForm2.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
Target: TControl;
Point: TPoint;
begin
if Msg.Message = WM_LBUTTONDOWN then
begin
if Screen.Cursor = crHelp then
begin
Screen.Cursor := crDefault;
Handled := True;
GetCursorPos(Point);
Target := FindDragTarget(Point, True);
if Assigned(Target) then
ShowMessage(Target.Name)
else
ShowMessage(IntToStr(Point.X) + ', ' + IntToStr(Point.Y));
end;
end;
end;
end.
Jetzt Klicken Sie auf Button1, um den Mauszeiger auf crHelp
zu ändern. Klicken Sie erneut auf Button1, die korrekt den Namen "Button1" zeigt.
Klicken Sie erneut auf Button1, um den Mauszeiger erneut auf crHelp
zu ändern.
Klicken Sie dann auf der untauglichen Button2: Sie können das jetzt sehen FindDragTarget
die deaktivierte Steuerung nicht erkannt hat, obwohl das Argument AllowDisabled
-True
gesetzt.
Wie kann ich ein deaktiviertes Steuerelement mit einem Mausklick erkennen?
Delphi 10.1.2
Vielen Dank! – user1580348
Gern geschehen :) – kobik