Des conteneurs personnalisés pack (ccpack 5)


l'Examen de ce freeware expert qui vous permet de construire visuellement des éléments composites,
CONTENEURS PERSONNALISÉS PACK (CCPACK 5)
qu'est-Ce que des Conteneurs Personnalisés Pack?
CCPack 5 est un freeware package qui vous permet de visuellement, combiner, d'étendre et d'hériter de la VCL conteneurs. Le paquet a été développé par Sergey Orlik, chef de Produit de Inprise bureau de Moscou (la Russie, la C. I. S. et des États Baltes).
CCPack 5 fonctionne avec Delphi/C Builder 5, et est l'évolution de deux systèmes de Delphi/C Builder 3,4 compléments: Formulaires Personnalisés Pack (CFPack) et des Composants Composites Pack (CCPack 4).
Une des utilisations courantes de CCPack 5 est de créer des composants de différents composants:
* CCPack film d'Introduction ('337K)

Téléchargements
* Conteneurs Personnalisés Pack (CCPack 5) pour Delphi/C Builder 5 ('695)
* CCPack 4.5 pour Delphi/C Builder 3 et 4 ('591K)
* CFPack 4.3 pour Delphi/C Builder 4 ('129K)
* CFPack 1.01 pour Delphi/C Builder 3 (l'ancienne et la non-version modifiée) (la'45K)
l'intégralité du code source est fourni et vous pouvez le modifier sans restriction pour tout projets non commerciaux. Laissez savoir à l'auteur si vous souhaitez utiliser ce logiciel dans vos projets commerciaux par e-mail à [email protected] en indiquant le nom de l'outil dans la ligne d'objet.

Un échantillon composite composant
Après avoir installé CCPack, vous êtes prêt pour le premier exemple.
Fermez tous les projets Delphi. Dans le menu 'Fichier' choisissez 'Nouveau...', sélectionnez 'Conteneur Personnalisé' (ou 'Contrôle Composite' dans Delphi 3/4) dans les 'Nouveaux éléments' boîte de dialogue, puis cliquez sur 'OK'. Dans le 'Nouveau Conteneur de la boîte de dialogue' sélectionner 'TFrame', d'écrire 'TFileComposite' dans le 'Nouveau nom de classe' et cliquez sur 'Terminer'.
Un formulaire s'affiche. Sa surface est la surface de votre nouveau Delphi composant. Définissez les propriétés suivantes dans l'Inspecteur d'Objet:
Width = 281
& nbsp & nbsp Hauteur = 164

Ce sera la taille par défaut du composant. Déposez un Panneau sur le formulaire et définissez ses propriétés:
Align = alLeft
& ! & ! & ! & nbsp Largeur = 130
& ! & ! & ! & nbsp BevelOuter = bvNone
& ! & ! & ! & nbsp Caption =
& ! & ! & ! & nbsp Contraintes.MinWidth = 110

Déposer un Séparateur à droite du panneau. Il permettra de s'aligner automatiquement sur le côté du panneau. Déposez un DriveComboBox et un DirectoryListBox sur le panneau et de définir leurs propriétés:
DriveComboBox:
& ! & ! & ! & ! & ! & nbsp Gauche = 0
& ! & ! & ! & ! & ! & nbsp Top = 0
& ! & ! & ! & ! & ! & nbsp Largeur = 130
& ! & ! & ! & ! & ! & nbsp Hauteur = 19
& ! & ! & ! & ! & ! & nbsp Ancres = [akLeft, akTop, akRight]
& ! & ! & ! & nbsp DirectoryListBox:
& ! & ! & ! & ! & ! & nbsp Gauche = 0
& ! & ! & ! & ! & ! & nbsp Top = 19
& ! & ! & ! & ! & ! & nbsp Largeur = 130
& ! & ! & ! & ! & ! & nbsp Hauteur = 145
& ! & ! & ! & ! & ! & nbsp Ancres = [akLeft, akTop, akRight, akBottom]

Cliquez sur le côté droit de la forme, et déposez une FileListBox:
Align = alClient
& ! & ! & ! & nbsp TabOrder = 0

Avec ce que nous avons terminé l'interface visuelle de notre composite composant. Maintenant, il est temps d'ajouter un peu de code pour 'lier' les composants. Double-cliquez sur le DriveComboBox et dans le Changement de gestionnaire d'événement écrire:
procédure TFileComposite.DriveComboBox1Change(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp DirectoryListBox1.En Voiture := DriveComboBox1.Le lecteur
& nbsp & nbsp fin

Double-cliquez sur le DirectoryListBox et dans le Changement de gestionnaire d'événement écrire:
procédure TFileComposite.DirectoryListBox1Change(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp FileListBox1.Répertoire := DirectoryListBox1.Annuaire
& nbsp & nbsp fin

Avec ce que nous avons terminé le comportement de base de notre composite, composante, qui pour l'interface de programmation héritent des propriétés et des méthodes de TFrame (la classe de base que nous avons choisi lors de la création de la composante). Nous allons ajouter un couple de propriétés publiques: nom de fichier et de Répertoire. Dans la déclaration de la classe d'ajouter:
type
& ! & ! & ! & nbsp TFileComposite = classe(TFrame)
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp protégé
& ! & ! & ! & ! & ! & nbsp { déclarations Protégées }
& ! & ! & ! & ! & ! & nbsp fonction GetFileName: string
& ! & ! & ! & ! & ! & nbsp procédure SetFileName(FileName: string)
& ! & ! & ! & ! & ! & nbsp fonction GetDirectory: string

& ! & ! & ! & ! & ! & nbsp procédure SetDirectory(Répertoire: string)
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp { déclarations Publiques }
& ! & ! & ! & ! & ! & nbsp propriété FileName: chaîne de lire GetFileName écrire SetFileName
& ! & ! & ! & ! & ! & nbsp propriété Directory: chaîne de lecture GetDirectory écrire SetDirectory
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & ! & ! & nbsp :

La mise en œuvre est assez simple. Fondamentalement, nous obtenir et définir le nom de fichier de la FileListBox et la propriété du Répertoire de la DirectoryListBox:
function TFileComposite.GetFileName: string
& nbsp & nbsp commencer
& ! & ! & ! & nbsp Résultat := FileListBox1.Nom de fichier
& nbsp & nbsp fin
& nbsp & nbsp procédure TFileComposite.SetFileName(FileName: string)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp FileListBox1.FileName := nom de fichier
& nbsp & nbsp fin
& nbsp & nbsp fonction TFileComposite.GetDirectory: string
& nbsp & nbsp commencer
& ! & ! & ! & nbsp Résultat := DirectoryListBox1.Annuaire
& nbsp & nbsp fin
& nbsp & nbsp procédure TFileComposite.SetDirectory(Répertoire: string)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp DirectoryListBox1.Répertoire := Directory
& nbsp & nbsp fin

Maintenant, nous allons ajouter trois événements: le Changement, Clic et Double clic. Dans la déclaration de la classe d'ajouter:
type
& ! & ! & ! & nbsp TFileComposite = classe(TFrame)
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp privé
& ! & ! & ! & ! & ! & nbsp { Private declarations }
& ! & ! & ! & ! & ! & nbsp FOnChange: TNotifyEvent
& ! & ! & ! & ! & ! & nbsp FOnClick: TNotifyEvent
& ! & ! & ! & ! & ! & nbsp FOnDblClick: TNotifyEvent
& ! & ! & ! & nbsp protégé
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp publié
& ! & ! & ! & ! & ! & nbsp { Publié des déclarations }
& ! & ! & ! & ! & ! & nbsp propriété OnChange: TNotifyEvent lire FOnChange écrire FOnChange
& ! & ! & ! & ! & ! & nbsp propriété surclic (OnClick): TNotifyEvent lire FOnClick écrire FOnClick
& ! & ! & ! & ! & ! & nbsp propriété OnDblClick: TNotifyEvent lire FOnDblClick écrire
& ! & ! & ! & ! & ! & ! & ! & nbsp FOnDblClick
& ! & ! & ! & nbsp fin

Comme vous pouvez le deviner, ces événements sont déclenchés par la Modification, Cliquez sur et DblClick événements de la FileListBox, afin de générer les gestionnaires d'événements correspondant et écrire le code suivant:
procédure TFileComposite.FileListBox1Change(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si Affecté(FOnChange) puis FOnChange(Auto)
& nbsp & nbsp fin
& nbsp & nbsp procédure TFileComposite.FileListBox1Click(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si Affecté(FOnClick) puis FOnClick(Auto)
& nbsp & nbsp fin
& nbsp & nbsp procédure TFileComposite.FileListBox1DblClick(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si Affecté(FOnDblClick) puis FOnDblClick(Auto)
& nbsp & nbsp fin

Si vous vous demandez à propos de la fonction Attribuée, permettez-moi d'expliquer. FOnChange est un champ de type TNotifyEvent, et cela signifie qu'il peut contenir l'adresse d'une procédure d'objet qui prend un 'Sender: TObject' paramètre... ou il peut être Nul, donc nous devons nous assurer que FOnChange n'est pas Nul avant de faire l'appel 'FOnChange(Auto)'. Cependant, la suivante ne fonctionne pas:
si FOnChange <> nil alors ...
La raison en est que la référence FOnChange est prise par le compilateur comme une invocation de la procédure, il points de. Puisque c'est une procédure, il ne retourne pas une valeur de type compatible avec un pointeur (donc on ne peut pas le comparer avec le Néant), mais avant de réaliser cela, le compilateur va trouver que nous avons oublié le paramètre (Expéditeur) dans l'appel à FOnChange... Notre intention n'est pas d'appeler la procédure FOnChange points, mais de savoir si la valeur de FOnChange n'est pas Nul. C'est le but de l'intégré dans la fonction Attribuée ci-dessus.
Pour les fins de l'exemple, ce qu'il est. Vous pouvez installer cet appareil, puis utilisez le composant de la Palette de Composants, ou vous pouvez les inclure dans un projet de test et de créer le composant par un code comme nous l'avons fait dans l'application de test pour vous éviter d'avoir à installer un inutile composant.
Comme vous pouvez le voir, avec CCPack quelqu'un avec peu d'expérience dans la composante écriture peut construire des composants composites rapidement et facilement.

Plus d'informations
Vous pouvez trouver plus d'informations sur CCPack, et trouver d'autres composants à Sergey Orlik site web.
Vous pouvez trouver le code source complet de cet article dans les archives qui accompagne le Pascal Newsletter #24









Des conteneurs personnalises pack (ccpack 5)


Des conteneurs personnalises pack (ccpack 5) : Plusieurs milliers de conseils pour vous faciliter la vie.


l'Examen de ce freeware expert qui vous permet de construire visuellement des elements composites,
CONTENEURS PERSONNALISES PACK (CCPACK 5)
qu'est-Ce que des Conteneurs Personnalises Pack?
CCPack 5 est un freeware package qui vous permet de visuellement, combiner, d'etendre et d'heriter de la VCL conteneurs. Le paquet a ete developpe par Sergey Orlik, chef de Produit de Inprise bureau de Moscou (la Russie, la C. I. S. et des Etats Baltes).
CCPack 5 fonctionne avec Delphi/C Builder 5, et est l'evolution de deux systemes de Delphi/C Builder 3,4 complements: Formulaires Personnalises Pack (CFPack) et des Composants Composites Pack (CCPack 4).
Une des utilisations courantes de CCPack 5 est de creer des composants de differents composants:
* CCPack film d'Introduction ('337K)

Telechargements
* Conteneurs Personnalises Pack (CCPack 5) pour Delphi/C Builder 5 ('695)
* CCPack 4.5 pour Delphi/C Builder 3 et 4 ('591K)
* CFPack 4.3 pour Delphi/C Builder 4 ('129K)
* CFPack 1.01 pour Delphi/C Builder 3 (l'ancienne et la non-version modifiee) (la'45K)
l'integralite du code source est fourni et vous pouvez le modifier sans restriction pour tout projets non commerciaux. Laissez savoir a l'auteur si vous souhaitez utiliser ce logiciel dans vos projets commerciaux par e-mail a [email protected] en indiquant le nom de l'outil dans la ligne d'objet.

Un echantillon composite composant
Apres avoir installe CCPack, vous etes pret pour le premier exemple.
Fermez tous les projets Delphi. Dans le menu 'Fichier' choisissez 'Nouveau...', selectionnez 'Conteneur Personnalise' (ou 'Controle Composite' dans Delphi 3/4) dans les 'Nouveaux elements' boîte de dialogue, puis cliquez sur 'OK'. Dans le 'Nouveau Conteneur de la boîte de dialogue' selectionner 'TFrame', d'ecrire 'TFileComposite' dans le 'Nouveau nom de classe' et cliquez sur 'Terminer'.
Un formulaire s'affiche. Sa surface est la surface de votre nouveau Delphi composant. Definissez les proprietes suivantes dans l'Inspecteur d'Objet:
Width = 281
& nbsp & nbsp Hauteur = 164

Ce sera la taille par defaut du composant. Deposez un Panneau sur le formulaire et definissez ses proprietes:
Align = alLeft
& ! & ! & ! & nbsp Largeur = 130
& ! & ! & ! & nbsp BevelOuter = bvNone
& ! & ! & ! & nbsp Caption =
& ! & ! & ! & nbsp Contraintes.MinWidth = 110

Deposer un Separateur a droite du panneau. Il permettra de s'aligner automatiquement sur le cote du panneau. Deposez un DriveComboBox et un DirectoryListBox sur le panneau et de definir leurs proprietes:
DriveComboBox:
& ! & ! & ! & ! & ! & nbsp Gauche = 0
& ! & ! & ! & ! & ! & nbsp Top = 0
& ! & ! & ! & ! & ! & nbsp Largeur = 130
& ! & ! & ! & ! & ! & nbsp Hauteur = 19
& ! & ! & ! & ! & ! & nbsp Ancres = [akLeft, akTop, akRight]
& ! & ! & ! & nbsp DirectoryListBox:
& ! & ! & ! & ! & ! & nbsp Gauche = 0
& ! & ! & ! & ! & ! & nbsp Top = 19
& ! & ! & ! & ! & ! & nbsp Largeur = 130
& ! & ! & ! & ! & ! & nbsp Hauteur = 145
& ! & ! & ! & ! & ! & nbsp Ancres = [akLeft, akTop, akRight, akBottom]

Cliquez sur le cote droit de la forme, et deposez une FileListBox:
Align = alClient
& ! & ! & ! & nbsp TabOrder = 0

Avec ce que nous avons termine l'interface visuelle de notre composite composant. Maintenant, il est temps d'ajouter un peu de code pour 'lier' les composants. Double-cliquez sur le DriveComboBox et dans le Changement de gestionnaire d'evenement ecrire:
procedure TFileComposite.DriveComboBox1Change(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp DirectoryListBox1.En Voiture := DriveComboBox1.Le lecteur
& nbsp & nbsp fin

Double-cliquez sur le DirectoryListBox et dans le Changement de gestionnaire d'evenement ecrire:
procedure TFileComposite.DirectoryListBox1Change(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp FileListBox1.Repertoire := DirectoryListBox1.Annuaire
& nbsp & nbsp fin

Avec ce que nous avons termine le comportement de base de notre composite, composante, qui pour l'interface de programmation heritent des proprietes et des methodes de TFrame (la classe de base que nous avons choisi lors de la creation de la composante). Nous allons ajouter un couple de proprietes publiques: nom de fichier et de Repertoire. Dans la declaration de la classe d'ajouter:
type
& ! & ! & ! & nbsp TFileComposite = classe(TFrame)
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp protege
& ! & ! & ! & ! & ! & nbsp { declarations Protegees }
& ! & ! & ! & ! & ! & nbsp fonction GetFileName: string
& ! & ! & ! & ! & ! & nbsp procedure SetFileName(FileName: string)
& ! & ! & ! & ! & ! & nbsp fonction GetDirectory: string

& ! & ! & ! & ! & ! & nbsp procedure SetDirectory(Repertoire: string)
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp { declarations Publiques }
& ! & ! & ! & ! & ! & nbsp propriete FileName: chaîne de lire GetFileName ecrire SetFileName
& ! & ! & ! & ! & ! & nbsp propriete Directory: chaîne de lecture GetDirectory ecrire SetDirectory
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & ! & ! & nbsp :

La mise en œuvre est assez simple. Fondamentalement, nous obtenir et definir le nom de fichier de la FileListBox et la propriete du Repertoire de la DirectoryListBox:
function TFileComposite.GetFileName: string
& nbsp & nbsp commencer
& ! & ! & ! & nbsp Resultat := FileListBox1.Nom de fichier
& nbsp & nbsp fin
& nbsp & nbsp procedure TFileComposite.SetFileName(FileName: string)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp FileListBox1.FileName := nom de fichier
& nbsp & nbsp fin
& nbsp & nbsp fonction TFileComposite.GetDirectory: string
& nbsp & nbsp commencer
& ! & ! & ! & nbsp Resultat := DirectoryListBox1.Annuaire
& nbsp & nbsp fin
& nbsp & nbsp procedure TFileComposite.SetDirectory(Repertoire: string)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp DirectoryListBox1.Repertoire := Directory
& nbsp & nbsp fin

Maintenant, nous allons ajouter trois evenements: le Changement, Clic et Double clic. Dans la declaration de la classe d'ajouter:
type
& ! & ! & ! & nbsp TFileComposite = classe(TFrame)
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp prive
& ! & ! & ! & ! & ! & nbsp { Private declarations }
& ! & ! & ! & ! & ! & nbsp FOnChange: TNotifyEvent
& ! & ! & ! & ! & ! & nbsp FOnClick: TNotifyEvent
& ! & ! & ! & ! & ! & nbsp FOnDblClick: TNotifyEvent
& ! & ! & ! & nbsp protege
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp public
& ! & ! & ! & ! & ! & nbsp :
& ! & ! & ! & nbsp publie
& ! & ! & ! & ! & ! & nbsp { Publie des declarations }
& ! & ! & ! & ! & ! & nbsp propriete OnChange: TNotifyEvent lire FOnChange ecrire FOnChange
& ! & ! & ! & ! & ! & nbsp propriete surclic (OnClick): TNotifyEvent lire FOnClick ecrire FOnClick
& ! & ! & ! & ! & ! & nbsp propriete OnDblClick: TNotifyEvent lire FOnDblClick ecrire
& ! & ! & ! & ! & ! & ! & ! & nbsp FOnDblClick
& ! & ! & ! & nbsp fin

Comme vous pouvez le deviner, ces evenements sont declenches par la Modification, Cliquez sur et DblClick evenements de la FileListBox, afin de generer les gestionnaires d'evenements correspondant et ecrire le code suivant:
procedure TFileComposite.FileListBox1Change(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si Affecte(FOnChange) puis FOnChange(Auto)
& nbsp & nbsp fin
& nbsp & nbsp procedure TFileComposite.FileListBox1Click(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si Affecte(FOnClick) puis FOnClick(Auto)
& nbsp & nbsp fin
& nbsp & nbsp procedure TFileComposite.FileListBox1DblClick(Sender: TObject)
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si Affecte(FOnDblClick) puis FOnDblClick(Auto)
& nbsp & nbsp fin

Si vous vous demandez a propos de la fonction Attribuee, permettez-moi d'expliquer. FOnChange est un champ de type TNotifyEvent, et cela signifie qu'il peut contenir l'adresse d'une procedure d'objet qui prend un 'Sender: TObject' parametre... ou il peut etre Nul, donc nous devons nous assurer que FOnChange n'est pas Nul avant de faire l'appel 'FOnChange(Auto)'. Cependant, la suivante ne fonctionne pas:
si FOnChange <> nil alors ...
La raison en est que la reference FOnChange est prise par le compilateur comme une invocation de la procedure, il points de. Puisque c'est une procedure, il ne retourne pas une valeur de type compatible avec un pointeur (donc on ne peut pas le comparer avec le Neant), mais avant de realiser cela, le compilateur va trouver que nous avons oublie le parametre (Expediteur) dans l'appel a FOnChange... Notre intention n'est pas d'appeler la procedure FOnChange points, mais de savoir si la valeur de FOnChange n'est pas Nul. C'est le but de l'integre dans la fonction Attribuee ci-dessus.
Pour les fins de l'exemple, ce qu'il est. Vous pouvez installer cet appareil, puis utilisez le composant de la Palette de Composants, ou vous pouvez les inclure dans un projet de test et de creer le composant par un code comme nous l'avons fait dans l'application de test pour vous eviter d'avoir a installer un inutile composant.
Comme vous pouvez le voir, avec CCPack quelqu'un avec peu d'experience dans la composante ecriture peut construire des composants composites rapidement et facilement.

Plus d'informations
Vous pouvez trouver plus d'informations sur CCPack, et trouver d'autres composants a Sergey Orlik site web.
Vous pouvez trouver le code source complet de cet article dans les archives qui accompagne le Pascal Newsletter #24


Des conteneurs personnalisés pack (ccpack 5)

Des conteneurs personnalisés pack (ccpack 5) : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation