Codebeispiel: Kennen Sie Delphi wirklich gut?
PROcedure StepEditor( strgrid: TStringGrid; Step: TStep );
var
sValue, sField: string;
EditorClass: TStepEditorClass;
Herausgeber: TStepEditor;
beginnen
sField := strgrid.Cells[0, strgrid.Selection.Top];
sValue := strgrid.Cells[1, strgrid.Selection.Top];
EditorClass := EditorClassList.Editors[ sField ];
Editor := EditorClass.Create;
Editor.Field := sField;
Editor.Step := Schritt;
Editor.Edit(sValue);
Editor.Free;
strgrid.Cells[ 1, strgrid.Selection.Top ] := sValue;
Ende;
EditorClass ist eine Klasse von Klassen, also eine Klasse von Klassen
Zum Beispiel
TFormClass = Klasse von TForm;
Aber es unterscheidet sich von: TFormClass = Class(TForm); Das sind zwei Konzepte!
Die EditorClassList speichert eine Liste von Klassen;
Editor := EditorClass.Create;
Create ist eine Klassenmethode und keine Objektmethode, sodass aus EditorClass eine Instanz von EditorClass erstellt werden kann
Auffüllen:
TStepEditor = Klasse( TObject )
...
Ende;
TStepEditorClass = Klasse von TStepEditor;
Warum kann der Objektinspektor eine praktische Bearbeitungsumgebung bieten?
Warum haben verschiedene Felder unterschiedliche Auswahlwerte, unterschiedliche Überprüfungsmethoden und Popup-Bearbeitungsfelder?
nein das gleiche? Weil unterschiedliche Eigenschaftseditoren für unterschiedliche Feldtypen registriert sind;
Die Vereinfachung der Registrierungsfunktion des von Delphi bereitgestellten Eigenschafteneditors kann wie folgt beschrieben werden:
RegisteryPropertyEditor( PropertyFieldType, EditorClass );
^Hier ist der Typname, z. B. Bool, Integer usw.
^Hier ist der Klassenname des entsprechenden Editors. Beachten Sie, dass es sich nicht um die Zeichenbeschreibung des Klassennamens handelt.
Wenn der Benutzer bei der tatsächlichen Ausführung auf ein Feld im Objektinspektor klickt,
Delphi sucht intern nach der Editorklasse, die dem Feldtyp entspricht, und erstellt dann eine Instanz der Klasse aus der gefundenen Klasse.
Führen Sie verwandte Vorgänge aus (entscheiden Sie, ob ein Dropdown-Feld vorhanden ist, ob eine Schaltfläche vorhanden ist usw.)
Weitere Artikel