Un moyen rapide de changer une propriété sur plusieurs formulaires dans un projet Delphi?

StackOverflow https://stackoverflow.com/questions/441060

  •  22-07-2019
  •  | 
  •  

Question

Je pensais qu'il y avait quelque chose dans GExperts pour le faire, mais je ne le vois pas s'il y en a un.

Je dois modifier la propriété SCALED (de la valeur par défaut TRUE à FALSE) dans chaque formulaire d'un projet contenant environ 100 formulaires différents. Étant donné que la valeur par défaut de SCALED est TRUE, elle n’apparaît pas sous forme de ligne dans le fichier .DFM (lors de la visualisation sous forme de texte). Par conséquent, je ne peux rien obtenir avec GREP (etc).

Quelqu'un peut-il suggérer un moyen rapide de définir cette propriété sous toutes ces formes? Les formulaires sont des sous-classes de différentes classes et je ne souhaite vraiment pas créer une sorte de descendant intermédiaire TForm qui remplace la propriété SCALED - en partie parce que j'ai essayé (brièvement) de le faire et que j'ai découvert que définir la propriété SCALED sur false après la création héritée n'a eu aucune incidence sur le formulaire et sa définition avant la création héritée a provoqué une exception. : -)

Quelqu'un a-t-il des suggestions? Je veux vraiment éviter d'ouvrir tous ces formulaires un par un si je peux y contribuer, ne serait-ce que parce que j'en raterai un!

Était-ce utile?

La solution

À condition que tous vos fichiers DFM ne soient pas binaires, mais textuels (ce qui est une bonne idée, sauf si vous devez être compatibles avec Delphi 4 ou une version antérieure), vous pouvez bien sûr utiliser grep / sed / awk. Le format du DFM n’est pas fixe, et au lieu de

  OldCreateOrder = False
  Scaled = False

il pourrait aussi contenir

  OldCreateOrder = False Scaled = False

Vous pouvez donc grep pour une autre propriété unique de TForm, définie dans tous vos formulaires sur une valeur stockée dans le DFM (OldCreateOrder serait un candidat), et remplacer les lignes par une autre ligne contenant deux propriétés.

Le format sera corrigé lors de la prochaine sauvegarde de ce formulaire dans l'EDI.

Modifier:

Si vos formulaires sont binaires, utilisez l’outil convert.exe du répertoire bin Delphi (utilisez le chemin complet car il existe un autre convert.exe dans Windows) pour convertir le fichier DFM en texte, puis ajoutez la propriété manquante, puis ( facultativement) reconvertir le DFM en binaire. Et si vous n'êtes pas satisfait du format étrange - convertissez le format DFM de texte en fichier binaire et retour en texte, vous obtiendrez un fichier DFM texte correctement formaté. Tout cela est facilement scriptable.

Autres conseils

Je recommanderais de modifier tous vos formulaires pour qu'ils descendent d'un ancêtre commun. Ensuite, dans le futur, vous pourrez simplement changer la classe de base et la réparer partout.

En général, je préfère toujours utiliser une classe descendante personnalisée par rapport à une classe stock que je vais utiliser fréquemment pour cette raison spécifique.

Oui, GExpert inclut un expert "Définir les propriétés du composant". Il a un mode "simulation" pour voir ce qu'il va faire. Cet outil est utile pour désactiver les ensembles de données ou les connexions à la base de données avant de compiler vos applications.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top