질문이 있습니다.
고수님들 한번 봐 주십시요...부탁드립니다.
컴포넌트 이름을 알아내는 기존의 코드들은 이미 사용해 봤습니다.
역시 답이 안나옵니다.
아!제가 본 예제는 마우스좌표 아래에 있는 컴포넌트를 알아내는
것이었습니다.
function ComName(x,y : integer) : string;
var
p : TPoint;
w : TWinControl;
begin
p.x := x;
p.y := y;
w:= FindVclWindows~(p);
if w <> nil then
begin
result := w.ComponentName;
end
else begin
result:='';
end;
end;
그런데 위 코드는 Form1 이라는 메시지만 날릴뿐 동적으로 생성한
Image1 이 가지고 있는 이름은 알아내지 못하더군요.
제 생각에는 TWinControl and TClasses 에러인것으로 봐서는
조상클래스 차이 때문에 이름을 얻어내지 못하는거 같습니다.
TForm <> TImage 차이?
고수님들 제발 도와주십시요...
동적으로 생성한 Image1 이 가지고 있는 이름은 어떻게 알아낼 수
있습니까?
급합니다...
말씀하신데로 이미지등 윈도우핸들계통은 위함수로 구하지못합니다.
저는 아래처럼 해봤는데요(좀 무식하죠)
다른 좋은방법도 있을겁니다.
참 동적생성할때 이름부여하셨죠...
procedure TForm1.Search(OBJ: Longint);
var
i : integer;
ChildControl: TControl;
begin
for i := 0 to Form1.ControlCount-1 do begin
ChildControl := Form1.Controls[i];
if OBJ = Longint(ChildControl) then begin
Memo1.Lines.Add(ChildControl.Name);
exit;
end;
end;
end;
//선언시 procedure WndProc(var Message: TMessage); override;
procedure TForm1.WndProc(var Message: TMessage);
var
ccc: TControl;
begin
//마우스가 들어올때
if (Message.Msg = CM_MOUSEENTER) then begin
Search(Message.LParam);
end
//마우스가 떠날때
else if (Message.Msg = CM_MOUSELEAVE) then begin
end;
inherited WndProc(Message);
end;