Bonjour,
Je viens de publier un article sur un usage original des DFM de Delphi.
Le code est compatible Delphi 6 / Delphi XE2
Delphi et les DFM
Bonjour,
Je viens de publier un article sur un usage original des DFM de Delphi.
Le code est compatible Delphi 6 / Delphi XE2
Delphi et les DFM
Dans un projet, je stockais des bout juste la section d'un panel sous format DFM que j'affichais via ReadComponent, ainsi selon le client, cela n'utilisait pas le même DFM, ainsi les DBEdit, DBCheckBox affichait pas les mêmes colonnes, la DB elle contenait tout donc bcp de colonne inutile
3 Clients dont 3 fichier DFM, à l'origine un site PHP qui était à l'origine des données devait me fournir le DFM construit via Smarty+Template (le Directeur, un peu moqueur, l'avait surnommé le Projet X27) mais cela n'a jamais été codé (lol, le directeur l'avait prédit) donc je me tappais les modif des DFM à la mano, comme elle ne contenait pas de TForm et pas de .PAS, fallait que je bidouille si je voulais les modifier via l'IDE
Heureusement il y avait DFM Editor, et tout un tas de DFM Edit comme celui de Olivier Dahan
Je conservais le fichier sous format DFM et non en format binaire ressource, via ObjectTextToBinary pour la conversion ComponentToString et StringToComponent inspiré d'un exempde de l'aide D6
Dans un autre projet, la DB aussi était variable, heureusement car bcp plus de client, entre 500 et 1500 colonnes (données médicales genre gêne, virus ...), chacun n'ayant quasiment rien en commun
un XML décrivait les colonnes, un autre XML décrivait l'écran, puis un XSLT mélangeait tout ça pour créer une DFM, le DFM était stocké en DB
Les XML était stocké aussi en DB et pouvait évolué dans le temps
On a évoqué cela dans Gestion complète d'une TreeView: ajout de noeuds, records et sauvegarde du tout en sauvegardant le TTreeView sous forme de DFM via WriteComponent plus à la fin du fichier cela stockait une série de record sérialisé issu des Data, et inversement, reprise via LoadComponent et rétablissement des Data
Le fichier BDS.dmt ou Delphi32.dmt de Utilisation des modèles de menu utilise aussi le format DFM, ils doivent l'utiliser plus souvent que l'on le croit
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
Si l'on remplace la ligne "{$R *.DFM}" du .pas par le contenu du .dfm, a t'on le même résultat au final ?
PS : entre PT et SLT je ne sais pas lequel est le plus calé en Delphi.
$R ... c'est une directive pour le compilateur qu'il doit injecter une ressource dans l'exe
peut-être avec une resourcestring, tu pourrais stocker une petite DFM mais ça serait pas très beau
ne pas confondre avec $I qui injecte le fichier mentionné à l'endroit de la directive
PS : Moi, je dirais que c'est celui qui a écrit un livre : Delphi 7 Studio![]()
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
non tu obtiendrais une erreur de compilation
{$R ...} permet de lier une ressource à l'exécutable. Normalement c'est un fichier .RES (qui n'est pas propre à Delphi). Tu peux créer un .RES par compilation d'un script .RC avec BRCC32, ça permet d'inclure les différents types de ressource supportés par Windows (BITMAP, FONT, STRING, DIALOG...)
Si le $R fait référence à un .DFM (ou .FMX pour FireMonkey), il est "compilé" (en fait converti du format texte au format binaire) et inséré comme ressource RT_RCDATA.
Moi évidemmentmais Shai devient pas mauvais avec le temps...je me souviens de ses débuts, il a fait du chemin !
OK donc pas touche au $R !
PT a écrit un livre, certes, mais combien d'encyclopédies Universadelphis sont inscrites en dur dans la ROM de SLT ?![]()
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
Partager