Przesunięcie komponentu poza formę

0

Witam!
Probuje stworzyc program, ktory po kliknieciu (i przytrzymaniu lewego przycisku) w Timage (wygladajacego jak wskaznik), przenosilby go w jakies miejsce (to wiem jak zrobic) i po puszczeniu klawisza wskazywal kolor (to tez wiem jak zrobic :D).
Jedyny problem jest taki, ze nie moge "wyjechac" komponentem poza panel, czy (pozniej) forme. Wskaznik myszy od razu zmienia sie na normalny.
Wlasnie stad bierze sie moje pytanie - jak stworzyc komponent tak, aby byl widoczny nawet po przeciagnieciu go poza glowna forme aplikacji ?

Z gory dziekuje za pomoc
Pozdrawiam

0

Możesz tak:

var
  Form1: TForm1;
  MD : Boolean;
  P : TPoint;

implementation

{$R *.dfm}
{$R Image.res}

procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
MD := True;
Screen.Cursor := 1;
end;

procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
 P:TPoint;
 H:Hwnd;
 Buf:array[0..255] of Char;
begin
 if not MD then exit;
 GetCursorPos(P);
 H := WindowFromPoint(P);
 GetClassName(H,buf,SizeOF(buf));
 if pos('',StrLower(buf))>0 then
  Screen.Cursor := 2
 else
  Screen.Cursor := 1;
end;

procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
var
 P:TPoint;
 H:Hwnd;
begin
 GetCursorPos(P);
 H := WindowFromPoint(P);
 ReleaseCapture;
 Screen.Cursor := 0;
 MD := False;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
MD := False;
 Screen.Cursors[1] := LoadIcon(hinstance,PChar(100));;
 Screen.Cursors[2] := LoadIcon(hinstance,PChar(101));;
end;
end.

Kod przedstawiony tu przez mnie pochodzi z przykładu w delphi. Nie pamiętam nazwy ani autora.

Popatrz też tu: http://www.abf-dev.com/abf-vcl.shtml komponent abfColorPixel

Pozdrawiam ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1