Précédent   Forum du club des développeurs et IT Pro > C et C++ > Outils pour C & C++ > C++Builder
C++Builder Environnement de développement RAD C++Builder. Avant de poster -> F.A.Q C++Builder, Sources C++Builder
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/11/2012, 06h22   #1
Socrat
Candidat au titre de Membre du Club
 
Inscription : 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'
Socrat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2012, 10h30   #2
ShaiLeTroll
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 9 202
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 32
Localisation : France

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

Informations forums :
Inscription : juillet 2006
Messages : 9 202
Points : 13 255
Points : 13 255
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é !
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web