Jak otworzyć nową formę na środku ale...

0

Pytanie:
Jak otworzyć nową formę tak aby była ona na środku w poziomie i w pionie....tyle że w pionię zeby była trochę wyżej, np. o 50 pikseli?

Chodzi mi o coś na kształt logowania w windows

procedure TLogowanie.FormCreate(Sender: TObject);
begin
Logowanie.Top := Logowanie.Top - 2000;
end;

//to niestety chyba nie działa...pomoże ktoś?

0

Ustaw własność formy Position na poDesktopCenter, a jak chcesz ją jeszcze przesunąć np. 50px w góre to
Form.Top := Form.Top - 50

0
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Left:=(Screen.DesktopWidth - Form1.Width)  div 2;
Form1.Top:=((Screen.DesktopHeight - Form1.Height) div 2)-100;
end;

przy : Position := poDesigned;

0

No kurcze właśnie to mi nie działa :(
To działa tylko gdy forma jest ustawiona na poDesigned, Default, MainFormCenter

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Top := Form1.Top -150
end;

Forma wciąż jest centralnie na środku we wszystkich płaszczyznach.
Ustawiłem na poDesktopCentre i też nic....

Zaznaczam ze forma ma się sama środkować po jej wykreowaniu bez podawania ręcznie rozmiatu ekranu.

0

Faktytcznie, widocznie najpierw wywoływane jest OnCreate, a dopiero później ustawiana jest forma tam, gdzie Position każe. No to
(Screen.DesktopWidth - Form.Width) div 2;
((Screen.DesktopHeight - Form.Height) div 2) - 50;
przy poDesigned, nie widze w tym żadnego problemu;

0

hmm, niby wszystko fajnie działa ale......
jakby dopiero za drugim razem.
To znaczy mam takią małą modalną Formę (wpisuje się tam hasło i login) i otwiera się ją po przycisnięciu jakiegokolwiek klawisza na klawiaturze....
Za pierwszym razem forma pojawia się w miejscu Designed.
Zaś po zamknięciu i ponownym wywołaniu okienka, wyskakuje ono tak jak sobie tego życzę.

Wie ktoś o co w tym chodzi?

0

aha i jeszcze jedno
Tak wyglada u mnie wywołanie formy

[code]procedure TPulpit.FormClick(Sender: TObject);
begin
Logowanie := TLogowanie.Create(Self);
Logowanie.ShowModal;
Logowanie.Free;
end;[/code]

0

ja mam tak:

procedure TForm1.FormClick(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.ShowModal;
Form2.Free;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
Left:=(Screen.DesktopWidth - Width) div 2;
Top:=((Screen.DesktopHeight - Height) div 2)-100;
end;

i wszystko jest ok

Aha, z project sourse usuń Application.CreateForm(TLogowanie, Logowanie); żeby nie tworzyć jej 2 razy

1 użytkowników online, w tym zalogowanych: 0, gości: 1