IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 Delphi Discussion :

Conseil de programmation d'une fiche


Sujet :

Delphi

  1. #1
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut Conseil de programmation d'une fiche
    Bonjour à tous,

    Je vais créer une nouvelle fonction dans mon programme permettant à l'utilisateur de réaliser lui même la fiche qu'il souhaite.

    concrètement :
    -Je vais créer une fiche avec un onglet (non supprimable/ non modifiable) où à l'intérieur je pose certain objet (Tedit, Tcombo, Tmemo, etc...)
    L'utilisateur pourra :
    - Ajouter des onglets
    - Poser sur chaque onglet des objets, qu'il souhaite, parmis ceux disponibles
    (les objets seront sous forme de text dans un TlistBox, il choisi un objet et clique sur poser) il pourra les retailler, les placer.
    - chaque Objets doivent être liés à un champs dans une base de donnée, pour que je puisse en suite lors du show de la form :
    - créer dynamiquement les composants dans les onglets apropriés (dimension et taille respectée également)
    - associer ces objets à leur table et champ respectif

    A votre avis :
    - A quoi dois-je faire attention ?
    - Avez-vous des Tutos sur ce principe de fonctionnement ?
    - Comment bien gérer le lien entre la Table qui comportera les objects et leur propriété (align, name, parent, etc..) pour la création dynamique et la table des valeurs de ces champs ?
    - Comment gérer le retaillage et le mouvement des combosants posés par l'utilisateur dans un onglet ?


    Je vous remercie.

    [EDIT]
    Pour le Move and resize j'ai trouvé :
    http://delphi.about.com/library/weekly/aa102505a.htm

  2. #2
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Pour ma part je stockerais les propriété de ta form et de ces objets dans un BLOB sous forme de DFM (un DFM ce n'est que du texte)

  3. #3
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Perso, j'ai maintenu de 2 logiciels (dans 2 sociétés différentes) qui avait exactement cette technologie
    Effectivement, DFM (en mode binaire ou mode texte, ObjectBinaryToText\ObjectTextToBinary)

    la 1ere, DFM brute + Greatis Designer
    la 2nd DFM enregistré sous un XML, un XSLT mixant deux XML pour regénérer la DFM pour l'utilisation (avec tout un système de traçabilité des modifs) cel utilsait aussi TMS Kernel Script (repris de Greatis ?)

    Au final, l'outil ressemblait à Delphi, et peu de client se lançait dans ce travail, il préférait passer par une presta (nous ça nous arrangeait aussi)

    Tu vois avoir dans la Jedi des composants comme le TJvInspector pour créer ton propre outil de Design

    Outil annexe comme TMS Scripter
    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

  4. #4
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Salut,

    Pour la presta en plus, justement c'est aussi ce que je cherche à faire

    Je ne vais évidement pas aller jusqu'a TMS Scripter ou autre outil existant, d'ailleur j'en suis incapable.

    Le coup d'enregistrement du DFM en BLOB me paraît pas mal, mais quand vous dites tous les deux DFM, n'oublions pas que je suis en runtime, ya aucune DFM enfin pour l'utilisateur.
    Est-ce que vous voulez dire que je génére une sorte de fichier INI, 1 section = 1 objets et les valeurs de certaine propriétés et ensuite je fais un ObjectBinaryToText\ObjectTextToBinary ?

    J'ai pas compris le cout du 2ème DFM je vois pas l'intérêt...

    Ce que je dois faire donc :
    1 - l'utilisateur dépose et positionne ses objets
    2 - il valide
    3 - je transforme donc les propriétés en INI
    4 - ensuite j'enregistre en BLOB ce fichier généré puisque c'est du text.

    Mais comment gérer le lien entre les objets et la table ?
    Je pensais qu'au moment ou il vaide (2) je créer les champs dans la table et j'ajoute une propriété dans mon INI pour faire le lien (évidement les objet seront de type DBEdit, ou autre DBmachin...)

    Merci

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 045
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 045
    Points : 40 963
    Points
    40 963
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    sans y réfléchir , juste comme ça , rien ne t'empêche de stocker directement Objets et Liaison "à la dfm" (pas la peine de retransformer en ini je pense) puis lorsque tu crées la forme tu as "juste" a prendre les objets (il doit être assez simple de comprendre la 'syntaxe' du DFM . Plus embêtant , les composants non visuel nécessaires , pour un utilisateur non développeur ça va être chinois (maintenant , s'il sont proposés dans une sorte de palette outils ça doit être faisable) .

    Citation Envoyé par Shailetroll
    Tu dois avoir dans la Jedi des composants comme le TJvInspector pour créer ton propre outil de Design
    penches toi sur l'exemple du TjvInspector , perso je l'ai utilisé a une ou deux reprises avec délice

    Autre piste , aller regarder les sources de l'EDI Lazarus (après tout c'est D7 ) , il doit bien y avoir un "Chargeur/Enregistreur de dfm" .
    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

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Citation Envoyé par BuzzLeclaire Voir le message
    Est-ce que vous voulez dire que je génére une sorte de fichier INI, 1 section = 1 objets et les valeurs de certaine propriétés et ensuite je fais un ObjectBinaryToText\ObjectTextToBinary ?
    Pas INI, le format ne le supportera pas !

    Citation Envoyé par BuzzLeclaire Voir le message
    J'ai pas compris le cout du 2ème DFM je vois
    pas l'intérêt...
    je parlais de DEUX projets différents dans DEUX sociétés différentes
    mais tous les deux ayant les mêmes mécanismes d'écrans générique implémentés très différemment !

    Citation Envoyé par BuzzLeclaire Voir le message
    Mais comment gérer le lien entre les objets et la table ?
    .
    DataField est une propriété des TDBEdit ... tu peux affecter à ce moment le champ d'une table genre personne.nom

    une boucle pour affecter le DataSource en fonction du DataField où tu retires "personne" de personne.nom

    Si une seule table (ou jointure) en jouant sur le Owner et les références publiées cela peut se faire tout seul
    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

  7. #7
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    Pas INI, le format ne le supportera pas !
    Evidement, je ne diis pas le contraire.

    donc j'ai opté pour 2 tables
    1 table qui affiche les enregistrements de l'utilisateur
    1 table qui conserve les propriétés des composants.

    Au niveau de la table qui garde les propriétés, j'utilise des champs pour chaque propriétés, je ne sais pas si je vais transformer cela en 1 seul champs Blob. Je me suis pas encore pencher sur des functions comme ObjectBinaryToText\ObjectTextToBinary.

    Je vous remercie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. crée une fiche dans l'execution du programme
    Par adoulou dans le forum Débuter
    Réponses: 6
    Dernier message: 08/04/2009, 11h54
  2. Réponses: 2
    Dernier message: 19/08/2003, 15h45
  3. Fin de programme dans une procédure
    Par Sinclair dans le forum Langage
    Réponses: 13
    Dernier message: 29/11/2002, 22h30
  4. Image popup d'une fiche à partir d'un TListImage
    Par FW-S dans le forum Composants VCL
    Réponses: 3
    Dernier message: 17/11/2002, 13h42
  5. probléme d'affichage d'une fiche
    Par sb dans le forum Composants VCL
    Réponses: 7
    Dernier message: 29/08/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo