webForumDet fria alternativet

Flytta en form utan ram...

4 svar · 408 visningar · startad av trasher

trasherMedlem sedan mars 200143 inlägg
#1

Går det att flytta en form som inte har en ram?

------------------

/Trasher a.k.a Kristian
Söderholm

jtMedlem sedan juni 2000350 inlägg
#2

type
TForm1 = class(TForm)
private
{ Private declarations }
Procedure WMNCHitTest( Var msg: TWMNCHitTest );
message WM_NCHITTEST;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

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

Nu ska du kunna flytta formuläret utan att använda ramen.

trasherMedlem sedan mars 200143 inlägg
#3

Det funkar ju men det ända problemet
då är ju att formen's knappar och dylikt
blir oanvändbara...
Du vet inte hur man kan göra samma sak
fast bara med den översta delen av rutan?

------------------

/Trasher a.k.a Kristian
Söderholm

jtMedlem sedan juni 2000350 inlägg
#4

Använd t.e.x en panel som "översta del" och använd följande i panelens OnMouseDown event.

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
If Button = mbLeft then
begin
ReleaseCapture;
SendMessage(hwnd(self.Handle), WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
end;

trasherMedlem sedan mars 200143 inlägg
#5

Tackar...
Nu fungerar det mkt bra.
Fast jag gjorde det på bilden som
föreställer en mac ram.

------------------

/Trasher a.k.a Kristian
Söderholm

132 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
129 ms — hämta tråd, inlägg och bilagor (db)