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 Erste sichtbare Spalte in einem DBGrid (https://www.delphipraxis.net/78637-erste-sichtbare-spalte-einem-dbgrid.html)

MarkusB 8. Okt 2006 16:36


Erste sichtbare Spalte in einem DBGrid
 
Moin, moin!

Wie ermittle ich den Index der ersten sichtbaren Spalte in einem DBGrid, nach der Verschiebung der horizontalen Scrollbar?

DF cross post
DSDT cross post

Viele Grüße
Markus

rider 8. Okt 2006 17:17

Re: Erste sichtbare Spalte in einem DBGrid
 
Die saubere Lösung wäre eine eigene Komponente von TDBGrid abzuleiten und die Properties LeftCol und FixedCols als readonly sichtbar zu machen.

Die quick&dirty Methode sieht so aus:
Delphi-Quellcode:
var
  Idx: Integer; // erster sichtbarer Spaltenindex
begin
  Idx := TStringGrid(DBGrid1).LeftCol - TStringGrid(DBGrid1).FixedCols;

MarkusB 8. Okt 2006 18:47

Re: Erste sichtbare Spalte in einem DBGrid
 
Moin, moin!

Ich habe Ähnliches versucht mit „typecast“ des TDBGrids in den TCustomDBGrid und TCustomGrid. Beide sind Vorfahren des TDBGrids. Meine Versuche sind leider erfolglos geblieben. Das was mit direkten Vorfahren nicht funktionierte, funktioniert nun mit dem „typecast“ in einen Verwandten, den TStringGrid. Eigentlich habe ich das noch nicht so richtig geschnallt, wieso. Der TStringGrid steht in keinem Verhältnis zu TDBGrid bis auf das, das die beiden einen gemeinsamen Vorfahren haben (TCustomGrid).

Danke!

Viele Grüße
Markus

rider 8. Okt 2006 19:04

Re: Erste sichtbare Spalte in einem DBGrid
 
Beide stammen von TCustomGrid ab. Dort sind die entsprechenden Properties allerdings noch protected, deshalb funktioniert der Typecast nur mit einer "höheren" Klasse, wo die Properties dann als public deklariert sind.

Wie gesagt, es wäre "sauberer" eine eigene Klasse von TDBGrid oder TCustomDBGrid abzuleiten, um dort selbst die Properties auf public zu setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.

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