Log in

View Full Version : Form help - How do I make it start up in center of the screen?



Wizkid
07-23-2011, 06:40 PM
How do I make it start up in center of the screen? or by given pixel?

As now my form starts up in the top left corner, not too smooth :duh:

~ Wizkid

Coh3n
07-23-2011, 06:42 PM
form.position := poDesktopCenter;

// or
form.top := 100;
form.left := 100;

// or
form.setBounds(100, 100, 200, 300); // left, top, width, height (I think that's the right order)

Wizkid
07-23-2011, 07:17 PM
Many thanks! :)

Any idea how I would make a form "dragable" when using bsNone as borderstyle? :o

~ Wizkid

Zyt3x
07-23-2011, 07:39 PM
Many thanks! :)

Any idea how I would make a form "dragable" when using bsNone as borderstyle? :o

~ Wizkidvar
Form : TForm;

procedure Form_OnMouseDown(Sender : TObject; Button : TMouseButton; Shift : TShiftState; X, Y : Integer);
var
mX, mY, fX, fY, sX, sY : Integer;
begin
fX := Form.Left;
fY := Form.Top;
GetMousePos(sX, sY);
IsMouseButtonDown(Mouse_Left); // Free the buffer
case Sender of
Form:
while IsMouseButtonDown(Mouse_Left) do
begin
GetMousePos(mX, mY);
Form.Left := fX - (sX - mX);
Form.Top := fY - (sY - mY);
Wait(1);
end;
end;
end;

procedure InitForm;
begin
Form := TForm.Create(nil);
with Form do
begin
SetBounds(100, 100, 100, 100);
BorderStyle := bsNone;
OnMouseDown := @Form_OnMouseDown;
end;
end;

procedure SafeInitForm;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
ThreadSafeCall('InitForm', v);
end;

procedure ShowFormModal;
begin
Form.ShowModal;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(v, 0);
ThreadSafeCall('ShowFormModal', v);
end;

begin
try
SafeInitForm;
SafeShowFormModal;
except

finally
Form.Free;
end;
end.

Wizkid
07-23-2011, 08:35 PM
Once again, many thanks! :D

~ Wizkid