Afficher un memo formaté Paradox dans un composant Delphi DB-Aware

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.


Get started with Drupal 7

Marques les plus citées

toutes les marques

acheter sur OSInet

Accès direct

Recherche

Le mot du jour

BSOD

Blue Screen Of Death

in | |

cf Ecran bleu 

Syndiquer le contenu

Dernières définitions

Chrome - Chromium - digitaalisen kuilun - ghetto sharding - HTTP - MongoDB - PNaCl - QUIC - Skia - SPDY

Un mot au hasard

JCP : Java Community Processus  

Alertes CERTA