Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Berlin 10.1 ScaleBy TDBGrid (https://www.delphipraxis.net/189563-delphi-berlin-10-1-scaleby-tdbgrid.html)

Sourcemaker 24. Jun 2016 13:30

Delphi Berlin 10.1 ScaleBy TDBGrid
 
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!:evil:

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

Uwe Raabe 24. Jun 2016 13:40

AW: Delphi Berlin 10.1 ScaleBy TDBGrid
 
Zitat:

Zitat von Sourcemaker (Beitrag 1340973)
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!:evil:

Wenn der Indicator sichtbar ist, dann bekommst du den Wert doch einfach über ColWidth[0], oder?

Sourcemaker 24. Jun 2016 14:53

AW: Delphi Berlin 10.1 ScaleBy TDBGrid
 
Danke Uwe,

das geht über Umweg:

Delphi-Quellcode:
type
  THackDBGrid = class(TDBGrid);

THackDBGrid(xxxx).ColWidths[0]
Eine Veröffentlichung der Indicatorbreite als nur Lese Property wäre aber trotzdem angebracht.

Grüße

Frank

Uwe Raabe 24. Jun 2016 16:03

AW: Delphi Berlin 10.1 ScaleBy TDBGrid
 
Zitat:

Zitat von Sourcemaker (Beitrag 1340995)
das geht über Umweg:

Delphi-Quellcode:
type
  THackDBGrid = class(TDBGrid);

THackDBGrid(xxxx).ColWidths[0]

Stimmt! Ich hatte das in meinem GridHelper ausprobiert und da war das gar nicht aufgefallen. :)

Zitat:

Zitat von Sourcemaker (Beitrag 1340995)
Eine Veröffentlichung der Indicatorbreite als nur Lese Property wäre aber trotzdem angebracht.

Quality Portal?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.

Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf