Bonjour,
Comment on relie un TImage a un champ blob d'une table, par liveBinding ?
Cordialement
André
Bonjour,
Comment on relie un TImage a un champ blob d'une table, par liveBinding ?
Cordialement
André
Bonjour,
le plus simplement qu'il soit, à partir du moment où l'image est dans le blob de la BDD
ceci est attaché à mon tutoriel FMX+Livebindings+BDD à paraitre bientôt (pressés de le lire ? faites un tour dans mon blog DVP je vous y propose une lecture "privée")
avec le concepteur visuel cela donne ceci
sans concepteur visuel il faut ajouter à la liste des Liaisons (BindingsList) un LinkPropertyToFieldBitmap
[Edit] dans cet exemple la source de données (une Query) est en lecture seule donc la la liaison est en sens unique source vers composant, elle eut été en lecture écriture (ajout et implémentation des SQLs d'un UPDateObject) la liaison aurait été bidirectionnelle.
N.B. pour information le tutoriel indiqué est en cours de relecture technique, un autre tutoriel en rédaction proposera de créer un composant TImagePathName qui permet de lier le nom d'un fichier image contenu dans un champ (ou pas) à un TImage (c'est avec une version de ce dernier que j'ai rajouté les images de pochette, données qui n'existaient pas dans la base initiale)
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonjour,
J'essaye d'enregistrer une image
pour enregistrer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TfOptions.bLogoClick(Sender: TObject); var od :TOpenDialog; begin od:= TOpenDialog.Create(self); try if od.Execute then begin ImageLogo.Bitmap.LoadFromFile(od.FileName); end; finally od.Free; end; end;
J'ai essayé avec un BinNavigator, pas mieux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part if fdQryIdentite.State in [dsEdit,dsInsert] then fdQryIdentite.Post;
J'ai ajouté un FDUpdatesql pas mieux.
Une idée ?
Cordialement
Bonjour,
C'est un peu flou ! mais la première question l'était aussi puisqu'il n'était pas indiqué que c'était du bidirectionnel qu'il fallait, ni d'ailleurs s'il s'agit de FMX ou VCL
charger l'image ok ça j'ai compris , par contre quel est/sont les clauses du UpdateSQL ?
Si je me souviens bien du programme que j'ai fait pour implémenter mes pochettes (il faut que je le retrouve) il manque/faut la création d'un blobstream et l'affectation de ce dernier au paramètre (la colonne image) dans l'évènement beforePost
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonjour,
pour répondre complètement à la question, n'ayant pas retrouvé le programme que j'avais utilisé je l'ai refait (différemment j'en ai peur !)
donc, voici l'image écran (FMX) de ce programme
et les sources et la base de données dans le zip joint.
Non, les livebindings ne font pas tout pour preuve le code nécessaire.
Il est à remarquer que le composant TImage n'est pas bidirectionnel (LinkPropertyToFieldBitmap ne propose pas de ParseFormat) et je n'ai pas trouver la manière de passer par un TBindLink qui aurait peut être permis de le faire.
MVP Embarcadero
Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
SGBD : Firebird 2.5, 3, SQLite
générateurs États : FastReport, Rave, QuickReport
OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd
Bonsoir
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 procedure TfOptions.bLogoClick(Sender: TObject); var od :TOpenDialog; begin od:= TOpenDialog.Create(self); try if od.Execute then begin ImageLogo.Bitmap.LoadFromFile(od.FileName); if not (fdQryIdentite.State in [dsEdit,dsInsert]) then fdQryIdentite.Edit; (fdQryIdentite.FieldByName('logo') as TBlobField).LoadFromFile(od.Filename); end; finally od.Free; end; end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager