AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TStringgrid - Spalte ausblenden

Ein Thema von smepal · begonnen am 14. Aug 2006 · letzter Beitrag vom 15. Aug 2006
Antwort Antwort
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#1

TStringgrid - Spalte ausblenden

  Alt 14. Aug 2006, 18:58
Gibt es eine Möglichkeit beim TStringgrid eine Spalte zu erstellen, die nicht angezeigt wird?
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#2

Re: TStringgrid - Spalte ausblenden

  Alt 14. Aug 2006, 19:18
willst du diese Spalte irgendwann einblenden, oder soll diese nur "Hintergrund-Daten" enthalten.
beim 1. würde ich die breite der spalte auf 0 setzen (colwidths).
für den 2. fall ist

property Objects [ACol, ARow: Integer]: TObject; gedacht.

HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#3

Re: TStringgrid - Spalte ausblenden

  Alt 14. Aug 2006, 19:27
und wie genau kann ich dann damit eine Spalte erzeugen?
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: TStringgrid - Spalte ausblenden

  Alt 14. Aug 2006, 19:41
Hallo smepal,

Zitat von _frank_:
beim 1. würde ich die breite der spalte auf 0 setzen (colwidths).
Nimm lieber den Wert -1, das sieht besser aus und verhindert zuverlässig ein Resize mit der Maus.

Die verborgenen Zellen sind mit der Tastatur trotzdem noch erreichbar, deshalb sollte das Ereignis "OnSelectCell" behandelt werden:

Delphi-Quellcode:
const
  HiddenColumn = 3;

procedure TForm1.FormCreate (Sender: TObject);
begin
  Grid1.ColWidths[HiddenColumn] := -1;
end;

procedure TForm1.Grid1SelectCell (Sender: TObject;
                                  ACol, ARow: Integer;
                                  var CanSelect: Boolean);
begin
  if (ACol = HiddenColumn) then
    with Grid1 do
      begin
        // verborgene Spalte überspringen, dabei Richtung beachten
        if (ACol > Col) then
          Col := Succ(ACol)
        else
          Col := Pred(ACol);
        CanSelect := False;
      end;
end;
Ganz ohne Nebenwirkungen ist das aber nicht. Mit obigem Code wird nur eine Spalte übersprungen, ein Markieren von Zellenblöcken mit der Tastatur wird unterbrochen, und der Code funktioniert nicht mehr nach dem Vertauschen von Spalten.

Gruß Hawkeye
  Mit Zitat antworten Zitat
Benutzerbild von _frank_
_frank_

Registriert seit: 21. Feb 2003
Ort: Plauen / Bamberg
922 Beiträge
 
Delphi 3 Professional
 
#5

Re: TStringgrid - Spalte ausblenden

  Alt 14. Aug 2006, 19:46
gut, dann ich mit den unsichtbaren Daten...(welche nicht sichtbar sein sollen)

objects erzeugt keine spalte sonder hängt ein beliebiges Objekt an eine bestehende Zelle an

mal eine einfache Klasse (ggf. noch constructor/destructor hinzufügen)+initialisierung und freigabe (ungetestet)

ich weise nur der ersten Spalte ein Object zu...kannst das aber auch ausbauen

Delphi-Quellcode:
type
  TMyObject = class
    FInt:integer;
    FStr:string;
  public
    property int:integer read FInt write FInt;
    property Str:string read FStr write FStr;
  end;


procedure TForm1.FormCreate(Sender:TObject);
var mo:TMyObject;
    i:integer;
begin
  //die größe des Grids festlegen
  Stringgrid1.ColCount:=5;
  Stringgrid1.RowCount:=5;
  for i:=0 to pred(stringgrid1.rowcount) do
  begin
    mo:=TMyObject.create;
    mo.int:=i;
    mo.Str:='evtl. Backuptext';
    Stringgrid1.Objects[0,i]:=mo
  end;
end;

procedure TForm1.FormDestroy(Sender:TObject);
var i:integer;
begin
  for i:=0 to pred(stringgrid1.rowcount) do
  begin
    //diesmal mit softcast ;)
    if assigned(Stringgrid1.Objects[i]) then
      (Stringgrid1.Objects[0,i] as TMyObject).free;
  end;
end;
HTH Frank
  Mit Zitat antworten Zitat
Benutzerbild von smepal
smepal

Registriert seit: 25. Okt 2005
Ort: Bechen
58 Beiträge
 
Delphi 2005 Personal
 
#6

Re: TStringgrid - Spalte ausblenden

  Alt 15. Aug 2006, 18:11
Danke das reicht mir schon funktioniert auch sehr gut!
Martin Krämer
Be water my friend!!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:52 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