Zmiana rozmiaru formy

0

Forma w rozdzielczosi 1024x768 zajmuje caly ekran, w rozdzielczosci 800x600 nie miesci sie na ekranie.
Czy jest jakis sposob abu forma i wszystkie komoonenty na niej dopasowaly sie do rozmiaru okna ?

0

Skoro forma zajmowała ci całe okno to znaczy że była zmaklsymalizowana czy ręcznie ustawiałeś wysokość i szerokość formy ?
Jeżeli atrybut WindowState jest ustawiony na wsMaximized to forma dopasowuje się wielkością do rozdzielczości ekranu. Jak już masz rozmiary ekranu to możesz pobawić się współrzędnymi i rozmiarami komponentów. Oto chodziło ?

Pozdrowienia

0

Dam Ci małą rade: pobaw się z procedurką ChangeScale.

Form1.ChangeScale(M,D);

Zmienia formę, w skali M:D.

0

zawsze możesz przy inicjalicaji projektu odczytać parametry rozdzielczości i tworzyć formatkę na bieżąco w zależności od tego rozmiaru (Screen.Width i Screen.Height).

mozna jeszcze, ALE TO JUŻ CHAMSTWO, w aplikacji wymuszać określoną rozdzielczość na innych komputerach poprzez zapisanie poprzednich ustawień i ... zmianę na swoje.

Na przykład:

Function SetScreenResolution(X, Y: Integer): Integer;
var
rDevMode: TDeviceMode;
begin
EnumDisplaySettings(nil, 0, rDevMode);
rDevMode.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT or DM_DISPLAYFREQUENCY;
rDevMode.dmPelsWidth := X;
rDevMode.dmPelsHeight := Y;
Result := ChangeDisplaySettings(rDevMode, 0);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if SetScreenResolution(1280, 1024) = DISP_CHANGE_SUCCESSFUL then
ShowMessage('Resolution has changed.');
end;

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