DBGrid - Zeilen ausblenden

11/03/2011 - 16:33 von Nicole Wagner | Report spam
Hallo User,

ich habe ein DBGrid, das mir wichtige und weniger wichtige
Informationen gibt. Jetzt habe ich mir gedacht, ich will ein
Knoepfchen, das mir die weniger wichtigen fallweise ausblendet.


So schrieb ich:

for
if FieldByName('Info').IsNull then Fields[RecNo].Visible:=false;



Schnecken!
Mein DBGrid wird mit 23 Zeilen auf dem Schirm dargestellt.
Die 24. Zeile sehe ich nur, wenn ich den Scrollbar klicken.

Und ausgerechnet beim Zugriff:
if FieldByName('Info').IsNull then Fields[24].Visible:=false;

fliegt mir die Sache um die Ohren.


Wie kann ich auf-Klick Zeilen ausblenden und zwar auch unterhalb des
Sichtfeldes?

Danke fuer Tipps!


Nicole
 

Lesen sie die antworten

#1 Joe Galinke
11/03/2011 - 17:41 | Warnen spam
Hallo Nicole,

Nicole Wagner schrieb:

for
if FieldByName('Info').IsNull then Fields[RecNo].Visible:=false;



Fields[RecNo]?

Fields[X] gibt Dir eine Spalte zurück, mit RecNo scheinst Du aber eine
konkrete Zeile zu meinen. Da liegt was über Kreuz.

Wie kann ich auf-Klick Zeilen ausblenden und zwar auch unterhalb des
Sichtfeldes?



Wenn Du nicht Dein SQL-Statement um den Ausschluss dieser Zeile erweitern
und neu ausführen möchtest, schließlich kann die Ausführung etwas dauern,
dann bietet sich die Filtereigenschaft des DataSets an.

Damit meine ich nicht das von Dir kürzlich erstmals verwendete
OnFilterRecord-Event, sondern die Property Filter (String).

Etwa in der Art:

DataSet.DisableControls;
try
// merken, da die übernàchste Anweisung den Datensatzzeiger "springen"
// làsst
RecID := DataSet.FieldByName('RecordID').AsInteger;

DataSet.Filtered := False;
if DataSet.Filter <> '' then begin
DataSet.Filter := DataSet.Filter + ' AND ';
end;

// RecordID ist der Primàrschlüssel
DataSet.Filter := DataSet.Filter + ' RecordID<>' + IntToStr(RecID);
DataSet.Filtered := True;
finally
DataSet.EnableControls;
end;





Gruß, Joe

Ähnliche fragen