开发学院软件开发Delphi 代码示例:你是真的对Delphi很了解么? 阅读

代码示例:你是真的对Delphi很了解么?

 2006-02-04 13:29:55 来源:WEB开发网 闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�闂傚倸鍊风粈渚€骞夐敓鐘插瀭闁汇垹鐏氬畷鏌ユ煙閹殿喖顣奸柛搴$У閵囧嫰骞掗幋婵冨亾閻㈢ǹ纾婚柟鐐灱濡插牊绻涢崱妤冃℃繛宀婁簽缁辨捇宕掑鎵佹瀸闂佺懓鍤栭幏锟�濠电姷鏁告慨顓㈠箯閸愵喖宸濇い鎾寸箘閹规洟姊绘笟鈧ḿ褍煤閵堝悿娲Ω閳轰胶鍔﹀銈嗗笂閼冲爼鍩婇弴銏$厪闁搞儮鏅涙禒褏绱掓潏鈺佷槐闁轰焦鎹囬弫鎾绘晸閿燂拷闂傚倸鍊风欢姘缚瑜嶈灋闁圭虎鍠栫粻顖炴煥閻曞倹瀚�  闂傚倸鍊烽懗鑸电仚缂備胶绮〃鍛村煝瀹ュ鍗抽柕蹇曞У閻庮剟姊虹紒妯哄闁圭⒈鍋嗛惀顏囶樄闁哄本娲樼换婵婄疀閺囩姷鐛ラ梻浣哄帶婢瑰﹥绂嶅⿰鍫氣偓鏃堝礃椤忎礁浜鹃柨婵嗛婢ь喖霉閻樻瑥瀚粻楣冩煕椤愩倕鏋庨柣蹇嬪劜閵囧嫰寮村Ο鍝勫Е濡炪們鍨洪悷鈺呭箖閳╁啯鍎熼柕鍥у簻閹凤拷
核心提示:代码示例:你是真的对Delphi很了解么?PRocedure StepEditor( strgrid: TStringGrid; Step: TStep );var sValue, sField: string; EditorClass: TStepEditorClass; Editor: TStepEditor

代码示例:你是真的对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内部就搜索该字段类型对应的编辑器类;然后由找到的类的类,创建该类的一个实例;
进行相关的操作(决定是否有下拉框,是否有一个按钮等等)

   更多文章

Tags:代码 真的 Delphi

编辑录入:爽爽 [复制链接] [打 印]
[]
  • 好
  • 好的评价 如果觉得好,就请您
      0%(0)
  • 差
  • 差的评价 如果觉得差,就请您
      0%(0)
赞助商链接