⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jvdyncontrolenginedbtools.pas

📁 East make Tray Icon in delphi
💻 PAS
📖 第 1 页 / 共 2 页
字号:
begin
  FForm.ClientWidth := ChangedSize;
end;

procedure TJvDynControlDataSourceEditDialog.ArrangePanelChangedHeight(Sender: TObject; ChangedSize: Integer);
begin
  if Assigned(FNavigatorPanel) then
    FForm.ClientHeight := ChangedSize + FButtonPanel.Height + FNavigatorPanel.Height + 35
  else
    FForm.ClientHeight := ChangedSize + FButtonPanel.Height + 35;
end;

type
  TAccessControl = class(TControl);

function TJvDynControlDataSourceEditDialog.CreateDynControlDialog(var AMainPanel: TWinControl): TCustomForm;
var
  DynControlEngine: TJvDynControlEngine;
  Form: TCustomForm;
  PostButton, CancelButton, CloseButton: TButtonControl;
  LeftPos: Integer;
  DynCtrlButton: IJvDynControlButton;
  DynCtrlAction: IJvDynControlAction;

  function CalcButtonWidth (ACaptionWidth: Integer; AGlyph: TBitmap) : Integer;
  begin
    Result := 4;
    if Assigned(AGlyph) then
      Result := Result + AGlyph.Width;
    if ACaptionWidth > 0 then
    begin
      Result := Result + ACaptionWidth;
      if ACaptionWidth > 0 then
        Result := Result + 4;
    end;
  end;

begin
  DynControlEngine := DynControlEngineDB.DynControlEngine;
  Form := DynControlEngine.CreateForm(DialogCaption, '');
  TForm(Form).Position := Position;
  TForm(Form).BorderStyle := BorderStyle;
  TForm(Form).Top := Top;
  TForm(Form).Left := Left;
  TForm(Form).Height := Height;
  TForm(Form).Width := Width;
  with TForm(Form) do
  begin
    FormStyle := fsNormal;
    BorderIcons := [];
  end;

  FButtonPanel := DynControlEngine.CreatePanelControl(Form, Form, '', '', alBottom);
  FButtonPanel.Width := Form.ClientWidth;
  AMainPanel := DynControlEngine.CreatePanelControl(Form, Form, '', '', alClient);
  LeftPos := FButtonPanel.Width;
  if (CloseButtonCaption <> '') or Assigned(CloseButtonGlyph) then
  begin
    CloseButton := DynControlEngine.CreateButton(Form, FButtonPanel, '', CloseButtonCaption, '', OnCloseButtonClick,
      True, False);
    FButtonPanel.Height := CloseButton.Height + 6;
    CloseButton.Top := 3;
    CloseButton.Anchors := [akTop, akRight];
    CloseButton.Width := CalcButtonWidth(Form.Canvas.TextWidth(CloseButtonCaption), CloseButtonGlyph);
    CloseButton.Left := LeftPos - CloseButton.Width - 5;
    LeftPos := CloseButton.Left;
    CloseButton.TabOrder := 0;
    if Supports(CloseButton, IJvDynControlButton, DynCtrlButton) then
    begin
      DynCtrlButton.ControlSetDefault(True);
      DynCtrlButton.ControlSetCancel(True);
      if Assigned(CloseButtonGlyph) then
        DynCtrlButton.ControlSetGlyph(CloseButtonGlyph);
    end;
  end;
  if (CancelButtonCaption <> '') or Assigned(CancelButtonGlyph) then
  begin
    CancelButton := DynControlEngine.CreateButton(Form, FButtonPanel, '', CancelButtonCaption, '', OnCancelButtonClick,
      True, False);
    if Supports(CancelButton, IJvDynControlAction, DynCtrlAction) then
    begin
      FCancelAction := TJvDatabaseCancelAction.Create (Form);
      FCancelAction.Caption := CancelButtonCaption;
      DynCtrlAction.ControlSetAction(FCancelAction);
    end
    else
      FCancelAction := nil;
    FButtonPanel.Height := CancelButton.Height + 6;
    CancelButton.Top := 3;
    CancelButton.Anchors := [akTop, akRight];
    CancelButton.Width := CalcButtonWidth(Form.Canvas.TextWidth(CancelButtonCaption), CancelButtonGlyph);
    CancelButton.Left := LeftPos - CancelButton.Width - 5;
    LeftPos := CancelButton.Left;
    CancelButton.TabOrder := 0;
    if Supports(CancelButton, IJvDynControlButton, DynCtrlButton) then
    begin
      DynCtrlButton.ControlSetDefault (False);
      DynCtrlButton.ControlSetCancel(False);
      if Assigned(CancelButtonGlyph) then
        DynCtrlButton.ControlSetGlyph(CancelButtonGlyph);
    end;
  end;
  if (PostButtonCaption <> '') or Assigned(PostButtonGlyph) then
  begin
    PostButton := DynControlEngine.CreateButton(Form, FButtonPanel, '', PostButtonCaption, '', OnPostButtonClick, True,
      False);
    FButtonPanel.Height := PostButton.Height + 6;
    if Supports(PostButton, IJvDynControlAction, DynCtrlAction) then
    begin
      FPostAction := TJvDatabasePostAction.Create (Form);
      FPostAction.Caption := PostButtonCaption;
      DynCtrlAction.ControlSetAction(FPostAction);
    end
    else
      FPostAction := nil;
    PostButton.Top := 3;
    PostButton.Anchors := [akTop, akRight];
    PostButton.Width := CalcButtonWidth(Form.Canvas.TextWidth(PostButtonCaption), PostButtonGlyph);
    PostButton.Left := LeftPos - PostButton.Width - 5;
    PostButton.TabOrder := 0;
    if Supports(PostButton, IJvDynControlButton, DynCtrlButton) then
    begin
      DynCtrlButton.ControlSetDefault (False);
      DynCtrlButton.ControlSetCancel(False);
      if Assigned(PostButtonGlyph) then
        DynCtrlButton.ControlSetGlyph(PostButtonGlyph);
    end;
  end;
  Result := Form;
end;

function TJvDynControlDataSourceEditDialog.ShowDialog: TModalResult;
var
  MainPanel: TWinControl;
  ArrangePanel: TJvPanel;
  Navigator: TControl;
begin
  FForm := CreateDynControlDialog(MainPanel);
  try
    FScrollBox := TScrollBox.Create(FForm);
    FScrollBox.Parent := MainPanel;
    FScrollBox.Align := alClient;
    FScrollBox.BorderStyle := bsNone;
    FScrollBox.AutoScroll := True;
    FForm.Constraints := ArrangeConstraints;
    ArrangePanel := TJvPanel.Create(FForm);
    with ArrangePanel do
    begin
      Align := alTop;
      BevelInner := bvNone;
      BevelOuter := bvNone;
      Parent := FScrollBox;
      OnChangedWidth := ArrangePanelChangedWidth;
      OnChangedHeight := ArrangePanelChangedHeight;
    end;
    ArrangePanel.ArrangeSettings := ArrangeSettings;
    if ArrangeSettings.MaxWidth = 0 then
      ArrangePanel.ArrangeSettings.MaxWidth := ArrangeConstraints.MaxWidth;
    if ArrangeSettings.MaxWidth = 0 then
      ArrangeSettings.MaxWidth := Screen.Width;
    if IncludeNavigator then
    begin
      FNavigatorPanel := TJvPanel.Create(FForm);
      Navigator := DynControlEngineDB.CreateDBNavigatorControl(FForm, FNavigatorPanel, '', DataSource);
      Navigator.Left := 3;
      Navigator.Top := 3;
      with FNavigatorPanel do
      begin
        Align := alBottom;
        BevelInner := bvNone;
        BevelOuter := bvNone;
        Parent := MainPanel;
        Height := Navigator.Height + 6;
      end;
    end
    else
      FNavigatorPanel := nil;
    if Assigned(OnCreateDataControlsEvent) then
      OnCreateDataControlsEvent(DynControlEngineDB, ArrangePanel, FieldCreateOptions)
    else
      DynControlEngineDB.CreateControlsFromDataComponentOnControl(DataComponent, ArrangePanel, FieldCreateOptions);
    if Assigned (FCancelAction) then
      TJvDatabaseCancelAction(FCancelAction).DataComponent := DataComponent;
    if Assigned (FPostAction) then
      TJvDatabaseCancelAction(FPostAction).DataComponent := DataComponent;

//    ArrangePanel.ArrangeControls;
    ArrangePanel.ArrangeSettings.AutoArrange := True;
    MainPanel.TabOrder := 0;
    Result := FForm.ShowModal;
  finally
    FForm.Free;
  end;
end;

function ShowDataSourceEditDialog(ADataComponent: TComponent;
  const ADialogCaption, APostButtonCaption, ACancelButtonCaption, ACloseButtonCaption: string;
  AIncludeNavigator: Boolean;
  AFieldCreateOptions: TJvCreateDBFieldsOnControlOptions = nil;
  AArrangeConstraints: TSizeConstraints = nil;
  AArrangeSettings: TJvArrangeSettings = nil;
  ADynControlEngineDB: TJvDynControlEngineDB = nil): TModalResult;
var
  Dialog: TJvDynControlDataSourceEditDialog;
begin
  Dialog := TJvDynControlDataSourceEditDialog.Create;
  try
    Dialog.DataComponent := ADataComponent;
    Dialog.DialogCaption := ADialogCaption;
    Dialog.PostButtonCaption := APostButtonCaption;
    Dialog.CancelButtonCaption := ACancelButtonCaption;
    Dialog.CloseButtonCaption := ACloseButtonCaption;
    Dialog.IncludeNavigator := AIncludeNavigator;
    Dialog.DynControlEngineDB := ADynControlEngineDB;
    if Assigned(AFieldCreateOptions) then
      Dialog.FieldCreateOptions := AFieldCreateOptions;
    if Assigned(AArrangeSettings) then
      Dialog.ArrangeSettings := AArrangeSettings;
    if Assigned(AArrangeConstraints) then
      Dialog.ArrangeConstraints := AArrangeConstraints;
    Result := Dialog.ShowDialog;
  finally
    Dialog.Free;
  end;
end;

{$IFDEF UNITVERSIONING}
initialization
  RegisterUnitVersion(HInstance, UnitVersioning);

finalization
  UnregisterUnitVersion(HInstance);
{$ENDIF UNITVERSIONING}

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -