2010-09-20 7 views
2

J'ai fait un simple concepteur de formulaires en Delphi, faites glisser et déposer un bouton sur le formulaire et il dessine, mais la chose est que je ne peux pas enregistrer/charger ce projet car je ne sais pas que je pourrais être abel pour l'enregistrer au fichier .rc et le charger à partir de là?Form Designer Sauvegarder et charger

Répondre

3

Cela dépend de la façon dont vous avez programmé votre concepteur de formulaires. Dans les formulaires créés dans le concepteur de Delphi, tous les composants (et sous-composants) sont référencés à partir de la propriété de tableau TForm.Components. Tous les contrôles sont également référencés dans la propriété tableau TForm.Controls (si vous supprimez un contrôle conteneur, tous ses sous-contrôles sont également détruits). Si vous avez suivi ce modèle, tout ce que vous avez à faire est de surveiller les ajouts au tableau TForm.Components (en utilisant peut-être une méthode TForm.Notification surchargée) et en utilisant ces données pour construire le fichier de votre formulaire persistant.

1

Delphi stocke la mise en page dans le fichier * .dfm. Vous pouvez utiliser sa structure pour sauvegarder vos projets. Le fichier est textuel et lisible par les humains. Il n'est pas difficile d'analyser un fichier comme celui-ci, une ligne par une. Si vous avez besoin de plus d'aide, demandez-le.

+0

sa non delphi chose, est un indépendant total du projet de delphi, im faire un concepteur de forme de mon owen, d'être abel pour sauver la forme comme fichier .rc et de l'utiliser dans un C++ ou d'un projet C ou même ASM Delphi n'a rien à voir avec ça, juste le langage de programmation en utilisant – killercode

+1

Je me suis rendu compte que vous construisez le concepteur de formulaire pour autre chose. Je suggère que vous sauvegardiez vos formes dans le fichier qui ont la structure comme le fichier dephis * .dfm. Vous utilisez ce fichier dans votre application pour enregistrer/charger des formulaires. Tout en économisant, vous pouvez enregistrer à la fois * .dfm et tout autre type de fichier. –

0

Si vous souhaitez simplement enregistrer le formulaire que vous avez conçu dans votre concepteur, utilisez quelque chose comme TFileStream pour créer le fichier RC lorsque l'utilisateur enregistre. Vous pourriez être mieux avec votre propre format de fichier pour vos formulaires, avec l'option d'exporter en tant que fichier RC, car les fichiers RC ne sont pas vraiment utiles pour stocker les informations de temps de conception dont vous avez besoin.

+0

le problème est que je ne sais pas comment faire cela, que dois-je faire pour obtenir les contrôles nouvellement créés? et leurs tailles? Je n'ai aucun problème avec l'enregistrement des données dans le fichier, mais le problème est de savoir comment générer ces données – killercode

+1

Le problème réel est votre question ne fournit pas assez d'informations sur la façon dont vous faites ce concepteur, comment vous suivez l'information sur les contrôles que vous créez, etc. Par exemple, il semble que vous créiez simplement des contrôles et que vous les placiez dans un formulaire sans aucun moyen de garder une trace de ce que vous créez. Cela ne semble pas très efficace. Ce que vous voulez faire, c'est diviser vos questions afin qu'elles soient beaucoup plus spécifiques, et ensuite nous pouvons vous donner des réponses mieux éclairées. – GrandmasterB

2

La VCL contient des méthodes d'utilisation de sa prise en charge DFM intégrée. Il y a un échantillon dans the Delphi 2009 documentation for ObjectBinaryToText; Je suppose que cela fonctionne aussi pour D7. Et IIRC il y avait déjà un fragment de code pour ComponentToString dans l'aide D5 - recherche de ObjectBinaryToText.

+1

Il y a aussi la fonction symétrique - ObjectTextToBinary. Les deux ont un exemple de conversion fonctionnant pleinement dans l'aide D7. –

1

Vous pouvez utiliser quelque chose comme delphi .DFM. Compter tous les objets, puis lire leurs attributs et les écrire dans un fichier. Exemple de code:

For i:0 To Form1.ComponentsCount-1 Do Begin 
    // Read Component Attributes And Write Them In Your Format 
End; 
+0

ty, maintenant je sais exactement quoi faire :) – killercode

Questions connexes