Form move в runtime режим

3 отговора 99 прегледа
#1

Form move в runtime режим

Здравейте,

Имам следния проблем:
Като задам BorderStyle - bsNone на някоя форма, изчезва лентата от горе и фомрата не може да се мести, минимизира или максимизира.
Възможно ли е чрез друг обект (например ако съм сложил TShape), да я местя формата по екрана?

Отговор
в отговор на abc.new #2

Re: Form move в runtime режим

Може чрез друг обект.
Трябва в свойството "OnMouseDown" на другия обект да напишеш:

procedure TForm1.DrugObekt1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
const
SC_DRAGMOVE : Longint = $F012;
begin
if Shift=[ssLeft] then begin
ReleaseCapture;
SendMessage({Form1.}Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
end;
end;

"DrugObekt1", може да бъде TPanel, TLabel и т.н.

Отговор
в отговор на SAGE_BS #3

Re: Form move в runtime режим

Или така:

procedure wmHitTestProc(var Msg: TWMNCHitTest); message WM_NCHITTEST;

procedure TForm1.wmHitTestProc(var Msg: TWMNCHitTest);
begin
DefaultHandler(Msg);
if Msg.Result = HTCLIENT then
Msg.Result := HTCAPTION;
end;

Не знам защо правиш стила да е bsNone. Виж също така bsSingle с махнато biSystemMenu от BorderIcons - така си има Title, но няма бутони на него (ако това ти върши работа).

Отговор