Delphi5的控件升级到Delphi6
点击次数:38 次 发布日期:2008-11-09 08:38:40 作者:源代码网
|
源代码网推荐 下面是一个简单的例子 源代码网推荐 源代码网推荐 unit NWDictTreeViewReg; 源代码网推荐 源代码网推荐 interface 源代码网推荐 源代码网推荐 uses 源代码网推荐 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, 源代码网推荐 ComCtrls, Db, DbTables, DesignIntf, DesignEditors; 源代码网推荐 源代码网推荐 type 源代码网推荐 TNamePropertyEditor = class(TPropertyEditor) 源代码网推荐 public 源代码网推荐 function GetAttributes: TPropertyAttributes; override; 源代码网推荐 function GetValue: string; override; 源代码网推荐 procedure SetValue(const Value: string); override; 源代码网推荐 end; 源代码网推荐 源代码网推荐 TDatabaseNameProperty = class(TNamePropertyEditor) 源代码网推荐 public 源代码网推荐 procedure GetValues(Proc: TGetStrProc); override; 源代码网推荐 end; 源代码网推荐 源代码网推荐 TTableNameProperty = class(TNamePropertyEditor) 源代码网推荐 public 源代码网推荐 procedure GetValues(Proc: TGetStrProc); override; 源代码网推荐 end; 源代码网推荐 源代码网推荐 TFieldNameProperty = class(TNamePropertyEditor) 源代码网推荐 public 源代码网推荐 procedure GetValues(Proc: TGetStrProc); override; 源代码网推荐 end; 源代码网推荐 源代码网推荐 procedure Register; 源代码网推荐 源代码网推荐 implementation 源代码网推荐 源代码网推荐 uses NWDictTreeView; 源代码网推荐 源代码网推荐 procedure Register; 源代码网推荐 begin 源代码网推荐 RegisterComponents("NoctWolf DB", [TNWDictTreeView]); 源代码网推荐 RegisterPropertyEditor(TypeInfo(string), TNWDictTreeView, "DatabaseName", TDatabaseNameProperty); 源代码网推荐 RegisterPropertyEditor(TypeInfo(TFileName), TNWDictTreeView, "", TTableNameProperty); 源代码网推荐 RegisterPropertyEditor(TypeInfo(TFieldName), TNWDictTreeView, "", TFieldNameProperty); 源代码网推荐 end; 源代码网推荐 源代码网推荐 function TNamePropertyEditor.GetAttributes: TPropertyAttributes; 源代码网推荐 begin 源代码网推荐 Result := [paValueList, paSortList, paAutoUpdate]; 源代码网推荐 end; 源代码网推荐 源代码网推荐 function TNamePropertyEditor.GetValue: string; 源代码网推荐 begin 源代码网推荐 Result := GetStrValue; 源代码网推荐 end; 源代码网推荐 源代码网推荐 procedure TDatabaseNameProperty.GetValues(Proc: TGetStrProc); 源代码网推荐 var 源代码网推荐 NameStrings: TStrings; 源代码网推荐 i: Integer; 源代码网推荐 begin 源代码网推荐 NameStrings := TStringList.Create; 源代码网推荐 try 源代码网推荐 Session.GetDatabaseNames(NameStrings); 源代码网推荐 for i := 0 to NameStrings.Count - 1 do 源代码网推荐 begin 源代码网推荐 Proc(NameStrings[i]); 源代码网推荐 end; 源代码网推荐 finally 源代码网推荐 NameStrings.Free; 源代码网推荐 end; 源代码网推荐 end; 源代码网推荐 源代码网推荐 procedure TNamePropertyEditor.SetValue(const Value: string); 源代码网推荐 begin 源代码网推荐 if GetStrValue <> Value then SetStrValue(Value); 源代码网推荐 end; 源代码网推荐 源代码网推荐 procedure TTableNameProperty.GetValues(Proc: TGetStrProc); 源代码网推荐 var 源代码网推荐 NameStrings: TStrings; 源代码网推荐 i: Integer; 源代码网推荐 begin 源代码网推荐 NameStrings := TStringList.Create; 源代码网推荐 try 源代码网推荐 Session.GetTableNames((GetComponent(0) as TNWDictTreeView).DatabaseName, "*.*", False, False, NameStrings); 源代码网推荐 for i := 0 to NameStrings.Count - 1 do 源代码网推荐 begin 源代码网推荐 Proc(NameStrings[i]); 源代码网推荐 end; 源代码网推荐 finally 源代码网推荐 NameStrings.Free; 源代码网推荐 end; 源代码网推荐 end; 源代码网推荐 源代码网推荐 procedure TFieldNameProperty.GetValues(Proc: TGetStrProc); 源代码网推荐 var 源代码网推荐 NameStrings: TStrings; 源代码网推荐 i: Integer; 源代码网推荐 TempTable: TTable; 源代码网推荐 begin 源代码网推荐 NameStrings := TStringList.Create; 源代码网推荐 TempTable := TTable.Create(GetComponent(0) as TNWDictTreeView); 源代码网推荐 try 源代码网推荐 TempTable.DatabaseName := (GetComponent(0) as TNWDictTreeView).DatabaseName; 源代码网推荐 if (GetName = "DictRelationParentCodeFieldName") or 源代码网推荐 (GetName = "DictRelationCodeFieldName") then 源代码网推荐 TempTable.TableName := (GetComponent(0) as TNWDictTreeView).DictRelationTableName 源代码网推荐 else 源代码网推荐 TempTable.TableName := (GetComponent(0) as TNWDictTreeView).DictTableName; 源代码网推荐 TempTable.GetFieldNames(NameStrings); 源代码网推荐 for i := 0 to NameStrings.Count - 1 do 源代码网推荐 begin 源代码网推荐 Proc(NameStrings[i]); 源代码网推荐 end; 源代码网推荐 finally 源代码网推荐 TempTable.Free; 源代码网推荐 NameStrings.Free; 源代码网推荐 end; 源代码网推荐 end; 源代码网推荐 源代码网推荐 源代码网推荐 end. 源代码网推荐 当然,也有一些没这么容易,如 TCollectionEditor, TDesignWindow 等,原来的虚拟方法都变了。你可以试试升级 EhLib。 源代码网推荐 源代码网供稿. |
