我想删除dbgrid中的所有非数字行
例如我的dbgrid行是:
row1= 127.0.0.1:900
row2= 103.43.122.40:8000
row3= 122.12.75.4:3128
row4= netfire.se98.ar:3000
row5= po-ryd.449.br:3128
row6= 93.5.32.150:6540
现在,删除dbgrid中的所有非数字行。
答案 0 :(得分:6)
DbGrid
由TDataSet
后代支持。 TDataSet
后代具有Filtered
属性和OnFilterRecord
可用于过滤记录。
以下是一个示例OnFilterRecord
实施,拒绝任何由不是数字而非'.'
或':'
的字符组成的记录。请注意我没有使用char-in-set测试,因此代码与Unicode Delphi和非Unicode Delphi完全兼容。
procedure TForm1.ClientDataSet1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var Value: string;
i: Integer;
C: Char;
begin
Value := DataSet['IP']; // Replace "IP" with your field's name
for i:=1 to Length(Value) do
begin
C := Value[i];
if not(C in ['.', ':', '0'..'9']) then // Detect bad characters
begin
Accept := False; // This record will NOT be shown.
Exit;
end;
end;
Accept := True; // No bad characters were found, show the record.
end;
分配此OnFilterRecord
处理程序后,请不要忘记设置Filtered := True
。