Witam,
Próbuję dostosować mój program (który pobiera podstawowe informacje o systemie) do działania w systemie z niestandardowym skalowaniem (testuje na 150%).
Program wyświetla pobrane informacje na statycznych kontrolkach i dynamicznie tworzonych kontrolkach. Program działa OK przy standardowym skalowaniu (100%).
Cuda dzieją się przy niestandardowym skalowaniu - cały program działa OK (właściwość formy Scaled = True), ale nieprawidłowo wyświetlane/skalowane są elementy, które tworzę dynamicznie, w czasie działania programu.
Wszystkie dynamicznie utworzone kontrolki są za duże.
Na formie mam położoną kontrolkę TPageControl. W czasie działania programu dynamicznie tworzę zakładki (TTabSheet), a na nich kontrolki (TLabel).
Coś takiego:
// Create Tabs
iTab := 0;
for i:=0 to IlePotrzebnychZakladek-1 do
begin
iTab:=iTab+1;
TabSheet := TTabSheet.Create(PC_VideoController); // <---PC_VideoController (TPageControl) istnieje
TabSheet.Caption := 'blabla';
TabSheet.PageControl := PC_VideoController;
TabSheet.PageIndex:= iTab-1;
TabSheet.Name:='TS_VideoController_' + inttostr(iTab);
// Create labels on each Tab
with TLabel.Create(TabSheet) do
begin
// oryginalne rozmiary kontrolki pobieram z statycznej kontrolki TLabel (prawidłowej)
Height:=Lbl_OS_Name_Desc.Height;
Font.Size:= Lbl_OS_Name_Desc.Font.Size;
Font.Style:=Lbl_OS_Name_Desc.Font.Style;
Font.Name := Lbl_OS_Name_Desc.Font.Name;
Font.Charset := Lbl_OS_Name_Desc.Font.Charset;
Font.Color:=clBlack;
// zmienna j okresla ilosc kontrolek na jednej zakladce, ale to nie jest tutaj istotne
width:=200;
Left:=20;
aTop:=10 + (j-1)*Height + (j-1)*iSPace; // czary mary (odleglosc miedzy kontrolkami)
Top:= aTop;
Parent:=TabSheet;
Name:='Lbl_VideoController_' + inttostr(iTab) + '_Desc_' + IntToStr(j);
Caption:=L_VideoController[j+2] + ':';
AutoSize:=True;
Transparent:=True;
WordWrap:=False;
Alignment:=taLeftJustify;
Anchors:=[akLeft, akTop];
Enabled:=True;
ParentFont:=False;
ParentBiDiMode:=False;
end;
end;
Zobaczcie - to jest to co się wyświetla:
a tak wyglądać powinna:
Co może być powodem tego zachowania? Co mogę zrobić?
Proszę o wskazówki!