HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Merre jár az egér a Form-on?


Példaprogram letöltése

5184 bájt

Ha tudni szeretnénk, hogy a felhasználó hova mutat éppen az egérrel a Form-on, akkor ezt egyszerűen megtudhatjuk. A kapott értéket ráadásul nem csak tudhatjuk, hanem meg is változtathatjuk, így például elhitethetjük a programunkkal, hogy az egér nem is a Form fejlécére mutat, hanem sehova. Ettől kezdve viszont meggátoltuk máris a felhasználót abban, hogy a Form-ot fejlécénél fogva mozgassa.

A megoldáshoz a WM_NCHITTEST üzenetet kell figyelnie a programunknak.
    procedure DoHitTest(var Msg: TWMNCHitTest); message WM_NCHITTEST;
Amikor ez az eljárás meghívásra kerül, akkor változott az egér pozíciója a Form egyes része felett. Ekkor egy programból történő vizsgálattal eldönthetjük, hogy mire is mutat az egér.
procedure TForm1.DoHitTest(var Msg: TWMNCHitTest);
begin
  inherited;

  Label1.Caption:=IntToStr(Msg.Result);
  case Msg.Result of
    HTERROR: Label2.Caption:='HTERROR';
    HTTRANSPARENT: Label2.Caption:='HTTRANSPARENT';
    HTNOWHERE: Label2.Caption:='HTNOWHERE';
    HTCLIENT: Label2.Caption:='HTCLIENT';
    HTCAPTION: Label2.Caption:='HTCAPTION';
    HTSYSMENU: Label2.Caption:='HTSYSMENU';
    HTSIZE: Label2.Caption:='HTSIZE';
    HTMENU: Label2.Caption:='HTMENU';
    HTHSCROLL: Label2.Caption:='HTHSCROLL';
    HTVSCROLL: Label2.Caption:='HTVSCROLL';
    HTMINBUTTON: Label2.Caption:='HTMINBUTTON';
    HTMAXBUTTON: Label2.Caption:='HTMAXBUTTON';
    HTLEFT: Label2.Caption:='HTLEFT';
    HTRIGHT: Label2.Caption:='HTRIGHT';
    HTTOP: Label2.Caption:='HTTOP';
    HTTOPLEFT: Label2.Caption:='HTTOPLEFT';
    HTTOPRIGHT: Label2.Caption:='HTTOPRIGHT';
    HTBOTTOM: Label2.Caption:='HTBOTTOM';
    HTBOTTOMLEFT: Label2.Caption:='HTBOTTOMLEFT';
    HTBOTTOMRIGHT: Label2.Caption:='HTBOTTOMRIGHT';
    HTBORDER: Label2.Caption:='HTBORDER';
    HTOBJECT: Label2.Caption:='HTOBJECT';
    HTCLOSE: Label2.Caption:='HTCLOSE';
    HTHELP: Label2.Caption:='HTHELP';
    else Label2.Caption:='unknow';
  end;
  Label3.Caption:=IntToStr(Msg.XPos)+' - '+IntToStr(Msg.YPos);
Ezt az értéket azonban nem csak lekérdezhetjük, hanem meg is változtathatjuk. Így amikor az egér a fejlécre mutat (HTCAPTION), akkor „átverhetjük” és mondhatjuk azt, hogy nem is mutat sehova (HTNOWHERE). Ezt persze Form-unk el is hiszi és a felhasználó máris nem tudja megmozdítani az ablakot a fejlécénél fogva.
  if CheckBox1.Checked and (Msg.Result=HTCAPTION) then begin
    Msg.Result:=HTNOWHERE;
  end;
end;



Cikksorozat

#IDKategóriaCikk címeSorozat
1166DelphiOsztály hierarchia lekérdezése1. rész
1180DelphiOsztály hierarchia lekérdezése2. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2001 évkönyv 510. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |