Einzelnen Beitrag anzeigen

Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#1

Delphi Berlin 10.1 ScaleBy TDBGrid

  Alt 24. Jun 2016, 12:30
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
Frank
  Mit Zitat antworten Zitat