fcdbcommon.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:3k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. unit fcDBCommon;
  2. interface
  3. uses db, classes, typinfo;
  4. Function fcGetControlDataSource(ctrl: TComponent): TDataSource;
  5. Function fcGetControlMasterSource(ctrl: TComponent): TDataSource;
  6. Function fcGetControlMasterDataSet(ctrl: TComponent): TDataSet;
  7. Function fcSetDatabaseName(ctrl: TDataset; df: string): boolean;
  8. Function fcGetDatabaseName(dataSet: TDataSet): String;
  9. Function fcGetTableName(dataSet: TDataSet): String;
  10. Function fcSetSQLProp(ctrl: TDataset; sql: TStrings): boolean;
  11. Function fcSetParamsProp(ctrl: TDataset; Params: TParams): boolean;
  12. Function fcGetParamsProp(ctrl: TDataset): TParams;
  13. implementation
  14. Function fcGetControlDataSource(ctrl: TComponent): TDataSource;
  15. var PropInfo: PPropInfo;
  16. begin
  17.    Result:= Nil;
  18.    PropInfo:= Typinfo.GetPropInfo(ctrl.ClassInfo,'DataSource');
  19.    if PropInfo<>Nil then begin
  20.       result:= TDataSource(GetOrdProp(ctrl, PropInfo));
  21.    end
  22. end;
  23. Function fcGetControlMasterSource(ctrl: TComponent): TDataSource;
  24. var PropInfo: PPropInfo;
  25. begin
  26.    Result:= Nil;
  27.    PropInfo:= Typinfo.GetPropInfo(ctrl.ClassInfo,'MasterSource');
  28.    if PropInfo<>Nil then begin
  29.       result:= TDataSource(GetOrdProp(ctrl, PropInfo));
  30.    end
  31. end;
  32. Function fcGetControlMasterDataSet(ctrl: TComponent): TDataSet;
  33. var PropInfo: PPropInfo;
  34. begin
  35.    Result:= Nil;
  36.    PropInfo:= Typinfo.GetPropInfo(ctrl.ClassInfo,'Master');
  37.    if PropInfo<>Nil then begin
  38.       result:= TDataSet(GetOrdProp(ctrl, PropInfo));
  39.    end
  40. end;
  41. Function fcSetSQLProp(ctrl: TDataset; sql: TStrings): boolean;
  42. var PropInfo: PPropInfo;
  43. begin
  44.    result:= False;
  45.    PropInfo:= Typinfo.GetPropINfo(ctrl.ClassInfo,'SQL');
  46.    if (PropInfo <> nil) and (PropInfo^.Proptype^.Kind = tkClass) then
  47.    begin
  48.       SetOrdProp(Ctrl,PropInfo,LongInt(sql));
  49.       result:= True;
  50.    end
  51. end;
  52. Function fcSetDatabaseName(ctrl: TDataset; df: string): boolean;
  53. var PropInfo: PPropInfo;
  54. begin
  55.    Result:= False;
  56.    PropInfo:= Typinfo.GetPropINfo(ctrl.ClassInfo,'DatabaseName');
  57.    {$IFDEF WIN32}
  58.    if (PropInfo<>nil) and (PropInfo^.Proptype^.Kind = tklString) then begin
  59.    {$ELSE}
  60.    if (PropInfo<>nil) and (PropInfo^.PropType^.Kind = tkString) then begin
  61.    {$ENDIF}
  62.       SetStrProp(Ctrl,PropInfo,df);
  63.       result:= True;
  64.    end
  65. end;
  66. Function fcGetDatabaseName(dataSet: TDataSet): String;
  67. var PropInfo: PPropInfo;
  68. begin
  69.    Result:= '';
  70.    PropInfo:= Typinfo.GetPropInfo(DataSet.ClassInfo, 'DatabaseName');
  71.    if PropInfo<>Nil then
  72.       result:= GetStrProp(DataSet, PropInfo);
  73. end;
  74. Function fcGetTableName(dataSet: TDataSet): String;
  75. var PropInfo: PPropInfo;
  76. begin
  77.    Result:= '';
  78.    PropInfo:= Typinfo.GetPropInfo(DataSet.ClassInfo, 'TableName');
  79.    if PropInfo<>Nil then
  80.       result:= GetStrProp(DataSet, PropInfo);
  81. //   if dataSet is TwwTable then result:= TwwTable(dataSet).tableName
  82. //   else result:= '?';
  83. end;
  84. Function fcGetParamsProp(ctrl: TDataset): TParams;
  85. var PropInfo: PPropInfo;
  86. begin
  87.    result:= nil;
  88.    PropInfo:= Typinfo.GetPropINfo(ctrl.ClassInfo,'Params');
  89.    if (PropInfo <> nil) and (PropInfo^.Proptype^.Kind = tkClass) then
  90.       result:= TParams(GetOrdProp(Ctrl,PropInfo));
  91. end;
  92. Function fcSetParamsProp(ctrl: TDataset; Params: TParams): boolean;
  93. var PropInfo: PPropInfo;
  94. begin
  95.    result:= False;
  96.    PropInfo:= Typinfo.GetPropInfo(ctrl.ClassInfo,'Params');
  97.    if (PropInfo <> nil) and (PropInfo^.Proptype^.Kind = tkClass) then
  98.    begin
  99.       fcGetParamsProp(ctrl).Assign(Params);
  100.       result:= True;
  101.    end;
  102. end;
  103. end.