Rozmiar programu proporcjonalny do rozdzielczości.

0

Witam! Zrobiłem program okienkowy w Delphi. Mam problem z dopasowaniem rozmiarów okna, przycisków, etykiet do rozdzielczości i do zmaksymalizowania. Po zmianie rozdzielczości części nie widać, a po zmaksymalizowaniu okna, okno jest duże, a to co w oknie jest trochę małe i pozostaje w małym obszarze, elementy nie powiększają się proporcjonalnie do okna, i nie przesuwają się w dane miejsce jak przy minimalizacji. Jak można temu zaradzić? Jakieś sugestie?

0

Jeżeli nie chcesz ręcznie zmieniać rozmiaru i położenia komponentów na formularzu - dla wszystkich komponentów, które mają się dopasowywać poustawiaj odpowiednie wartości kotwic we właściwości Anchors;

P.S. Tytuł wątku sugeruje rozmiar pliku wykonywalnego, a nie rozmiaru formularza ;)

0

Tylko jak ustawiam anchors to po maksymalizacji elementy nie powiekszają się, proporcjonalnie.

Może wprowadzić jakiś współczynnik k....? w onchange?

0

Hmm... Komponenty powinny dostosować swój rozmiar podczas zarówno maksymalizacji, jak i przywrócenia rozmiaru (restore); Sprawdziłem pod Delphi i pod Lazarusem i działa tak jak powinno;

Do dyspozycji masz także właściwość Align - za jej pomocą możesz dostosować wielkość i położenie komponentu względem którejś ze "ścian" formularza, albo rozciągnąć na cały obszar formularza (lub komponentu grupującego);

Może pokaż zrzut ekranu i zaznacz które komponenty się źle zachowują to moze uda się je poprawnie usadzić; No i napisz też czy którykolwiek komponent, jaki błędnie dostosowuje rozmiara i położenie jest jakoś oprogramowany - czy gdzieś ustawiasz ręcznie ich pozycję lub wielkość; Być może gdzieś coś przeszkadza i ustawia go po swojemu.

0

No to mam tak:

  1. Pierwsze zdjęcie jak mam standardowo. Calość jest w rozdzielczosci 19020 x 1080; kijowo widac na screenach bo mam dwa ekrany;/
    user image
  2. Drugie lekkie rozciagniecie w prawo.

user image
3. Pelny ekran.
user image

Chciałbym zeby wszystko sie powiekszalo proporcjonalnie, chyba ze jak sie pomniejszy za mocno to Scroll zrobic..

0

Z tego co jakimś cudem widać na tych miniaturkach, w ogóle nie masz dostosowanych kotwic dla komponentów; Tym które mają przy rozciąganiu formularza "przykleić" się do prawej bandy formularza, musisz ustawić we właściwości Anchors pole akRight na True; To samo tyczy się z przyklejaniem do góry (pole akTop), do lewej (pole akLeft) i do dołu formularza (pole akBottom);

Możesz zaznaczyć wszystkie na True - wtedy przy rozciąganiu formularza komponent dostosuje swój rozmiar ze wszystkich czterech stron;

Coś widzę, że nie bardzo wiesz jak się tą właściwością posługiwać.

0

no niestety nie, jak odznaczylem wszystkim to jak rozciagalem to odleglosc miedzy komponentami rosla proporcjonalnie, ale rozmiar komponentow niestety nie;/
a znowu jak zaznacze wszystkim wszystkie to rozmiary sa ogromne ze sie wszystko zlewa;/

0

@andrzejbodziuzbychujarek - to, ze napisałem że możesz nie oznacza, że musisz;

no niestety nie, jak odznaczylem wszystkim to jak rozciagalem to odleglosc miedzy komponentami rosla proporcjonalnie, ale rozmiar komponentow niestety nie;/

No bo odznaczenie wszystkich enomów z pola Anchors daje właśnie taki efekt; Teraz mam 100% pewność, że nie rozumiesz jak się nimi posługiwać; Spróbuję to wytłumaczyć inaczej, przez poniższa tabelkę:

enum zachowanie dla True zachowanie dla False
akLeft odstęp od lewej krawędzi pozostaje niezmienny (właściwość Left nie zmienia się podczas rozciągania formularza). Jeśli akRight ustawiony jest na True - zmienia się jedynie szerokość komponentu, a odstępy od lewej i prawej krawędzi formularza pozostają bez zmian, zaś jeżeli akRight ustawiony jest na False - ani szerokość komponentu ani jego położenie nie zmiania się. podczas rozciągania formularza zmienia się odstęp od lewej krawędzi formularza. Jeśli akRight jest ustawiony na True, zmienia się tylko położenie komponentu, a jesli akRight ustawiony jest na False, komponent przesuwa się zachowując stałą szerokość, a zmieniają się odstępy od lewej i prawej krawędzi formularza.
akRight zachowuje stały odstęp prawej krawędzi komponentu od prawej krawędzi formularza. Jeśli akLeft ustawiony jest na True, komponent zmienia jedynie swoją szerokość, a odstępy od lewej i prawej krawędzi formularza pozostają niezmienne, a jeśli akLeft ustawiony jest na False, rozmiar komponentu i odstęp od prawej krawędzi nie zmieniają się, za to zmienia się odstęp od lewej krawędzi formularza (właściwość Left) odstęp od prawej krawędzi formularza zmienia się podczas rozciągania komponentu. Jeśli akLeft ustawiony jest na True - komponent nie zmienia ani swojego położenia, ani rozmiaru (rośnie lub maleje jedynie odstęp od prawej krawędzi formularza), zaś jesli akLeft ustawione jest na False - położenie komponentu zmienia się, a szerokość nie zmienia się.
akTop odstęp od górnej krawędzi formularza nie zmienia się (właściwość Top pozostaje bez zmian). Jeżeli akBottom ustawiony jest na True - wysokość komponentu zmienia się podczas rozciągania formularza, a odstępy od górnej i dolnej krawędzi pozostają stałe, a jeżeli akBottom ustawiony jest na False - odstęp komponentu od górnej krawędzi formularza oraz wysokość komponentu nie zmieniają się, zaś odstęp od dolnej krawędzi formularza zwiększa się lub zmniejsza odstęp od górnej krawędzi formularza zmienia się podczas rozciągania formularza. Jeśli akBottom ustawiony jest na True - komponent nie zmienia swojej wysokości, a jedynie położenie (odstęp od górnej krawędzi zwiększa się, a od dolnej nie zmienia), zaś jeśli akBottom ustawiony jest na False - położenie komponentu zmienia się (właściwość Top zmienia się), a rozmiar pozostaje bez zmian
akBottom odstęp od dolnej krawędzi pozostaje bez zmian. Jeżeli akTop ustawiony jest na True - zmienia się jedynie wysokość komponentu, zaś odstępy od górnej i dolnej krawędzi formularza pozostają bez zmian, zaś jeżeli akTop ustawiony jest na False - wysokość komponentu oraz odstęp od dolnej krawędzi komponentu pozostają bez zmian, a zmienia się jedynie odstęp od górnej krawędzi formularza. odstęp od dolnej krawędzi formularza zmienia się podczas rozciągania formularza. Jeżeli akTop ustawiony jest na False - wysokość komponentu oraz odstęp od górnej krawędzi formularza pozostają bez zmian, a zmienia się jedynie odstęp od dolnej krawędzi formularza, a jeśli akTop ustawione jest na False - rozmiar komponentu nie zmienia się, zaś zmieniają się odstępy od górnej i dolnej krawędzi formularza, a wysokość komponentu pozostaje bez zmian.
Myślę, że ta tabelka nieco rozjaśni Ci znaczenie poszczególnych enumów w zbiorze Anchors i że w końcu załapiesz (w praktyce) jak się z nich powinno korzystać.

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