Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    juin 2007
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : juin 2007
    Messages : 123
    Points : 14
    Points
    14

    Par défaut Afficher un champs BLOB dans TImage

    Bonjour,

    J'arrive pas à afficher un champs image enregistré dans ma table dans un contrôle TImage (Image1).

    NB. C++Builder version 6 & Firebird :

    Structure de ma base :
    Code :
    1
    2
    3
    4
    5
    6
    7
    .
    .
    code integer not null,
    nom varcahr(30),
    myimage BLOB SUB_TYPE 0 SEGMENT SIZE 80,
    .
    .
    à l'affichage, je met à jour les contrôle de ma fenêtre d'affichage :

    Code :
    1
    2
    EditCode->Text=MaTable->FieldByName("CODE")->AsInteger;
    EditNom->Text=MaTable->FieldByName("NOM")->AsString;
    comment puis-je mettre à jour le contrôle TImage :

    ce code me renvoir l'erreur suivante :
    Code :
    Image1->Picture->Bitmap->Assign(DModule->MaTable->FieldByName("MYIMAGE")->AsBlob;



    C++Error MonFicher.cpp (234) E2034 AsBlob is not a member of 'TField'

  2. #2
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    9 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 9 930
    Points : 14 474
    Points
    14 474

    Par défaut

    Si je reprends juste ton code, il manquait le transtypage du TField

    Code :
    1
    2
    3
    TBlobField *bf = dynamic_cast<TBlobField*>(DModule->MaTable->FieldByName("MYIMAGE"))
    if (bf)
      Image1->Picture->Bitmap->Assign(bf->AsBlob);
    Voir aussi TGraphic et LoadFromStream
    Ainsi que le TDBImage !

    inspiré de mon code delphi dans le sujet Données de type IMAGE dans Delphi et SQLSever :

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    void LoadDBImage(ITImage* I, TDataset* D, TField* F)
    {
      if (F && ! F.IsNull) 
      {
        TStream* m = D->CreateBlobStream(F, bmRead);
        if (m)
        try
        {
          I->Picture->Bitmap->LoadFromStream(m);
        }
        __finally
        {
          delete m;
        }
      }
    }
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •