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 :

Modifier une unité de Delphi (FMX.Styles) et faire en sorte qu'elle s'applique


Sujet :

Langage Delphi

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 942
    Billets dans le blog
    66
    Par défaut Modifier une unité de Delphi (FMX.Styles) et faire en sorte qu'elle s'applique
    Bonjour,

    J'ai découvert une lacune dans une unité "standard" (FMX.Styles).
    Après étude et test dans une unité classique dans le répertoire du programme, j'ai voulu modifier l'unité fournie par Embarcadero, donc directement dans le répertoire source (C:\Program Files (x86)\Embarcadero\Studio\xxxx\source)
    Bien sûr, je sais que le fichier est protégé en écriture mais avec Notepad++ en mode administrateur pas de souci
    Le hic c'est que, si le source est bien modifié je n'ai pas le résultat attendu. Certainement un problème de dcu(s) à recompiler mais comment faire (sachant que cette unité est utilisé par FMX.Controls et quelques autres)?
    J'ai soumis le bogue sur le portail qualité mais, en attendant la prochaine version, il serait plus agréable d'utiliser l'unité "standard" que mon unité bidouillée.

    Quelqu'un a déjà eu ce genre de souci ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  2. #2
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 757
    Billets dans le blog
    2
    Par défaut
    Bonjour Sergio,

    Et si tu places ton unité modifiée AVANT les sources FMX dans le Search Path
    Delphi prend peut-être la première unité trouvée dans le chemin de compilation.
    On ne peut pas faire confiance à un code qu'on n'a pas entièrement écrit soi‑même, et encore moins à celui qu'on a écrit entièrement. :aie:

  3. #3
    Invité de passage
    Homme Profil pro
         ​​​  
    Inscrit en
    Décembre 2025
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité :      ​​​  

    Informations forums :
    Inscription : Décembre 2025
    Messages : 101
    Par défaut
    Bonjour,

    Si tu modifies uniquement pour ton projet , place une copie de l'unité styles dans le dossier du projet puis lance la compilation certainement qu'il y aura une erreur du genre unité compilé par une autre version alors il faut recompiler toutes les unités que le compilateurs mentionne donc déplace-les dans le projet.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 942
    Billets dans le blog
    66
    Par défaut
    @XeGregory J'y ai pensé mais pas encore testé.
    @Informt ça aussi je l'ai fait mais non dans le cas de cette unité ce n'est pas suffisant
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 942
    Billets dans le blog
    66
    Par défaut le serpent qui se mord la queue !
    J'ai suivi vos deux suggestions
    Nom : Capture.png
Affichages : 119
Taille : 67,8 Ko
    échec
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    757
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2017
    Messages : 757
    Billets dans le blog
    2
    Par défaut
    Après modifications, la seule solution serait de reconstruire le package FMX. Mais je doute qu’Embarcadero ait laissé accessible le fichier de package nécessaire pour régénérer les DCU.

    On dispose bien des fichiers .bpl de FMX dans le dossier d’installation d’Embarcadero, mais pas des .dpk correspondants.
    Dans ces conditions, il est pratiquement impossible d’ajouter des modifications aux fichiers officiels fournis par Embarcadero.
    On ne peut pas faire confiance à un code qu'on n'a pas entièrement écrit soi‑même, et encore moins à celui qu'on a écrit entièrement. :aie:

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 942
    Billets dans le blog
    66
    Par défaut
    J'ai fait une demande sur le portail Qualité, on verra bien pour la prochaine version
    En attendant j'ai écrit une bidouille à élaguer avant de publier
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 549
    Par défaut
    Salut

    pourquoi avoir modifié le source
    il y a maintenant des possibilité de modifié les class sans intervenir sur le source originale (les helper ou assistant de class)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    TControlHelper = class helper for TControl
          procedure MaModification;
          function DonneMoiLaValeurModif: Integer;
      ....
        end;
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag :resolu:

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 942
    Billets dans le blog
    66
    Par défaut
    Ma demande sur le portail qualité a été validée [ready for validation], donc la prochaine version prendra celle-ci en compte.
    Du fait que cette correction ne s'appliquera certainement pas à la version community je garde ce projet au chaud.

    Néanmoins, pour te répondre anapurna, le helper a été une de mes approches mais la tentative a échoué, la classe étant (A.M.H.A) trop spécifique.
    J'ai réduit les modifications que j'ai faite sur l'unité copiée, mais j'ai encore une partie qui est en double emploi (donc pas encore de publication).
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre Expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 883
    Par défaut
    Hello

    Si tu ne modifies pas l'interface de l'unité, il est possible (quoi que rare) qu'une recompilation au sein du projet (en copiant l'unité dans le dossier et l'incluant explicitement sur le projet) passe. Sachant que c'est sur les styles, elle est utilisée probablement partout dans FMX, donc ça coincera.

    L'autre solution, c'est de redéclarer la classe dans ton projet et te servir de ta version si ça ne touche pas ce qui existe côté RTL ou FMX.

    Après, la demande de correction ou modification est aussi à faire. Par contre ne te réjouis pas trop, le "ready for validation" n'implique pas son intégration dans la prochaine version majeure. Selon le degrés de dangerosité ou de nouveauté ça pourrait apparaître en 13.2, 14.0 ou au delà. Si tu en as besoin plus vite, passe par les chemins de traverse...

  11. #11
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 942
    Billets dans le blog
    66
    Par défaut
    Citation Envoyé par pprem Voir le message
    Si tu ne modifies pas l'interface de l'unité, il est possible (quoi que rare) qu'une recompilation au sein du projet (en copiant l'unité dans le dossier et l'incluant explicitement sur le projet) passe. Sachant que c'est sur les styles, elle est utilisée probablement partout dans FMX, donc ça coincera.
    C'est le cas

    L'autre solution, c'est de redéclarer la classe dans ton projet et te servir de ta version si ça ne touche pas ce qui existe côté RTL ou FMX.
    C'est plus ou moins ce que j'ai fait mais il y a encore des trucs que je dois élaguer

    Après, la demande de correction ou modification est aussi à faire. Par contre ne te réjouis pas trop, le "ready for validation" n'implique pas son intégration dans la prochaine version majeure. Selon le degrés de dangerosité ou de nouveauté ça pourrait apparaître en 13.2, 14.0 ou au delà. Si tu en as besoin plus vite, passe par les chemins de traverse...
    Suis-je trop optimiste ?
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes), D13 (Florence)
    SGBD : Firebird 2.5, 3, 5 et SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Modifier une unité TFrame avec une unité TForm
    Par NGeVtC87 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 23/02/2016, 14h45
  2. Réponses: 6
    Dernier message: 15/05/2013, 17h48
  3. Réponses: 0
    Dernier message: 02/04/2013, 16h26
  4. modifier une page html chargé par gecko en delphi
    Par ammar17 dans le forum Composants VCL
    Réponses: 0
    Dernier message: 11/03/2011, 15h35
  5. [Firebird D7] Modifier une procedure stocké via Delphi
    Par EGI dans le forum Connexion aux bases de données
    Réponses: 4
    Dernier message: 30/03/2005, 15h54

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