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

📄 main.pas

📁 适合Delphi初学者使用。其中涉及XML文件导入
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, GridsEh, DBGridEh, ExtCtrls, StdCtrls, DB, ADODB, Menus,
  ExcelXP, OleServer, xmldom, XMLIntf, msxmldom, XMLDoc;

type
  TfrmMain = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    gridCustomer: TDBGridEh;
    Label1: TLabel;
    comFind: TComboBox;
    Label2: TLabel;
    edtValue: TEdit;
    btnLocate: TButton;
    btnFilter: TButton;
    btnShowAll: TButton;
    btnImport: TButton;
    btnExport: TButton;
    btnAdd: TButton;
    btnDel: TButton;
    btnSave: TButton;
    btnPrint: TButton;
    btnSet: TButton;
    PopupMenu1: TPopupMenu;
    PopupMenu2: TPopupMenu;
    PopupMenu3: TPopupMenu;
    btnClear: TButton;
    pmFontSet: TMenuItem;
    pmGridWidth: TMenuItem;
    pmPrintSet: TMenuItem;
    pmImportExecl1: TMenuItem;
    pmImportOldDoc: TMenuItem;
    pmImportFile: TMenuItem;
    ExcelApplication1: TExcelApplication;
    ExcelWorksheet1: TExcelWorksheet;
    ExcelWorkbook1: TExcelWorkbook;
    InXMLDoc: TXMLDocument;
    btnShopAdmin: TButton;
    btnFirst: TButton;
    btnLast: TButton;
    pmFirstColor: TMenuItem;
    pmSecondColor: TMenuItem;
    pmExportExcel: TMenuItem;
    pmExportFile: TMenuItem;
    btnReLogin: TButton;
    btnTurnShop: TButton;
    laShop: TLabel;
    pmExcelSet: TMenuItem;
    pmDelSpace: TMenuItem;
    procedure gridCustomerGetCellParams(Sender: TObject; Column: TColumnEh;
      AFont: TFont; var Background: TColor; State: TGridDrawState);
    procedure btnLocateClick(Sender: TObject);
    procedure btnFilterClick(Sender: TObject);
    procedure btnShowAllClick(Sender: TObject);
    procedure gridCustomerTitleClick(Column: TColumnEh);
    procedure FormCreate(Sender: TObject);
    procedure btnDelClick(Sender: TObject);
    procedure btnClearClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
    procedure btnPrintClick(Sender: TObject);
    procedure btnImportClick(Sender: TObject);
    procedure btnExportClick(Sender: TObject);
    procedure btnSetClick(Sender: TObject);
    procedure pmFontSetClick(Sender: TObject);
    procedure pmGridWidthClick(Sender: TObject);
    procedure pmPrintSetClick(Sender: TObject);
    procedure pmImportExecl1Click(Sender: TObject);
    procedure pmImportOldDocClick(Sender: TObject);
    procedure btnAddClick(Sender: TObject);
    procedure btnFirstClick(Sender: TObject);
    procedure btnLastClick(Sender: TObject);
    procedure pmFirstColorClick(Sender: TObject);
    procedure pmSecondColorClick(Sender: TObject);
    procedure pmExportExcelClick(Sender: TObject);
    procedure pmExportFileClick(Sender: TObject);
    procedure pmImportFileClick(Sender: TObject);
    procedure btnReLoginClick(Sender: TObject);
    procedure btnShopAdminClick(Sender: TObject);
    procedure btnTurnShopClick(Sender: TObject);
    procedure pmExcelSetClick(Sender: TObject);
    procedure pmDelSpaceClick(Sender: TObject);
  private
    { Private declarations }
    procedure init;
    procedure InitData;
    procedure InitGrid;
    procedure InitButton;
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

uses gendm, genFunc, IniFiles, RegExpr, RM_Class, ExcelMessage, Login,
  InfoShop, TurnShop, ExcelImportColSet;

{$R *.dfm}

procedure TfrmMain.gridCustomerGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin
  if gridCustomer.SumList.RecNo mod 2 = 1 then
  begin
    Background := FIRSTCOLOR;
//    sncDBCurrencyInplaceEdit.Color := FIRSTCOLOR;
  end
  else
  begin
    Background := SECOUNDCOLOR;
//    sncDBCurrencyInplaceEdit.Color := SECOUNDCOLOR;
  end;
end;

procedure TfrmMain.btnLocateClick(Sender: TObject);
const
  sFieldName: array[0..3] of string = ('Name', 'VIP', 'Tel', 'Remark');
var
  str: string;
begin

  str := Trim(edtValue.Text);
  if str = '' then
  begin
    Exit;
  end;
  DM.QueCustomer.Locate(sFieldName[comFind.ItemIndex], str, [loCaseInsensitive, loPartialKey]);
end;

procedure TfrmMain.btnFilterClick(Sender: TObject);
const
  sFieldName: array[0..3] of string = ('Name', 'VIP', 'Tel', 'Remark');
var
  str: string;
  iID: Integer;
begin
  iID := -1;
  str := Trim(edtValue.Text);
  if str = '' then
  begin
    Exit;
  end;
  if DM.QueCustomer.RecordCount > 0 then
  begin
    iID := DM.QueCustomer.FieldByName('ID').AsInteger;
  end;
  DM.QueCustomer.Filter := sFieldName[comFind.ItemIndex] + ' like ' + QuotedStr('%' + str + '%');
  DM.QueCustomer.Filtered := True;
  if iID > 0 then
  begin
    DM.QueCustomer.Locate('ID', iID, [loCaseInsensitive]);
  end;
end;

procedure TfrmMain.btnShowAllClick(Sender: TObject);
var
  iID: Integer;
begin
  iID := -1;
  if DM.QueCustomer.RecordCount > 0 then
  begin
    iID := DM.QueCustomer.FieldByName('ID').AsInteger;
  end;
  DM.QueCustomer.Filtered := False;
  if iID > 0 then
  begin
    DM.QueCustomer.Locate('ID', iID, [loCaseInsensitive]);
  end;
end;

procedure TfrmMain.gridCustomerTitleClick(Column: TColumnEh);
var
  ii: integer;
  bUp: boolean;
  strFieldName: string;
  iID: Integer;
begin
  if DM.QueCustomer.RecordCount = 0 then
  begin
    Exit;
  end;
  iID := DM.QueCustomer.FieldByName('ID').AsInteger;
  strFieldName := Column.FieldName;
  if UpperCase(strFieldName) = 'VIP' then
  begin
    strFieldName := 'RealVIP';
  end;
  if DM.QueCustomer.FieldByName(strFieldName).FieldKind = fkData then
  begin
    if Column.Title.SortMarker = smUpEh then bUp := true else bUp := false;
    for ii := 0 to gridCustomer.Columns.Count - 1 do
    begin
      gridCustomer.Columns[ii].Title.SortMarker := smNoneEh;
    end;

    if bUp then
    begin
      Column.Title.SortMarker := smDownEh;
      DM.QueCustomer.Sort := strFieldName + ' DESC';
    end
    else
    begin
      Column.Title.SortMarker := smUpEh;
      DM.QueCustomer.Sort := strFieldName + ' ASC';
    end;
  end;
  DM.QueCustomer.Locate('ID', iID, [loCaseInsensitive]);
end;

procedure TfrmMain.init;
begin
  InitData;
  InitGrid;
  InitButton;
end;

procedure TfrmMain.InitData;
var
  sSQL: string;
begin
  laShop.Caption := gUserInfo.sCustomer;
  if gUserInfo.sCustomer = '全部客户' then
  begin
    sSQL := 'select * from Customer order by RealVIP';
  end
  else
  begin
    sSQL := 'select * from Customer where Shop = ' + QuotedStr(gUserInfo.sCustomer) + ' order by RealVIP';
  end;
  SetAdoQue(DM.QueCustomer, sSQL);
  gridCustomer.Columns[2].Title.SortMarker := smUpEh;
  //gridCustomer.Columns.
end;

procedure TfrmMain.InitGrid;
var
  ini: TIniFile;
  strWidth: string;
  arrWidth: TStrings;
  i: Integer;
  reg: TRegExpr;
  strFont: string;
begin
  ini := TIniFile.Create(gUserInfo.sAppPath + 'config.ini');
  if ini.ValueExists(gUserInfo.sTitle, 'FIRSTCOLOR') then
  begin
    FIRSTCOLOR := TColor(ini.ReadInteger(gUserInfo.sTitle, 'FIRSTCOLOR', $00B5E8E8));
  end;
  if ini.ValueExists(gUserInfo.sTitle, 'SECOUNDCOLOR') then
  begin
    SECOUNDCOLOR := TColor(ini.ReadInteger(gUserInfo.sTitle, 'SECOUNDCOLOR', $00B9E3D7));
  end;
  if ini.ValueExists(gUserInfo.sTitle, 'GridWidth') then
  begin
    strWidth := ini.ReadString(gUserInfo.sTitle, 'GridWidth', '89;236;139;264;153');
    arrWidth := TStringList.Create;
    reg := TRegExpr.Create;
    reg.Expression := ';';
    reg.Split(strWidth, arrWidth);
    for i := 0 to arrWidth.Count - 1 do
    begin
      if i >= gridCustomer.Columns.Count then
      begin
        Break;
      end;
      gridCustomer.Columns[i].Width := StrToIntEx(arrWidth[i]);
    end;
    arrWidth.Free;
    reg.Free;
  end;
  if ini.ValueExists(gUserInfo.sTitle, 'GridFont') then
  begin
    strFont := ini.ReadString(gUserInfo.sTitle, 'GridFont', '"新宋体",15,[],-16777208,134');
    StringToFont(strFont, gridCustomer.Font);
  end;
  ini.Free;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  init;
end;

procedure TfrmMain.InitButton;
begin

  btnAdd.Enabled := False;
  btnImport.Enabled := False;
  btnSave.Enabled := False;
  btnDel.Enabled := False;
  btnClear.Enabled := False;
  btnShopAdmin.Enabled := False;
  btnTurnShop.Enabled := False;
  gridCustomer.Options := gridCustomer.Options - [dgEditing];
  gridCustomer.Columns[0].Visible := False;
  pmDelSpace.Enabled := False;
  pmExcelSet.Enabled := False;
  if gUserInfo.sCustomer = '全部客户' then
  begin
    gridCustomer.Columns[0].Visible := True;
    if gUserInfo.iLoginRole > 1 then
    begin
      btnSave.Enabled := True;
      btnTurnShop.Enabled := True;
    end;
    Exit;
  end;
  if gUserInfo.iLoginRole > 0 then
  begin
    btnAdd.Enabled := True;
    btnImport.Enabled := True;
    btnSave.Enabled := True;
    gridCustomer.Options := gridCustomer.Options + [dgEditing];
    pmDelSpace.Enabled := True;
    pmExcelSet.Enabled := True;
  end;
  if gUserInfo.iLoginRole > 1 then
  begin
    btnDel.Enabled := True;
    btnClear.Enabled := True;
    btnShopAdmin.Enabled := True;
    btnTurnShop.Enabled := True;

  end;

end;

procedure TfrmMain.btnDelClick(Sender: TObject);
begin
  DeleteOneADORecord(DM.QueCustomer);
end;

procedure TfrmMain.btnClearClick(Sender: TObject);
begin
  if Application.MessageBox(PChar('真的要全部删除资料?'), PChar('询问'), MB_YESNO) = IDNo then
  begin
    Exit;
  end;
  DeleteAllADORecord(DM.QueCustomer);
end;

procedure TfrmMain.btnSaveClick(Sender: TObject);
begin
  DoAdoqueryPost(DM.QueCustomer);
end;

procedure TfrmMain.btnPrintClick(Sender: TObject);
begin
  DM.RMGridReport1.LoadFromFile(gUserInfo.sAppPath + 'rep.rls');
  DM.RMGridReport1.PrepareReport;
  DM.RMGridReport1.PrintPreparedReport('', 1, true, rmppAll);
end;

procedure TfrmMain.btnImportClick(Sender: TObject);
var
  iPoint: TPoint;
begin
  if GetCursorPos(iPoint) then
  begin
    PopupMenu1.Popup(iPoint.X, iPoint.Y);
  end;
end;

procedure TfrmMain.btnExportClick(Sender: TObject);
var
  iPoint: TPoint;
begin
  if GetCursorPos(iPoint) then
  begin
    PopupMenu2.Popup(iPoint.X, iPoint.Y);
  end;
end;

procedure TfrmMain.btnSetClick(Sender: TObject);
var
  iPoint: TPoint;
begin
  if GetCursorPos(iPoint) then
  begin
    PopupMenu3.Popup(iPoint.X, iPoint.Y);
  end;
end;

procedure TfrmMain.pmFontSetClick(Sender: TObject);
begin
  with TFontDialog.Create(Self) do
  begin
    Font := gridCustomer.Font;
    if Execute then
    begin
      gridCustomer.Font := Font;
      ReadInifileString('GridFont', FontToString(Font), 2);
    end;
  end;
end;

procedure TfrmMain.pmGridWidthClick(Sender: TObject);
var
  i, iCount: Integer;
  strWidth: string;

begin
  iCount := gridCustomer.Columns.Count;
  strWidth := IntToStr(gridCustomer.Columns[0].Width);
  for i := 1 to iCount - 1 do
  begin
    strWidth := strWidth + ';' + IntToStr(gridCustomer.Columns[i].Width);
  end;
  ReadInifileString('GridWidth', strWidth, 2);
end;

procedure TfrmMain.pmPrintSetClick(Sender: TObject);
begin
  DM.RMGridReport1.DesignReport;
end;

procedure TfrmMain.pmImportExecl1Click(Sender: TObject);
var

  sFileName, sTemp, sSQL: string;
  iCount, iNo, iRow, i: Integer;
  bTel, bRemark: Boolean;
  iVip, iName, iTel, iRemark: Integer;
  iniFile: TIniFile;
begin
  if not ShowExcelMessage(sFileName, iNo, iRow) then
  begin
    Exit;
  end;
  try
    Screen.Cursor := crHourGlass;
    iniFile := TIniFile.Create(gUserInfo.sAppPath + 'config.ini');
    bTel := iniFile.ReadBool(gUserInfo.sTitle, 'ExcelTel', False);

⌨️ 快捷键说明

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