Exemple de code : Connaissez-vous vraiment bien Delphi ?
PRocedure StepEditor( strgrid: TStringGrid; Étape: TStep );
var
sValeur, sChamp : chaîne ;
EditorClass : TStepEditorClass ;
Editeur : TStepEditor ;
commencer
sField := strgrid.Cells[0, strgrid.Selection.Top];
sValue := strgrid.Cells[1, strgrid.Selection.Top];
EditorClass := EditorClassList.Editors[sField];
Éditeur := EditorClass.Create;
Editeur.Field := sField;
Editor.Step := Étape ;
Editeur.Edit(sValue);
Éditeur.Gratuit ;
strgrid.Cells[ 1, strgrid.Selection.Top ] := sValue;
fin;
EditorClass est une classe de classe, c'est-à-dire une classe de classes
Par exemple
TFormClass = Classe de TForm ;
Mais c'est différent de : TFormClass = Class(TForm); Ce sont deux concepts !
EditorClassList stocke une liste de classes ;
Éditeur := EditorClass.Create;
Create est une méthode de classe, pas une méthode objet, donc une instance de EditorClass peut être créée à partir de EditorClass
Remplir:
TStepEditor = Classe (TObject)
...
Fin;
TStepEditorClass = Classe de TStepEditor ;
Pourquoi l'Inspecteur d'objets peut-il fournir un environnement d'édition pratique ?
Pourquoi différents champs ont-ils des valeurs de sélection différentes, des méthodes de vérification différentes et des zones d'édition contextuelles ?
non pareil ? Parce que différents éditeurs immobiliers sont enregistrés selon différents types de champs ;
La simplification de la fonction d'enregistrement de l'éditeur de propriétés fournie par Delphi peut être décrite comme suit :
RegisteryPropertyEditor( PropertyFieldType, EditorClass );
^Voici le nom du type, tel que Bool, Integer, ... etc.
^Voici le nom de classe de l'éditeur correspondant. Notez qu'il ne s'agit pas de la description des caractères du nom de classe.
Lors de l'exécution réelle, lorsque l'utilisateur clique sur un champ dans l'inspecteur d'objets,
Delphi recherche en interne la classe d'éditeur correspondant au type de champ ; puis crée une instance de la classe à partir de la classe trouvée ;
Effectuer les opérations associées (décider s'il y a une liste déroulante, s'il y a un bouton, etc.)
Plus d'articles