코드 예: 정말 델파이를 잘 알고 계시나요?
PRocedure StepEditor( strgrid: TStringGrid; 단계: TStep );
var
sValue, sField: 문자열;
EditorClass: TStepEditorClass;
편집기: TStepEditor;
시작하다
sField := strgrid.Cells[0, strgrid.Selection.Top];
sValue := strgrid.Cells[1, strgrid.Selection.Top];
EditorClass := EditorClassList.Editors[ sField ];
에디터 := EditorClass.Create;
Editor.Field := sField;
Editor.Step := 단계;
Editor.Edit(sValue);
편집자.무료;
strgrid.Cells[ 1, strgrid.Selection.Top ] := sValue;
끝;
EditorClass는 Class of Class, 즉 클래스의 클래스입니다.
예를 들어
TFormClass = TForm 클래스;
그러나 다음과 다릅니다. TFormClass = Class(TForm) 이것은 두 가지 개념입니다!
EditorClassList는 클래스 목록을 저장합니다.
에디터 := EditorClass.Create;
Create는 객체 메서드가 아닌 클래스 메서드이므로 EditorClass에서 EditorClass의 인스턴스를 생성할 수 있습니다.
다시 채우다:
TStepEditor = 클래스( TObject )
...
끝;
TStepEditorClass = TStepEditor의 클래스;
Object Inspector가 편리한 편집 환경을 제공할 수 있는 이유는 무엇입니까?
필드마다 선택 값, 확인 방법, 팝업 편집 상자가 다른 이유는 무엇입니까?
아니 똑같아? 서로 다른 필드 유형에 따라 서로 다른 속성 편집기가 등록되기 때문입니다.
델파이에서 제공하는 속성 편집기 등록 기능을 단순화하면 다음과 같이 설명할 수 있습니다.
RegisteryPropertyEditor( PropertyFieldType, EditorClass );
^Bool, Integer 등과 같은 유형 이름은 다음과 같습니다.
^해당 에디터의 클래스 이름입니다. 클래스 이름의 문자 설명이 아닙니다.
실제로 실행 시 사용자가 Object Inspector의 필드를 클릭하면
Delphi는 내부적으로 필드 유형에 해당하는 편집기 클래스를 검색한 다음 발견된 클래스에서 클래스의 인스턴스를 생성합니다.
관련 작업 수행(드롭다운 상자 유무, 버튼 유무 등 결정)
더 많은 기사