如:like '%小%'
单字过滤
经测试两种方式 Filter属性、Locate方法 正常。
提供各种版本的补丁,欠缺的版本会尽快补上。
http://u.skygz.com/ContentPane.aspx?down=ok&filepath=skygz%2f%c6%e4%cb%fc%2fMidaslib.rar
测试所用代码:
Unit Main;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, DBClient, StdCtrls, Grids, DBGrids;
Type
TForm1 = Class(TForm)
Cmdlocate: TButton;
TxtValue: TEdit;
Label1: TLabel;
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
CmdFilter: TButton;
Procedure CmdlocateClick(Sender: TObject);
Procedure CmdFilterClick(Sender: TObject);
Procedure FormCreate(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
Form1: TForm1;
Implementation
{$R *.dfm}
//注释引用MidasLib,将改用Midas.dll
Uses
MidasLib;
Procedure TForm1.CmdlocateClick(Sender: TObject);
Begin
ClientDataSet1.Filtered := false;
ClientDataSet1.Locate('text1', TxtValue.Text, [loCaseInsensitive, loPartialKey]);
End;
Procedure TForm1.CmdFilterClick(Sender: TObject);
Begin
ClientDataSet1.Filtered := false;
ClientDataSet1.Filter := 'text1 like ''%' + TxtValue.Text + '%''';
ClientDataSet1.Filtered := true;
End;
Procedure TForm1.FormCreate(Sender: TObject);
Const
Datas: Array[0..5] Of String = ('中', '国', '人', '民', '银', '行');
Var
I: Integer;
Begin
TxtValue.Text := '国';
With ClientDataSet1 Do
Begin
With FieldDefs.AddFieldDef Do
Begin
DataType := ftAutoInc;
Name := 'ID';
End;
With FieldDefs.AddFieldDef Do
Begin
DataType := ftString;
Size := 20;
Name := 'Text1';
End;
CreateDataSet;
For I := 0 To 50 Do
Begin
Randomize;
Insert;
FieldByName('Text1').AsString := Datas[Random(6)] + '中文_' + IntToStr(I + 1);
Post;
End;
End;
End;
End.