Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid, Spalten fixieren (https://www.delphipraxis.net/26335-dbgrid-spalten-fixieren.html)

Mario 22. Jul 2004 09:40


DBGrid, Spalten fixieren
 
Ich haben ein DBGrid auf meiner Datenbank liegen, ReadOnly, RowSelect, AlwaysShowSelection.

Ich möchte gern die ersten vier Spalten fixieren, dass diese halt beim rechts rüber scrollen stehen bleiben. Weiß jemand, wie ich sowas umsetzen könnte?

Momentan habe ich dafür zwei Grids auf der Datenmenge, aber ich warte richtig auf den Tag, wo beide Dinger mal nicht mehr sauber in einer Zeile laufen.

Sourcemaker 22. Jul 2004 10:15

Re: DBGrid, Spalten fixieren
 
JvDBGrid von Jedi hat die Eigenschaft FixedCols.

Grüße

Frank

Stevie 22. Jul 2004 10:28

Re: DBGrid, Spalten fixieren
 
Delphi-Quellcode:
TStringGrid(DbGrid1).FixedCols := 4;

Mario 22. Jul 2004 11:20

Re: DBGrid, Spalten fixieren
 
@Stevie: Leider wird der Bereich, welcher fixed ist, nur unregelmäßig gezeichnet und bleibt oft leer, gerade beim Scroll. Schade, sonst wäre dies mir die liebst Lösung.

@Frank: Das Grid werde ich morgen mal probieren. Danke.

Stevie 22. Jul 2004 11:35

Re: DBGrid, Spalten fixieren
 
Zitat:

Zitat von Mario
@Stevie: Leider wird der Bereich, welcher fixed ist, nur unregelmäßig gezeichnet und bleibt oft leer, gerade beim Scroll. Schade, sonst wäre dies mir die liebst Lösung.

Au, das sieht ja echt etwas übel aus. Ich hatte den Tip mal beim SwissDelphiCenter gesehen, aber nicht ausprobiert. Schade!

MaBuSE 22. Jul 2004 17:03

Re: DBGrid, Spalten fixieren
 
Zitat:

Zitat von Stevie
Delphi-Quellcode:
TStringGrid(DbGrid1).FixedCols := 4;

Implementiert ist FixedCols in TCustomGrid.

Delphi-Quellcode:
  TCustomGrid = class(TCustomControl)
  ...
  protected
    property FixedCols: Integer read FFixedCols write SetFixedCols default 1;
  ...
Du kannst also ein eigenes DBGrid ableiten und diese Eigenschaft sichtbar machen:
(getestet habe ich es nicht)

Delphi-Quellcode:
unit myDBGrid;

interface

uses
  SysUtils, Classes, Controls, Grids, DBGrids;

type
  TmyDBGrid = class(TDBGrid)
  private
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    { Published-Deklarationen }
    property FixedCols;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Beispiele', [TmyDBGrid]);
end;

end.

shmia 22. Jul 2004 17:20

Re: DBGrid, Spalten fixieren
 
Man könnte doch einfach wieder zurücktauschen:
Delphi-Quellcode:
procedure TForm1.DBGrid1ColumnMoved(Sender: TObject; FromIndex,
  ToIndex: Integer);
begin
   // liegt Quelle oder Ziel Column zwischen 0 und 3 ?
   if (ToIndex < 4) or (FromIndex< 4) then
   begin
      // zurücktauschen
      DBGrid1.Columns.Items[ToIndex].Index := FromIndex;
   end;
end;

Mario 22. Jul 2004 18:34

Re: DBGrid, Spalten fixieren
 
@mabuse: Dein Vorschlag ist richtig, aber die Property konnte ich ja setzen. Nur leider ist sie beim DBGrid nicht umsonst noch verborgen :(

@shmia: Ich habe es probiert, scheinbar verhindere ich damit das Tauschen der Spalten. Das war leider auch nicht das Problem. Ich möchte beim horizontalen Scrollen ein paar Spalten zu Begin immer sichtbar halten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:21 Uhr.

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