procedure TForm1.AllOnGetText(Sender: TField; var Text: string; DisplayText: Boolean); begin if Sender.DataType in [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString] then Text := WideCharToString(PWideChar(UTF8Decode(Sender.AsString))) else Text := Sender.AsString; end;
procedure TForm1.AllOnSetText(Sender: TField; const Text: string); begin if Sender.DataType in [ftString, ftMemo, ftFmtMemo, ftFixedChar, ftWideString] then Sender.AsVariant := UTF8Encode(widestring(Text)) else Sender.AsString := Text; end;
procedure TForm1.GetSetText(dataset: TDataSet); var i: Integer; begin if not Assigned(dataset.Fields[0].OnGetText) then for I := 0 to dataset.Fields.Count - 1 do begin dataset.Fields[i].OnGetText := AllOnGetText; dataset.Fields[i].OnSetText := AllOnSetText; end; end;
ثم بالنسبة لكل query فى الحدث fterScroll نكتب مايلى فقـــــــــــــــــــــــط .
PHP كود :
procedure TForm1.ZQuery1AfterScroll(DataSet: TDataSet); begin GetSetText(DataSet); end;
بعد كل Scroll بتم اجراء عملية مقرانة بعد اول Scroll فقط .
يوجد ما احسن من هذه الطريقة
.. من الافضل استعمال الحدث BeforOpen مثلا لاكن نتقص بعض الامور ساحاول اجادها .