代码示例:你是真的对Delphi很了解么?
Procedure StepEditor( strgrid: TStringGrid; Step: TStep );var sValue, sField: string; EditorClass: TStepEditorClass; Editor: TStepEditor;begin 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 := Step; Editor.Edit( sValue ); Editor.Free; strgrid.Cells[ 1, strgrid.Selection.Top ] := sValue;end;
EditorClass 是一个Class of Class, 也就是类的类比如 TFormClass = Class of TForm;但是不同于:TFormClass = Class( TForm ); 这是两个概念!而 EditorClassList 里面存放的就是 类的类的列表;Editor := EditorClass.Create;Create是类方法,而不是对象方法,所以可以由 EditorClass来创建EditorClass的一个实例
补充: TStepEditor = Class( TObject ) ... End; TStepEditorClass = Class of TStepEditor;
Object Inspector 为什么能够提供一个方便的编辑环境?为什么不同的字段,供选择的值不一样,校验的方式不一样,弹出的编辑框不一样?因为根据不同的字段类型,注册了不同的属性编辑器 Propety Editor;简化Delphi提供的注册属性编辑器的函数,可以描述为以下:RegisteryPropertyEditor( PropertyFieldType, EditorClass ); ^此处为类型名,如 Bool , Integer, ...等等 ^此处为对应的编辑器的类名,注意,不是类名的字符描述实际运行的时候,用户点击Object Inspector 的一个字段的时候,Delphi内部就搜索该字段类型对应的编辑器类;然后由找到的类的类,创建该类的一个实例;进行相关的操作(决定是否有下拉框,是否有一个按钮等等)
更多文章
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18