今天看到一朋友在問技術問題:TField事件賦值問題。問題如下
procedure fieldGetText(Sender: TField; var Text: string;
DisplayText: Boolean);
begin
//text:= MyTextDEncrypt(Sender.AsString, 'xxxxxddddd');
end;
procedure fieldSetText(Sender: TField; const Text: string);
begin
//Sender.AsString:= MyTextDEncrypt(text, 'xxxxxddddd');
end;
procedure TForm1.btn1Click(Sender: TObject);
begin
with ADOQuery1 do
begin
SQL.Text := 'select * from Employees';
Open;
adoquery1.fieldbyname('LastName').ongettext := fieldGetText;
adoquery1.fieldbyname('LastName').onsettext := fieldsetText;
end;
end;
錯誤在於:把普通方法賦值給事件,因爲事件要求必須是類方法。
解決辦法:把fieldGetText、fieldsetText聲明成類成員方法。