📄 jvdyncontrolenginedb.pas
字号:
ftDateTime:
Result := jctDBDateTimeEdit;
ftBoolean:
Result := jctDBCheckBox;
else
Result := jctDBEdit;
end;
end;
function TJvDynControlEngineDB.CreateDBFieldControl(AField: TField; AOwner: TComponent;
AParentControl: TWinControl; AControlName: string; ADataSource: TDataSource): TWinControl;
begin
Result := TWinControl(CreateDBControl(GetFieldControlType(AField), AOwner, AParentControl,
AControlName, ADataSource, AField.FieldName));
end;
function TJvDynControlEngineDB.CreateDBControl(AControlType: TJvDynControlType;
AOwner: TComponent; AParentControl: TWinControl; AControlName: string;
ADataSource: TDataSource; const ADataField: string): TControl;
var
DynCtrl: IJvDynControlDatabase;
begin
Result := CreateControl(AControlType, AOwner, AParentControl, AControlName);
if not Supports(Result, IJvDynControlDatabase, DynCtrl) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrl.ControlSetDatasource(ADataSource);
DynCtrl.ControlSetDatafield(ADataField);
end;
function TJvDynControlEngineDB.CreateDBTextControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string;
ADataSource: TDataSource; const ADataField: string; const ACaption: string): TWinControl;
var
DynCtrl: IJvDynControl;
begin
Result := TWinControl(CreateDBControl(jctDBText, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
if not Supports(Result, IJvDynControl, DynCtrl) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrl.ControlSetCaption(ACaption);
end;
function TJvDynControlEngineDB.CreateDBEditControl(AOwner: TComponent; AParentControl: TWinControl;
const AControlName: string; ADataSource: TDataSource; const ADataField: string): TWinControl;
var
DynCtrlEdit: IJvDynControlEdit;
begin
Result := TWinControl(CreateDBControl(jctDBEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
if not Supports(Result, IJvDynControlEdit, DynCtrlEdit) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
end;
function TJvDynControlEngineDB.CreateDBCheckboxControl(AOwner: TComponent; AParentControl: TWinControl;
const AControlName: string; ADataSource: TDataSource; const ADataField, ACaption: string): TWinControl;
var
DynCtrl: IJvDynControl;
begin
Result := TWinControl(CreateDBControl(jctDBCheckBox, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
if not Supports(Result, IJvDynControl, DynCtrl) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrl.ControlSetCaption(ACaption);
end;
function TJvDynControlEngineDB.CreateDBComboBoxControl(AOwner: TComponent; AParentControl: TWinControl;
const AControlName: string; ADataSource: TDataSource; const ADataField: string;
AItems: TStrings): TWinControl;
var
DynCtrlItems: IJvDynControlItems;
begin
Result := TWinControl(CreateDBControl(jctDBComboBox, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
if not Supports(Result, IJvDynControlItems, DynCtrlItems) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrlItems.ControlSetItems(AItems);
end;
function TJvDynControlEngineDB.CreateDBImageControl(AOwner: TComponent; AParentControl: TWinControl;
const AControlName: string; ADataSource: TDataSource; const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBImage, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBRadioGroupControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField, ACaption: string; AItems: TStrings): TWinControl;
var
DynCtrl: IJvDynControl;
DynCtrlItems: IJvDynControlItems;
begin
Result := TWinControl(CreateDBControl(jctDBRadioGroup, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
if not Supports(Result, IJvDynControl, DynCtrl) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrl.ControlSetCaption(ACaption);
if not Supports(Result, IJvDynControlItems, DynCtrlItems) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrlItems.ControlSetItems(AItems);
end;
function TJvDynControlEngineDB.CreateDBMemoControl(AOwner: TComponent; AParentControl: TWinControl;
const AControlName: string; ADataSource: TDataSource; const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBMemo, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBListBoxControl(AOwner: TComponent; AParentControl: TWinControl;
const AControlName: string; ADataSource: TDataSource; const ADataField: string;
AItems: TStrings): TWinControl;
var
DynCtrlItems: IJvDynControlItems;
begin
Result := TWinControl(CreateDBControl(jctDBListBox, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
if not Supports(Result, IJvDynControlItems, DynCtrlItems) then
raise EIntfCastError.CreateRes(@RsEIntfCastError);
DynCtrlItems.ControlSetItems(AItems);
end;
function TJvDynControlEngineDB.CreateDBDateTimeControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBDateTimeEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBDateControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBDateEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBTimeControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBTimeEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBCalculateControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBCalculateEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBSpinControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBSpinEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBDirectoryControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBDirectoryEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBFileNameControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource;
const ADataField: string): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBFileNameEdit, AOwner, AParentControl,
AControlName, ADataSource, ADataField));
end;
function TJvDynControlEngineDB.CreateDBGridControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBGrid, AOwner, AParentControl,
AControlName, ADataSource, ''));
end;
function TJvDynControlEngineDB.CreateDBNavigatorControl(AOwner: TComponent;
AParentControl: TWinControl; const AControlName: string; ADataSource: TDataSource): TWinControl;
begin
Result := TWinControl(CreateDBControl(jctDBNavigator, AOwner, AParentControl,
AControlName, ADataSource, ''));
end;
type
TAccessCustomControl = class(TCustomControl);
function TJvDynControlEngineDB.CreateControlsFromDataSourceOnControl(ADataSource: TDataSource;
AControl: TWinControl; AOptions: TJvCreateDBFieldsOnControlOptions): Boolean;
var
I: Integer;
Control: TWinControl;
LabelControl: TWinControl;
CreateOptions: TJvCreateDBFieldsOnControlOptions;
begin
//Result := False;
if not Assigned(ADataSource) or not Assigned(ADataSource.DataSet) or not Assigned(AControl) then
raise EJVCLException.CreateRes(@RsEUnassignedMultiple);
if not ADataSource.DataSet.Active then
raise EJVCLException.CreateRes(@RsEUnassignedDataSet);
if not Assigned(AOptions) then
CreateOptions := TJvCreateDBFieldsOnControlOptions.Create
else
CreateOptions := AOptions;
try
with CreateOptions do
for I := 0 to ADataSource.DataSet.FieldCount - 1 do
if ADataSource.DataSet.Fields[I].Visible or ShowInvisibleFields then
begin
Control := CreateDBFieldControl(ADataSource.DataSet.Fields[I], AControl, AControl, '', ADataSource);
if FieldDefaultWidth > 0 then
Control.Width := FieldDefaultWidth
else
begin
if ADataSource.DataSet.Fields[I].Size > 0 then
Control.Width :=
TAccessCustomControl(AControl).Canvas.TextWidth('X') * ADataSource.DataSet.Fields[I].Size;
if (FieldMaxWidth > 0) and (Control.Width > FieldMaxWidth) then
Control.Width := FieldMaxWidth
else
if (FieldMinWidth > 0) and (Control.Width < FieldMinWidth) then
Control.Width := FieldMinWidth
end;
LabelControl := GetDynControlEngine.CreateLabelControlPanel(AControl, AControl,
'', '&' + ADataSource.DataSet.Fields[I].DisplayLabel, Control, LabelOnTop, LabelDefaultWidth);
if FieldWidthStep > 0 then
if (LabelControl.Width mod FieldWidthStep) <> 0 then
LabelControl.Width := ((LabelControl.Width div FieldWidthStep) + 1) * FieldWidthStep;
end;
finally
if not Assigned(AOptions) then
CreateOptions.Free;
end;
Result := True;
end;
function TJvDynControlEngineDB.GetDataSourceFromDataComponent(ADataComponent: TComponent): TDataSource;
begin
if ADatacomponent is TDataSource then
Result := TDataSource(ADataComponent)
else
Result := nil;
end;
function TJvDynControlEngineDB.SupportsDataComponent(ADataComponent: TComponent): Boolean;
begin
Result := Assigned(ADataComponent) and Assigned(GetDataSourceFromDataComponent(ADataComponent));
end;
function TJvDynControlEngineDB.CreateControlsFromDataComponentOnControl(ADataComponent: TComponent;
AControl: TWinControl; AOptions: TJvCreateDBFieldsOnControlOptions): Boolean;
var
DS: TDataSource;
begin
DS := GetDataSourceFromDataComponent(ADataComponent);
if Assigned(DS) then
Result := CreateControlsFromDataSourceOnControl(DS, AControl, AOptions)
else
Result := False;
end;
procedure SetDefaultDynControlEngineDB(AEngine: TJvDynControlEngineDB);
begin
if AEngine is TJvDynControlEngineDB then
GlobalDefaultDynControlEngineDB := AEngine;
end;
function DefaultDynControlEngineDB: TJvDynControlEngineDB;
begin
Result := GlobalDefaultDynControlEngineDB;
end;
{$IFDEF UNITVERSIONING}
initialization
RegisterUnitVersion(HInstance, UnitVersioning);
finalization
UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -