Delphi-PRAXiS
Seite 1 von 2  1 2      

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 TStringGrid.FixedCols rechts darstellen ? (https://www.delphipraxis.net/130390-tstringgrid-fixedcols-rechts-darstellen.html)

madina 7. Mär 2009 15:57


TStringGrid.FixedCols rechts darstellen ?
 
Hallo,

wie könnte ich in einem TStringGrid die FixedCols nicht links sondern rechts darstellen ?

mfg

Keldorn 7. Mär 2009 16:16

Re: TStringGrid.FixedCols rechts darstellen ?
 
Hallo,

nein nicht mit dem Standardgrid.

Gruß Frank

Hansa 7. Mär 2009 17:30

Re: TStringGrid.FixedCols rechts darstellen ?
 
Wieso soll das mit dem Standardgrid nicht gehen ? :shock:

Delphi-Quellcode:
procedure sgRechts (Sender: TObject; Rect: TRect; ACol, ARow:Integer);
var st: String;
begin
  with Sender as TExtStringGrid do begin
    Canvas.FillRect(Rect);
    st := Cells[ACol,ARow];
    InflateRect(rect,-2,-2);
    DrawText(Canvas.Handle, PChar(st), StrLen(PChar(st)),Rect,DT_RIGHT);
  end;
end;
Die Prozedur muss nur im OnDrawCell des Grids aufgerufen werden.

DeddyH 7. Mär 2009 17:35

Re: TStringGrid.FixedCols rechts darstellen ?
 
Es geht ja nicht um rechtsbündigen Text, sondern darum, die fixen Spalten nicht links, sondern rechts zu haben.

Bernhard Geyer 7. Mär 2009 17:37

Re: TStringGrid.FixedCols rechts darstellen ?
 
Wenn du nicht gerade die Personal-Edition von Delphi hast kannst du doch in den Quellcode der Stringgrid-Komponente schnüffeln um den Code der linksbündigen FixedCols darstellung in eine rechtsbündige darstellung zu ändern. Die logik sollte die gleiche sein.

toms 7. Mär 2009 17:55

Re: TStringGrid.FixedCols rechts darstellen ?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal ein Ansatz, um die Spalte ganz rechts als Fixed zu setzen.
(Gibt noch ein Fehler beim Zeichnen wenn eine Zelle der zweitletzten Spalte selektiert wird und dann
eine andere Zelle selektiert wird.)

Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  TempRect: TRect;
begin
  with Sender as TStringGrid do
  begin
    if ACol = Pred(ColCount) then
    begin
      TempRect := Rect;
      Canvas.Brush.Color := FixedColor;
      Canvas.FillRect(TempRect);
      DrawEdge(Canvas.Handle, TempRect, BDR_RAISEDINNER, BF_RECT);
      Canvas.Brush.Color := clBlack;
      with TempRect do
      begin
        Bottom := Bottom + 1;
        Top := Top - 1;
        Left := Left - 1;
        Canvas.FrameRect(TempRect);
      end;
    end;
  end;
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
  CanSelect := ACol <> Pred((Sender as TStringGrid).ColCount);
end;

DeddyH 7. Mär 2009 18:43

Re: TStringGrid.FixedCols rechts darstellen ?
 
Zitat:

Delphi-Quellcode:
if ACol = Pred(ColCount) then

Das sollte man vielleicht ändern in
Delphi-Quellcode:
if ACol >= (ColCount - FixedRows) then

toms 7. Mär 2009 18:48

Re: TStringGrid.FixedCols rechts darstellen ?
 
Zitat:

Zitat von DeddyH
Zitat:

Delphi-Quellcode:
if ACol = Pred(ColCount) then

Das sollte man vielleicht ändern in
Delphi-Quellcode:
if ACol >= (ColCount - FixedRows) then

Mein Code ist nicht universell (d.h er nimmt keine Rücksicht auf die sonstigen Einstellungen in Options etc)

Keldorn 7. Mär 2009 18:55

Re: TStringGrid.FixedCols rechts darstellen ?
 
wie wollt ihr das Scrollen lösen?
Das Zeichnen allein ist ja am Ende noch die kleinste Hürde. Aber sobald das Grid größer ist, funktionierst ja nicht mehr.

toms 7. Mär 2009 20:14

Re: TStringGrid.FixedCols rechts darstellen ?
 
Zitat:

Zitat von Keldorn
wie wollt ihr das Scrollen lösen?
Das Zeichnen allein ist ja am Ende noch die kleinste Hürde. Aber sobald das Grid größer ist, funktionierst ja nicht mehr.

Warum sollte es nicht mehr funktionieren? Was funktioniert nicht mehr?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr.
Seite 1 von 2  1 2      

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