Hi,
offensichtlich scheinen die Embarcaderos uns das Leben schwer machen zu wollen.
Bei Portierung von XE5 auf 10.1 stelle ich fest das meine automatische Formbreitenanpassung
an eine DBGrid nicht mehr passt.
Folgender Code sorgt dafür das auch die Indicatorspalte skaliert wird.
Ist ja im Prinzip auch schon schlimm da auf engen Forms wieder ein paar Pixel fehlen
und man auf jedenfall ran muss.
Wenn man aber noch nicht einmal die Variable veröffentlicht (FIndicatorWidth) so dass
man seine Berechnung von der IndicatorWidth-Konstante entsprechend anpassen kann ist
das echt bescheiden!
Delphi-Quellcode:
procedure TCustomDBGrid.ChangeScale(M, D: Integer; isDpiChange: Boolean);
var
I: Integer;
begin
if M <> D then
begin
for I := 0 to FColumns.Count - 1 do
begin
if Font <> FColumns[I].Font then
FColumns[I].Font.Height := MulDiv(FColumns[I].Font.Height, M, D);
if TitleFont <> FColumns[I].Title.Font then
FColumns[I].Title.Font.Height := MulDiv(FColumns[I].Title.Font.Height, M, D);
if (csLoading in ComponentState) and (FColumns[I].Width <> DefaultColWidth) then
FColumns[I].FWidth := MulDiv(FColumns[I].FWidth, M, D);
end;
FIndicatorWidth := MulDiv(FIndicatorWidth, M, D);
InternalLayout;
end;
inherited;
end;
Grüße
Frank