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

Имам следния проблем:
Като задам BorderStyle - bsNone на някоя форма, изчезва лентата от горе и фомрата не може да се мести, минимизира или максимизира.
Възможно ли е чрез друг обект (например ако съм сложил TShape), да я местя формата по екрана?
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 и т.н.
Трябва в свойството "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 и т.н.
Re: Form move в runtime режим
Или така:
Не знам защо правиш стила да е bsNone. Виж също така bsSingle с махнато biSystemMenu от BorderIcons - така си има Title, но няма бутони на него (ако това ти върши работа).
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, но няма бутони на него (ако това ти върши работа).