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

📄 colsetupform.pas

📁 胜天财务进销存2003源代码,SQLSERVER版,目前最完整的财务进销存系统.
💻 PAS
字号:
unit ColSetupForm;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, EditForm, KsHooks, KsForms, KsSkinForms, StdCtrls, Buttons,
  dxExEdtr, dxTL, dxDBCtrl, dxDBGrid, dxCntner, KsControls, KsPanels,
  KsSkinPanels, dxDBTLCl, dxGrClms, KsButtons, KsSkinButtons,
  KsSpeedButtons, KsSkinSpeedButtons, DB, ADODB;

type
  TfrmColSetup = class(TfrmEditForm)
    SeSkinPanel1: TSeSkinPanel;
    gridMain: TdxDBGrid;
    gridMainColumn1: TdxDBGridColumn;
    gridMainColumn2: TdxDBGridColumn;
    gridMainColumn3: TdxDBGridCheckColumn;
    sbUnName: TSeSkinSpeedButton;
    sbVisible: TSeSkinSpeedButton;
    sbUp: TSeSkinSpeedButton;
    sbDown: TSeSkinSpeedButton;
    sbRevert: TSeSkinSpeedButton;
    bbOk: TSeSkinButton;
    bbExit: TSeSkinButton;
    dsSource: TDataSource;
    DataSet: TADODataSet;
    procedure sbRevertClick(Sender: TObject);
    procedure bbOkClick(Sender: TObject);
    procedure bbExitClick(Sender: TObject);
    procedure sbVisibleClick(Sender: TObject);
    procedure sbUnNameClick(Sender: TObject);
    procedure sbUpClick(Sender: TObject);
    procedure sbDownClick(Sender: TObject);
  private
    { Private declarations }
    bReturn: Boolean;
    sCaption1: string;
    Grid1: TdxDBGrid;
    lInit1: Integer;
    function InitData: Boolean;
    function UpdateGrid: Boolean;
    function RevertGrid(s: string; lUp: integer): Boolean;
    function GetColumnID(sField: string): Integer;
    procedure MainShow;
    function LoadData: Boolean;
    function ReturnSQL(Mode: string): string;
  public
    { Public declarations }
  end;

function ColSetupShow(sCaption: string; Grid: TdxDBGrid; lInit: Integer):
  Boolean;
function SaveColWidth(sCaption: string; Grid: TdxDBGrid): Boolean;
implementation

uses DBData, SysPublic;
{$R *.dfm}

function ColSetupShow(sCaption: string; Grid: TdxDBGrid; lInit: Integer):
  Boolean;
var
  frmColSetup: TfrmColSetup;
begin
  frmColSetup := TfrmColSetup.Create(Application);
  with frmColSetup do
  begin
    sCaption1 := sCaption;
    Grid1 := Grid;
    lInit1 := lInit;
    MainShow;
    Result := bReturn;
    Free;
  end;
end;

function SaveColWidth(sCaption: string; Grid: TdxDBGrid): Boolean;
var
  sSql, sFieldName: string;
  lWidth, i: Integer;
begin
  for i := 0 to Grid.ColumnCount - 1 do
  begin
    sFieldName := Grid.Columns[i].FieldName;
    lWidth := Grid.Columns[i].Width;
    sSql := ' Update ColSetup Set Width=' + IntToStr(lWidth) +
      ' Where Caption=''' + Trim(sCaption) + ''' and FieldName=''' +
      Trim(sFieldName) + '''';
    ExecSql(sSql);
  end;
  Result := True;
end;

procedure TfrmColSetup.MainShow;
begin
  if not LoadData then
    Exit;
  if lInit1 = 0 then
    ShowModal
  else
    UpdateGrid;
  DataSet.Close;
end;

function TfrmColSetup.LoadData: Boolean;
begin
  Result := False;
  bReturn := false;
  Caption := '通用表格列设置';
  if not OpenDataSet(DataSet, ReturnSQL('S')) then
    Exit;
  Result := True;
end;

function TfrmColSetup.ReturnSQL(Mode: string): string;
begin
  if Mode = 'S' then
    Result := 'Select * from ColSetup Where Caption=''' + Trim(sCaption1) +
      ''' ORDER BY ColOrder'
  else if Mode = 'D' then
    Result := 'Delete from ColSetup Where Caption=''' + Trim(sCaption1) + '''';
end;

function TfrmColSetup.InitData: Boolean;
var
  sFieldName, sSysName, sUserName: string;
  lWidth, i: Integer;
begin
  Result := False;
  ExecSql(ReturnSQL('D'));
  if not OpenDataSet(DataSet, ReturnSQL('S')) then
    Exit;
  for i := 1 to Grid1.ColumnCount - 1 do
  begin
    sFieldName := Grid1.Columns[i].FieldName;
    sSysName := Grid1.Columns[i].Caption;
    lWidth := Grid1.Columns[i].Width;
    sUserName := sSysName;
    DataSet.Append;
    DataSet.FieldByName('Caption').AsString := Trim(sCaption1);
    DataSet.FieldByName('FieldName').AsString := Trim(sFieldName);
    DataSet.FieldByName('SysName').AsString := Trim(sSysName);
    DataSet.FieldByName('UserName').AsString := sUserName;
    DataSet.FieldByName('Width').AsInteger := lWidth;
    DataSet.FieldByName('Visible').AsInteger := 1;
    DataSet.FieldByName('ColOrder').AsInteger := Grid1.Columns[i].Index;
  end;
  SaveDataSet(DataSet, True);
  DataSet.First;
  Result := True;
end;

function TfrmColSetup.UpdateGrid: Boolean;
var
  i: Integer;
begin
  Result := False;
  try
    begin
      if DataSet.RecordCount <> Grid1.ColumnCount - 1 then
        InitData;
      DataSet.First;
      while not DataSet.Eof do
      begin
        i := GetColumnID(DataSet.FieldByName('FieldName').AsString);
        if i < 0 then
        begin
          DataSet.Next;
          Continue;
        end;
        Grid1.Columns[i].Caption := DataSet.FieldByName('UserName').AsString;
        Grid1.Columns[i].Width := DataSet.FieldByName('Width').AsInteger;
        if DataSet.FieldByName('Visible').AsInteger < 0 then
          Grid1.Columns[i].Visible := False
        else
          Grid1.Columns[i].Visible := True;
        Grid1.Columns[i].Index := DataSet.FieldByName('ColOrder').AsInteger;
        DataSet.Next;
      end;
      DataSet.First;
    end;
  except
    Exit;
  end;
  Result := True;
end;

function TfrmColSetup.GetColumnID(sField: string): Integer;
var
  i: Integer;
begin
  Result := -1;
  for i := 1 to Grid1.ColumnCount - 1 do
    if Trim(sField) = Trim(Grid1.Columns[i].FieldName) then
    begin
      Result := i;
      Exit;
    end;
end;

procedure TfrmColSetup.sbRevertClick(Sender: TObject);
begin
  inherited;
  RevertGrid('A', 0);
end;

procedure TfrmColSetup.bbOkClick(Sender: TObject);
begin
  inherited;
  SaveDataSet(DataSet, True);
  UpdateGrid;
  Close;
end;

procedure TfrmColSetup.bbExitClick(Sender: TObject);
begin
  inherited;
  DataSet.CancelUpdates;
  Close;
end;

function TfrmColSetup.RevertGrid(s: string; lUp: integer): Boolean;
var
  SavePlace: TBookmark;
  i1, i2: Integer;
begin
  Result := False;
  if Trim(s) = 'A' then
  begin
    if MsgBox('你确定要恢复所有改变,回到原始设置吗??',
      '提示', MB_OKCANCEL) = IDOK then
    begin
      ExecSql(ReturnSQL('D'));
      Close;
    end;
  end
  else if (Trim(s) = 'V') or (Trim(s) = 'N') then
    with DataSet do
    begin
      SavePlace := GetBookmark;
      First;
      while not Eof do
      begin
        Edit;
        if Trim(s) = 'V' then
          FieldByName('Visible').AsInteger := 1
        else if Trim(s) = 'N' then
          FieldByName('UserName').AsString := FieldByName('SysName').AsString;
        Next;
      end;
      try
        GotoBookmark(SavePlace);
      finally
        FreeBookmark(SavePlace);
      end;
    end
  else if Trim(s) = 'M' then
    with DataSet do
    begin
      SavePlace := GetBookmark;
      i1 := FieldByName('ColOrder').AsInteger;
      if lUp = 0 then
        Next
      else
        Prior;
      if (lUp = 0) and Eof then
        Exit;
      if (lUp = 1) and Bof then
        Exit;
      i2 := FieldByName('ColOrder').AsInteger;
      Edit;
      FieldByName('ColOrder').AsInteger := i1;
      if lUp = 0 then
        Prior
      else
        Next;
      if (lUp = 0) and Eof then
        Exit;
      if (lUp = 1) and Bof then
        Exit;
      Edit;
      FieldByName('ColOrder').AsInteger := i2;
      SaveDataSet(DataSet, True);
      if not OpenDataSet(DataSet, ReturnSQL('S')) then
        Exit;
      try
        GotoBookmark(SavePlace);
      finally
        FreeBookmark(SavePlace);
      end;
      if lUp = 0 then
        Next
      else
        Prior;
    end;
  Result := True;
end;

procedure TfrmColSetup.sbVisibleClick(Sender: TObject);
begin
  inherited;
  RevertGrid('V', 0);
end;

procedure TfrmColSetup.sbUnNameClick(Sender: TObject);
begin
  inherited;
  RevertGrid('N', 0);
end;

procedure TfrmColSetup.sbUpClick(Sender: TObject);
begin
  inherited;
  RevertGrid('M', 1);
end;

procedure TfrmColSetup.sbDownClick(Sender: TObject);
begin
  inherited;
  RevertGrid('M', 0);
end;

end.

⌨️ 快捷键说明

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