Mouse'un üzerinde bulunduğu nesne hangisi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
coskundeniz
Üye
Mesajlar: 22
Kayıt: 20 Ara 2003 11:36

Mouse'un üzerinde bulunduğu nesne hangisi

Mesaj gönderen coskundeniz »

Merhabalar

Form üzerinde birçok panel ve paneller üzerinde bir çok nesne var, Mouse o onda hangi nesnenin üzerinde ise o nesnenin adi veya classname'ini bulmam gerekiyor.
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Timer1: TTimer;
    procedure Timer1Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure ShowHwndAndClassName(CrPos: TPoint);
  public

end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Timer1Timer(Sender: TObject);
var
  rPos: TPoint;
begin
  if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos);
end;

procedure TForm1.ShowHwndAndClassName(CrPos: TPoint);
var
  hWnd: THandle;
  aName: array [0..255] of Char;
begin
  hWnd := WindowFromPoint(CrPos);
  Label1.Caption := 'Handle :  ' + IntToStr(hWnd);

  if Boolean(GetClassName(hWnd, aName, 256)) then
    Label2.Caption := 'ClassName :  ' + string(aName)
  else
    Label2.Caption := 'ClassName :  not found';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Form1.FormStyle := fsStayOnTop;
  Timer1.Interval := 50;
end;


Bu kod handle numarası ile clasnami ni veriyordu işine yarar umarım.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
coskundeniz
Üye
Mesajlar: 22
Kayıt: 20 Ara 2003 11:36

Mesaj gönderen coskundeniz »

Teşekkürler vedatkaba arkadaşım,

Verdiğin kod işimin bir parçasını çözdü, fakat şu anda mouse'un üzerinde bulunduğu nesnenin adı lazım, aslında o nesnenin her türlü bilgisine erişmem gerekiyor.

Eğer bu konuda da çözümün varsa bekliyorum. Şimdiden teşekkürler.
Cevapla