Q&A

  • 개체에 마우스 커서가 위치해 있는지 궁금합니다.
이렇게 다시 질문을 드리게 되었습니다.
텍스트 박스나 개체에 마우스가 위치해 있는지 알려면 어떻게 해야 하는지 궁금합니다.
물론 마우스 커서의 좌표와 개체의 영역의 height,top,width,left로 계산할 수는 있지만, 개체를 동적으로 생성시키고, 이벤트 프로시져를 복사해야 하므로, 다른 방법을 찾고 있습니다.
예를 들어서, 텍스트 박스에 포커스 되었는지 알려면,
그리고, 해당 텍스트는 적색글자, 나머지는 검정글자로 하려면,

procedure TForm1.Timer1Timer(Sender: TObject);
var
   nn, ni : integer;
begin
   nn := -1;
   for ni := 0 to componentcount -1 do begin
      try
         if ( components[ ni ] is tedit ) and
            (tform( components[ ni ] ).focused = true) then nn := ni;
      except
      end;
   end;

   for ni := 0 to componentcount -1 do begin
      if ( components[ ni ] is tedit ) then begin
         if nn = ni then tform( components[ ni ] ).font.color := clred
            else tform( comonents[ ni ] ).font.color := clblack;
      end else begin
      end;
   end;
end;

이처럼, ".focused"로 해당 개체에 포커스가 위치해 있는지 알지만, 개체에 마우스 커서가 위치해 있는지 알 수 있는 방법을 알기 위해 이렇게 글을 남김니다.
1  COMMENTS
  • Profile
    한대필 2002.04.26 21:44
    좀다르게 생각해 보면 어떨까요?

    procedure TForm1.MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
    begin
      if Tcomponent(Sender).ClassType = TEdit then
         showmessage('빙고');
    end;

    위와같은 하나의 프로시져를 만들고 필요한 컴포넌트의 MouseMove이벤트에
    전부 걸어주면 같은 기능을 할수도 있겠다고 생각하는데요?

    개체가 동적으로 생성되어도
    컴포넌트 돌면서 위의 프로시져를 넣어주면 되지 않겠습니까?
    개체.onMouseMove := MouseMove 이렇게..


    도움이 되지 못했다면.. 정말로 죄송합니다.