Hogyan akadályozzuk meg, hogy egy Delphi form a képernyőn kívülre kerüljön?
A Delphi TForm objektuma rendelkezik minden olyan szükséges tulajdonsággal és eseménnyel, amelyek általában szükségesek. Néha előfordulhat, hogy ezek közül néhány mégis hiányzik valami. Próbáljunk készíteni egy egszer alkalmazást, majd mozgassuk a formot a képernyőnk kívülre. Ezt nagyon egyszerűen megtehetjük, ha a form címsoránál megragadjuk az egérrel mozgatjuk.
De mi van akkor, ha nem szeretném, hogy az alkalmazást ne kerülhessen a képernyőn kivülre? Ilyenkor jól jönne egy OnMoving esemény amivel kezelhetnénk, de sajnos nincs ilyen. Szerencsére a Delphivel könnyű ilyet készíteni.
- Az OnMoving esemény kezeléséhez adjuk hozzá a következő definíciót a form privát szekciójához:
Mozgatásakor WM_MOVING üzenetet kap az ablak. Az üzenet feldogozásával ellenőrizhetjük az elmozdulási téglalapot és ha szükséges, módosíthatjuk a méretét vagy a pozícióját.private
{ Private declarations }
procedure WMMoving(var Msg:TWMMoving); message WM_MOVING; - Írjuk meg a form elmozdulásait kezelő kódot, ami megakadályozza a képernyőn kívülre kerülést:
procedure TForm1.WMMoving(var Msg:TWMMoving) ;
var WorkArea: TRect;
begin
WorkArea:=Screen.WorkAreaRect;
with Msg.DragRect^ do begin
if Left<WorkArea.Left then OffsetRect(Msg.DragRect^,WorkArea.Left-Left,0);
if Top<WorkArea.Top then OffsetRect(Msg.DragRect^,0,WorkArea.Top-Top);
if Right>WorkArea.Right then OffsetRect(Msg.DragRect^,WorkArea.Right-Right,0) ;
if Bottom>WorkArea.Bottom then OffsetRect(Msg.DragRect^,0,WorkArea.Bottom-Bottom);
end;
inherited;
end;
A fenti WM_MOVING eseménykezelő megakadályozza, hogy a form a képernyőn kívülre kerüljön.
Beküldte falu - 2009, január 4 - 22:52
- falu blogja
- A hozzászóláshoz be kell jelentkezni