Discussion:
DBGrid - Zeilen ausblenden
(zu alt für eine Antwort)
Nicole Wagner
2011-03-11 15:33:04 UTC
Permalink
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
Joe Galinke
2011-03-11 16:41:53 UTC
Permalink
Hallo Nicole,
Post by Nicole Wagner
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.
Post by Nicole Wagner
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
--
Nicole Wagner
2011-03-12 18:14:58 UTC
Permalink
Post by Joe Galinke
Hallo Nicole,
Post by Nicole Wagner
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.
Post by Nicole Wagner
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).
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
Danke fuer Deine Antwort, werde ich probieren!


Ein schoenes Wochenende!
Nicole

Loading...