比较麻烦吧 先用个临时表存放数据,显示的时候显示该临时表,把dbgrid的mutiselect属性选中,然后选中要隐藏的记录,当执行隐藏事件时 Dateset.first; While not DateSet.eof do begin if Self.DBGrid1.IsSelected then DateSet.delete; ............ end; 如果要恢复,把临时表清空,在从实际表导入好了,不知道是不是和你所想的一样 没想到更好的方法
是不是说将某些符合一定规则的数据不显示,比如统计数据,大于xxxx的数据等, 只要你能将不显示的数据找到规则,就可以这样DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin if (你自己的规则判断) then begin DBGrid1.Canvas.Brush.color:=clLime; DBGrid1.Canvas.Font.Color:=clRed; end else begin DBGrid1.Canvas.Brush.color:=clWhite; DBGrid1.Canvas.Font.Color:=clBlack; end; DBGrid1.defaultdrawcolumncell(rect,datacol,column,state); end; 不想显示的 将单元格的前景色和背景色设置一样,要求显示的设置不用改变,这样就达到了隐藏一些单元格数据的目的。
设置字段的属性bvisible为false
我的意思 是說。我現在根據條件統計出的信息全部顯示在dbgrid里面。線在由于用戶要求﹐不想讓某些統計出來的記錄顯示在里面(當然是多條記錄﹐但是也沒有什么規律可以找到。)﹐我現在的意思是看用什么方法使這些不讓顯示出來的記錄隱藏起來或者從dbgrid中刪除掉(不要把數據庫中的記錄刪除)﹖﹖﹖﹖﹖
在全部察看完毕,选择是否更新数据库。或者直接不更新,退出。这样就不怕用户删除dbgrid中的内容了吧?
也许可以!看看高手怎么说吧!
你們說我這樣作行嗎﹕當我右鍵點擊'刪除'時實現每一個字段的隱藏﹐代碼如下﹕
procedure TForm1.N1Click(Sender: TObject);
begin
DBGrid1.Fields[0].visible:=false;
DBGrid1.Fields[1].visible:=false;
DBGrid1.Fields[2].visible:=false;
DBGrid1.Fields[3].visible:=false;
DBGrid1.Fields[4].visible:=false;
DBGrid1.Fields[5].visible:=false;
DBGrid1.Fields[6].visible:=false;
DBGrid1.Fields[7].visible:=false;
end;
end.//該dbgrid中右8個字段。 為什么運行抱錯如下呢﹖
access violation in module project1.exe.
字段的visible是隐藏字段的!
应该有隐藏记录的方法呀!
你想得应该行得通!
我是這么想的﹐我只要扑捉到要隱藏的記錄﹐用上面的代碼完全可以的﹐現在就是扑捉要記錄時遇到困難﹐我上面的代碼是加在dbgrid上PopupMenu中的事件下﹐難道這樣不時扑捉到記錄了嗎﹖ 你們有沒有更好的扑捉記錄的方法﹖
这么做得到记录也不行的。
除非是直接隐藏行,也就是记录。
可惜我也不太熟悉delphi。呵呵!
哪位高手可以幫幫我呀....!
先用个临时表存放数据,显示的时候显示该临时表,把dbgrid的mutiselect属性选中,然后选中要隐藏的记录,当执行隐藏事件时
Dateset.first;
While not DateSet.eof do
begin
if Self.DBGrid1.IsSelected then
DateSet.delete;
............
end;
如果要恢复,把临时表清空,在从实际表导入好了,不知道是不是和你所想的一样
没想到更好的方法
只要你能将不显示的数据找到规则,就可以这样DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if (你自己的规则判断) then
begin
DBGrid1.Canvas.Brush.color:=clLime;
DBGrid1.Canvas.Font.Color:=clRed;
end
else
begin
DBGrid1.Canvas.Brush.color:=clWhite;
DBGrid1.Canvas.Font.Color:=clBlack;
end;
DBGrid1.defaultdrawcolumncell(rect,datacol,column,state);
end;
不想显示的 将单元格的前景色和背景色设置一样,要求显示的设置不用改变,这样就达到了隐藏一些单元格数据的目的。
要是行的话,就是SQL语句了