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

Langage Delphi Discussion :

une seule source pour deux programmes


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut une seule source pour deux programmes
    Bonjour,

    Est-il possible, à partir d'un projet existant, d'en faire un deuxième, avec un affichage légèrement différent tout en conservant une unique source de code pascal ?

    J'ai développé un applicatif pour un club, mais certains adhérents utilisent encore un moniteur cathodique 17", avec une définition affichant les caractères en gros (problèmes de vue ?)

    Du coup, les formes sont affublées d'ascenseurs, ce qui est gênant pour accéder aux boutons se trouvant en bas et à droite des formes.

    J'ai dupliqué mon applicatif et modifié certaines formes pour les réduire un peu. Ce sont les seules modifications apportées. Les noms sont identiques, les traitements aussi. Mais à chaque modif dans le source de l'original, je ne dois pas oublier de faire les mêmes modifs dans l'applicatif "réduit", ce qui devient vite contraignant et aussi un peu risqué.

    Ce que j'aimerai, en fait, c'est pouvoir qualifier, dans l'applicatif "réduit", toutes les unités .pas de l'applicatif original.

    Je n'ai rien trouvé ici ni sur le web répondant à mon soucis.

    Je suis sous "BORLAND DELPHI ENTREPRISE VERSION 6"

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 577
    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 577
    Points : 25 225
    Points
    25 225
    Par défaut
    C'est même un principe de développement ! le MVC être capable d'exploiter le même modèle de Données avec plusieurs Vues différentes !

    C'est les polices de l'OS par défaut qui sont en mode "accessibilité" ?
    Voir la propriété Scaled, PixelsPerInch ... ça peut donner des informations sur le mode d'affichage !

    En calant bien Align et Anchors, ça devrait passer, sauf si la résolution est vraiment trop réduite (genre 800x600) et que tu as fais de grand écrans !

    Tu n'es pas obligé de faire plusieurs projets !
    Comme tu le dit, dupliquer le code, c'est pénible et un risque d'erreur !

    Au sein du même projet, tu peux faire de l'héritage de fenêtre !
    Bon, d'habitude, je ne le pratique, je trouve l'héritage de DFM assez moche, mais ton cas pourrait être rapidement résolu ainsi et la version héritée n'auront pas de code, juste une variante de DFM

    Tu fais ta fenêtre en résolution normale, puis tu fais Fichier > Nouveau > Autres, Onglet "MonProjet", cela liste les fenêtres, tu choisis la fenêtre à dupliquer, tu modifies le Design pour la résolution zoom

    Dans ton programme, tu as du code genre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MaFen := TMaFen.Create(nil);
    MaFen.Show()
    ...
    tu le remplaces par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ModeZoom then
      MaFen := TMaFenZoom.Create(nil);
    else
      MaFen := TMaFen.Create(nil);
    MaFen.Show();
    J'ai toujours trouvé dommage que l'on ne puisse pas associer plusieurs DFM à une classe de TForm
    Cela aurait été possible avec Factory de choisir tel ou telle DFM lors du Contructeur !
    Il est possible de le faire manuellement avec CreateNew, mais il est pénible de gérer ses DFM !
    Je n'ai jamais trouvé quand intégré une DFM sans code, pourtant, on devrait pouvoir faire le design des fenêtres sans forcer y attacher une classe !


    Si je me souviens bien, le Module de Traduction fonctionne un peu sur ce principe, autant de DFM que de langue ...

  3. #3
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 235
    Points : 8 504
    Points
    8 504
    Par défaut
    En jouant avec les propriétés Align, Anchors etc...
    Cela ne suffit pas ?

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Merci pour vos réponses.

    J'ai posé cette question parce que ça m'intéresserait de pouvoir faire ainsi, car :

    - je suis un autodidacte, et je ne maîtrise pas bien, et j'aimerai bien trouver une solution qui ne me demande pas trop de modifications (il y a 21 unités .pas). Il m'est égal d'avoir 2 fois les mêmes (ou presque) fichiers (vu le nombre très réduits de programmes que j'ai développé).
    Par contre, est-ce que ces tests et conditions ajoutés au programme ne vont pas le faire grossir ?

    - j'ai déjà créé les formes réduites, ça marche, mais c'est un peu pénible de faire les mêmes modifs sur 2 projets

    - Il m'est arrivé (mais je ne suis sûr de rien) de copier tout un projet dans un dossier à part, et de me rendre compte que le source que je croyais modifier (celui du nouveau dossier) était en fait le source d'origine. D'où l'idée de ma question : si ça peut le faire contre mon (plein) gré, cela doit pouvoir se faire.
    Pour remédier à mon problème et travailler sur les soucres du nouveau dossier, j'avais dû modifier (ou supprimer ?) un fichier .dsk.

    Mais là, je n'ai pas ce type de fichier.
    Et en "jouant" sur l'option "projet|option|repertoires" ?

  5. #5
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 474
    Points : 3 097
    Points
    3 097
    Par défaut
    si c'est juste pour ce problème d'ascenseurs, la solution est toute simple.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFormAdaptee.FormCreate(Sender: TObject);
    begin
      inherited;
      if Screen.PixelsPerInch <> PixelsPerInch then
      begin
         ScaleBy(Screen.PixelsPerInch, PixelsPerInch);
      end;
    end;
    Les fenêtres adapteront leur taille en fonction du DPI en cours

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 23
    Points : 16
    Points
    16
    Par défaut
    Bon, voilà, j'ai trouvé une solution qui me convient parfaitement. Je précise qu'il ne s'agit pas d'un travail dans un cadre professionnel, cette solution serait sans nul doute considérée comme bancale.

    J'ai recopié les fichiers des 5 formes qui ne tenaient pas entièrement dans l'écran (dfm, dcu et dof) en leur ajoutant un caractère en suffixe, puis je me suis fait un petit programme batch qui change les noms des ces formes, selon que je veux travailler sur les formats normaux ou réduits. Cela demande une seconde et fonctionne parfaitement.
    Je n'ai plus à me soucier si j'ai bien reporté telle ou telle modif dans tous les sources.
    Il était important que la taille des composants et des caractères ne soient pas réduits. J'ai juste eu à réduire la largeur de quelques DBGrids. Il y a donc une colonne ou deux qui ne sont plus affichées directement, l'ascenseur est là pour y remédier

    Nom : Image_Max.jpg
Affichages : 56
Taille : 384,2 Ko

    Nom : Image_Min.jpg
Affichages : 61
Taille : 355,9 Ko

    Merci pour vos réponses, je vais quand même étudier ces possibilités. Dans l'urgence, j'ai pratiqué avec ce que je maîtrise le mieux.

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/09/2012, 00h37
  2. Affichage d'une seule boite pour liste programmes
    Par goofyto8 dans le forum Windows XP
    Réponses: 2
    Dernier message: 28/11/2009, 13h56
  3. une seul etude pour deux systeme presque similaire.
    Par elfive dans le forum Cas d'utilisation
    Réponses: 1
    Dernier message: 17/04/2009, 13h21
  4. Une seule déclaration pour deux fiches
    Par Général03 dans le forum C++Builder
    Réponses: 12
    Dernier message: 29/08/2007, 10h29
  5. Réponses: 8
    Dernier message: 01/12/2006, 09h05

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