W jaki sposób zablokować formę, aby nie można było jej przesuwać?
Ustaw Styl formy na bsNone
Form1.BorderStyle := bsNone;
Forma nie będzie miała "belki" za którą można złapać i ją przesunąć.
A jak chcesz aby można było w trakcie działania programu przesuwać, kiedy zechcesz - to np podajesz:
Form1.BorderStyle := bsSingle;
i masz belke do przesuwania :D
Chyba, że chodzi ci o bardziej profesionalne sprawy ;P
Generalnie chodzi mi o to, aby formy znajdujące się pod spodem były niewidoczne!
// i tak będzie się można do nich przełączyć przez alt+tab/ctrl+tab - Ł
Piterek napisał(a)
W jaki sposób zablokować formę, aby nie można było jej przesuwać?
Sam jestem ciekaw, jak zrobić, żeby chwytając za titlebar nie moznabyło przesunąć okna [sciana]
Piterek napisał(a)
Generalnie chodzi mi o to, aby formy znajdujące się pod spodem były niewidoczne!
No to musisz ukryć sobie okna, które mają byc niewidoczne (Form2.Hide), a forma na wierzchu może być dodatkowo ustawiona na "stay-on-top".
Jeszcze jeden sposób jest taki, żeby przechwycić komunikat, gdy okno zmienia pozycję. Bodajże: WM_WINDOWPOSCHANGED, ale nie jestem pewien, czy to on.
No i jeśli zajdzie, to ustawić mu pozycję na taką, jaką miał na początku.
Możesz napisać odpowiedz na zdazrenie "onchngeposition" czy jakoś tak w ten sposób
form1.top:=124;
form1.left:=223;
Gwarantuję, że Ci się forma teraz nie przesunie :)
private
procedure WMNCHitTest(var Message: TWMNCHitTest); message WM_NCHITTEST;
{....}
procedure TForm1.WMNCHitTest(var Message: TWMNCHitTest);
begin
inherited;
with Message do
begin
if Result = HTCAPTION then
Result := HTNOWHERE;
end;
end;