Le problème : Delphi sait afficher les champs mémo, mais pas les champs mémo formatés de Paradox.
La solution : définir un champ chaîne calculé pour le TQuery ou TTable utilisé.
La procédure : Soit une table TBL, dans laquelle on définit un champ memo attaché au mémo formaté, et dont le BlobType sera automatiquement ftFmtMemo.
Son nom créé par Delphi sera TBLmemo. Créer en supplément un champ calculé FMT de type chaîne. Le nom par défaut de l'objet TField créé par Delphi pour ce champ sera TBLFMT.
Dans le handler OnGetText du champ TBLFMT, ajouter le code ci-dessous :
procedure TForm1.TBLFMTGetText (
Sender: TField;
var Text: OpenString;
DisplayText: Boolean);
var s : TMemoryStream ;
cs : PChar ;
begin
s := TMemoryStream.Create ;
TBLmemo.SaveToStream (s) ;
cs := s.Memory ;
Text := StrPas (cs + 44) ;
s.Free ;
end;
...et c'est tout ! Le champ TBLFMT peut ensuite être utilisé dans tout contrôle DB-aware, et il affichera en ASCII le contenu du champ mémo formaté Paradox.
Une particularité, toutefois : les langages de table ne sont pas pris en compte dans ce cas, de sorte que selon la séquence de tri utilisée dans l'application, les caractères non-ASCII peuvent ne pas s'afficher correctement. Il suffit alors d'ajouter la translittération appropriée dans la fonction ci-dessus si le problème se présente.
Truc OSInet initialement publié dans news://comp.lang.pascal.delphi.databases le 08/03/97.- Précédent: Omni-NFS 95 décolle à grande vitesse
- Suivant: Kansmen Corporation Announces LittleBrother 2.0