to lqy
这是我测试我的程序内置输入法的一段测试代码,我想你关键是看我是怎么应用的,
看看这种应用是否适合你的需求,如果这样的应用方法不适合,千万别照搬,具体实现
你可要靠自己....
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, Mask, DBCtrls, DBClient,myAdodbEngine,mydbclass,myisrule,
ADODB, ImgList;
type
TForm1 = class(TForm)
ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
e1: TDBEdit;
e2: TDBEdit;
e3: TDBEdit;
ClientDataSet1Field: TStringField;
ClientDataSet1Field2: TStringField;
ClientDataSet1Field3: TStringField;
ADOConnection1: TADOConnection;
Button1: TButton;
ImageList1: TImageList;
procedure FormKeyPress(Sender: TObject;
var Key: Char);
procedure Button1Click(Sender: TObject);
procedure e2Enter(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
dbi : TmyDBInterface;
sse : TmyISSession;
end;
TtGoods = class(TmyDBClass)
public
procedure iInit;
override;
end;
TtImeObj = class(TmyISSimpleObject)
protected
procedure iFuncInit;
override;
published
procedure GetData;
virtual;
end;
var
Form1: TForm1;
implementation
uses myIme;
{$R *.dfm}
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if #13 = Key then
begin
Key := #0;
Selectnext(ActiveControl,True,True);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
dbi := GiveMeAInterface(ADOConnection1);
sse := TmyISSession.Create(dbi);
end;
procedure TForm1.e2Enter(Sender: TObject);
var
v : TtImeObj;
begin
v := ttImeObj.Create(sse);
try
if iImeActive(e2,e2.Field.asString,v) then
begin
e2.Field.DataSet.Edit;
e2.Field.asString := v.iOut[0].Fields[1].AsString;
e2.Field.DataSet.Post;
e2.SelectAll;
end;
finally
v.Free;
end;
end;
{ TtGoods }
procedure TtGoods.iInit;
begin
inherited;
Self.iTable('GOODS');
Self.iVarcharField('GOODSID',15,'代码',True);
Self.iVarcharField('NAME',35,'名称');
end;
{ TtImeObj }
procedure TtImeObj.GetData;
var
v : TtGoods;
begin
v := TtGoods.Create(iISSession.iDBI);
try
v.iGetByLikeKey(
['代码','名称']
,[iIn[0].FieldByName('输入').AsString + '%'
,iIn[0].FieldByName('输入').AsString + '%']
,iOut[0]
,False
,True
,iIn[0].FieldByName('缓存').AsInteger);
iOut[0].First;
iOut[0].IndexFieldNames := '代码';
finally
v.Free
end;
end;
procedure TtImeObj.iFuncInit;
begin
inherited;
iInitAction('输入法','',[],[TmyImeKey],[TtGoods],'GetData');
end;
{ TtGoodsOut }
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1Click(Sender);
end;
end.