LCL zawierają mniej informacji o pliku
Nie o pliku, a o formularzu. Zawiera tyle informacji, ile mu jest potrzebne — pozostałe, czyli wszystkie właściwości posiadające wartości domyślne, nie są (w odróżnieniu od Delphi7) przechowywane w pliku .lfm
, bo to nie ma sensu.
Przy przenoszeniu plików z dfm do plików lfm, środowisko lazarus traktuje ClientHeight, ClientWidth
jako odpowiednio dla Delphi Height, Width
i omijają przy przenoszeniu aplikacji prawdziwe proporcje formy, dlaczego tak się dzieje?
Nie omija, a tłumaczy, aby dostosować wartości tych właściwości do ekosystemu LCL.
Poza tym LCL jest zbudowany inaczej niż VCL i wspiera znacznie więcej mechanizmów niż ten Delphi'owy dziad (m.in. tryb HighDPI, skalowanie, layout wyposażony w zaawansowane kotwiczenie kontrolek itd.), więc nie ma żadnego powodu, aby oczekiwać dokładnie takich samych okien i ich zachowania po (automatycznym) przeportowaniu projektu z Delphi do Lazarusa.
Czy istnieje jakiś wzór obliczający te wartość?
Nie, nie ma — Lazarus odczytuje te wartości tak jak ma je odczytywać i pokazuje zawartość zaimportowanych formularzy tak jak jest to zgodne z LCL. Jeśli efekty końcowe są inne, to sam musisz poprawić zawartość tych formularzy w designerze.
Zresztą powinieneś to zrobić, z dwóch powodów. Po pierwsze po to, aby doprowadzić okna do oczekiwanego stanu, czyli aby wyglądały tak jak chcesz. A po drugie, aby wyposażyć je w zaawansowane kotwiczenie kontroler (czyli skorzystać z Anchor Editor), dzięki czemu formularze będą wyglądać i zachowywać się poprawnie na każdym systemie, skórce i każdych ustawieniach wyświetalania/skalowania/DPI, bez konieczności pałowania się z programowaniem zdarzeń typu OnResize
, jak to trzeba było robić w tym zabytkowym Delphi.
Height
powinien dojść jeszcze dodatkowo pasek tytułu. To może się zmieniać funkcjaGetSystemMetrics
zwraca te wartości. EDIT// Widzę że się poprawiłeś.Mariusz Bruniewski