代碼示例:你是真的對Delphi很了解麽?

代碼示例:你是真的對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內部就搜索該字段類型對應的編輯器類;然後由找到的類的類,創建該類的一個實例;

進行相關的操作(決定是否有下拉框,是否有一個按鈕等等)

更多文章

 
代碼示例:你是真的對Delphi很了解麽?
代碼示例:你是真的對Delphi很了解麽?Procedure StepEditor( strgrid: TStringGrid; Step: TStep );var sValue, sField: string; EditorClass: TStepEditorClass; Editor: TStepEditor;begin sField := strgrid....查看完整版>>代碼示例:你是真的對Delphi很了解麽?
 
win32下的系統日志鈎子示例程序(Delphi版)
摘要:win32下的系統日志鈎子示例程序(Delphi版){ win9X,NT,w2k 中的系統日志鈎子示例程序(Delphi 版) ----------------------------------------------------- windows下的日志鈎子是一種很有用的HOOK類型...查看完整版>>win32下的系統日志鈎子示例程序(Delphi版)
 
delphi多線程程序示例(與.net一樣簡單)
(*----下面這個程序介紹了我們在使用線程及未使用線程二種情況下,運行該程序的反應。當點UsedThread按鈕時,則建立一個線程,這時我們可以在程序進行計算的同時,改變窗體的尺寸及移動它。當按下NoUsedThread按鈕時...查看完整版>>delphi多線程程序示例(與.net一樣簡單)
 
win32下的系統日志鈎子示例程序(Delphi 版)
{ win9X,NT,w2k 中的系統日志鈎子示例程序(Delphi 版) ----------------------------------------------------- windows下的日志鈎子是一種很有用的HOOK類型,他不需要動態鏈接庫*.DLL,就能實現 系統級...查看完整版>>win32下的系統日志鈎子示例程序(Delphi 版)
 
Python的wxPython的示例代碼-----彈出菜單
    #!/usr/bin/env python  # -*- coding:gb2312 -*-  #導入必要的模塊  from wxPython.wx import *  text = u"這是一個彈出菜單的示例"  class TestPanel(wxPanel):  def __init__(self, parent):...查看完整版>>Python的wxPython的示例代碼-----彈出菜單