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