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

📄 pubunit.pas

📁 工程预算系统
💻 PAS
字号:
unit pubunit;

interface

uses
    Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
    Db, ADODB, ImgList, StdCtrls, Buttons, ComCtrls, dbctrls, menus,
    Math,ComObj,Gauges,grids,DBGrids;
type
  TStrArray=array of string;
const
  MsgBxCaption = '高博预算提示';

//回车改变控件焦点
procedure DoPerForm(Fm:TForm;Key:Word) ;
procedure EnterToChangeFocus(Fm:TForm;Key:Word);

//运行SQL语句
function RunSQL(ADOQry_Temp: TADOQuery; SQLStr: string; RunType: Byte): Boolean;
procedure ShowError();

//删除
function RunDelSQL(ADOQry_Grid, ADOQry_Temp: TADOQuery; TableName: string;
  PrimaryKey:TStrArray): Boolean;

//给下拉列表框赋值
function SetCmbxItem(Cmbx: TComboBox; ADOQry_Temp: TADOQuery; SQLStr: string;
  hmAndmc: Boolean): TStrings;
  {格式化输出小数点}
  function formatstr(mygrid:TStringGrid;nrow:integer;str:string):string;

//设置一个Band的Visible属性
//procedure SetBandVisible(vfrReport:TfrReport;vBandName:string;vVisible:Boolean);

//给一个Mome赋值,当vChangeZero为True时,为0的vData转换为gsZeroExp
//procedure SetMemoData(vfrReport:TfrReport;vMemoName:string;vData:string);//;vChangeZero:Boolean);

//procedure Report_Print(ADOQry_Print:TADOQuery;vType:integer;vfrReport:TfrReport;Print_PrVw:Boolean);//True为打印,False为预览

implementation
//  uses MyPreView;

//回车改变控件焦点
procedure DoPerForm(Fm:TForm;Key:Word) ;
var
  WParam:Longint;
begin
  WParam:=0;
  if Key=VK_UP then
    WParam:=1;
  if Key=VK_RETURN then
    Fm.Perform(WM_NEXTDLGCTL,WParam,0)
  else if not (Fm.ActiveControl is TComboBox) then
    Fm.Perform(WM_NEXTDLGCTL,WParam,0);

end;

procedure EnterToChangeFocus(Fm:TForm;Key:word);
var
  lbCancel:Boolean;
begin
  if (Fm.ActiveControl <> nil) and (key in [VK_RETURN,VK_DOWN,VK_UP])  then
  begin
    lbCancel:=False;
    if (Fm.ActiveControl is TMemo) then lbCancel:=True;
    if not lbCancel then
    begin
      DoPerForm(Fm,key);
      while not lbCancel do
        if  ((Fm.ActiveControl is TEdit) and (Fm.ActiveControl as TEdit).ReadOnly)
            or (Fm.ActiveControl is TDBGrid) or (Fm.ActiveControl is TListBox)
            or (Fm.ActiveControl is TComboBox )
            or (Fm.ActiveControl.Tag<>0)  //可把不接受焦点的控件的Tag 设为非0
      then
        DoPerForm(Fm,key)
      else
        lbCancel:=True;
    end;
  end;
end;

//结束输入回车改变控件焦点函数


//运行SQL语句
procedure ShowError();
begin
  Application.MessageBox(PChar('数据库连接出错,是不是已经删除了文件' + #13 +
    '或与供应商联系!'), MsgBxCaption, MB_OK + MB_ICONERROR);
end;

function RunSQL(ADOQry_Temp: TADOQuery; SQLStr: string; RunType: Byte): Boolean;
begin
  Result := True;
  try
    ADOQry_Temp.Close;
    if Length(SQLStr) > 0 then //SQLStr为空时,不修改原有ADOQry的SQL字符串
      begin
          ADOQry_Temp.SQL.Clear;
          ADOQry_Temp.SQL.Add(SQLStr);
      end;

    if RunType = 0 then //回传数据
      begin
        //ADOQry_Temp.Prepared := True;
        ADOQry_Temp.Open;
      end
    else //不回传数据
      ADOQry_Temp.ExecSQL;
  except
    ShowError();
    Result := False;
  end;
end;

//结束函数定义

//删除

function RunDelSQL(ADOQry_Grid, ADOQry_Temp: TADOQuery; TableName: string;
  PrimaryKey:TStrArray): Boolean;
var
  liRecno: longint;
  lsStr: string;
  i: integer;
begin
  Result := True;
  liRecno := ADOQry_Grid.Recno;
  lsStr := '';
  lsStr := ' Where ' + PrimaryKey[0] + '=' + '''' +
    ADOQry_Grid.FieldByName(PrimaryKey[0]).AsString + '''';
  for i := 1 to Length(PrimaryKey) - 1 do
    lsStr := lsStr + ' And ' + PrimaryKey[i] + '=' + '''' +
      ADOQry_Grid.FieldByName(PrimaryKey[i]).AsString + '''';
  if not RunSQL(ADOQry_Temp, 'Delete From ' + TableName + lsStr, 1) then
  begin
    Result := False;
    Exit;
  end;
  if not RunSQL(ADOQry_Grid, '', 0) then //刷新Query内容
  begin
    Result := False;
    Exit;
  end;
  ADOQry_Grid.First;
  if (liRecno < ADOQry_Grid.RecordCount - 1) and (liRecno > 1) then
    ADOQry_Grid.MoveBy(liRecno-1)
  else if liRecno > 1 then
    ADOQry_Grid.MoveBy(liRecno -2);
end;

//给下拉列表框赋值

function SetCmbxItem(Cmbx: TComboBox; ADOQry_Temp: TADOQuery; SQLStr: string;
  hmAndmc: Boolean): TStrings;
var
  i: integer;
  TStr1: TStrings;
begin
  TStr1 := TStringList.Create;
  Cmbx.Clear;
  if RunSQL(ADOQry_Temp, SQLStr, 0) then
  begin
    ADOQry_Temp.First;
    for i := 1 to ADOQry_Temp.RecordCount do
    begin
      if hmAndmc then
        TStr1.Add(Trim(ADOQry_Temp.FieldByName('hm').AsString));
      Cmbx.Items.Add(Trim(ADOQry_Temp.FieldByName('mc').AsString));
      ADOQry_Temp.Next;
    end;
  end;
  Result := TStr1;
  if not hmAndmc then
    TStr1.Free;
end;

//格式
{格式化输出小数点}
function formatstr(mygrid:TStringGrid;nrow:integer;str:string):string;
var
  rtemp:real;
begin
  if str<>'' then
    rtemp:=strtofloat(str)
  else
    rtemp:=0;
  Result:=Trim(Format('%10.'+Trim(mygrid.Cells[nrow,3])+'f',[rtemp]));
end;
//end;

//设置一个Band的Visible属性
{procedure SetBandVisible(vfrReport:TfrReport;vBandName:string;vVisible:Boolean);
var
  Tmp_frView: TfrView;
begin
  Tmp_frView := vfrReport.FindObject(vBandName);
  if Tmp_frView is TfrBandView then
    (Tmp_frView as TfrBandView).Visible:=vVisible;
end;

//end;

//给一个Mome赋值,当vChangeZero为True时,为0的vData转换为gsZeroExp
procedure SetMemoData(vfrReport:TfrReport;vMemoName:string;vData:string);//;vChangeZero:Boolean);
var
  Tmp_frView: TfrView;
begin
  Tmp_frView := vfrReport.FindObject(vMemoName);
  if Tmp_frView is TfrMemoView then
  begin
    vData:=Trim(vData);
    {if vChangeZero and (vData='0') and (gsZeroExp<>'0') then
    begin
      vData:=gsZeroExp;
      (Tmp_frView as TfrMemoView).Alignment:=2; //水平中对齐
    end
    else
      if Trim(Tmp_frView.Tag)<>'' then     //设定小数位数
        try
          vData:=Trim(FloatToStrF(StrToFloat(vData),ffFixed,15,StrToInt(Trim(Tmp_frView.Tag))));
        except
          vData:='0:00';
        end;
    Tmp_frView.Memo.Text:=vData;
  end;
end;     

//end;

procedure Report_Print(ADOQry_Print:TADOQuery;vType:integer;vfrReport:TfrReport;Print_PrVw:Boolean);//True为打印,False为预览
begin
  ADOQry_Print.DisableControls;
  Application.CreateForm(TF_MyPreView,F_MyPreView);
  vfrReport.Preview:=F_MyPreView.frPreview1;
  vfrReport.PrepareReport;
  if Print_PrVw then
    vfrReport.PrintPreparedReport('1',1,True,frAll)
  else
  begin
    vfrReport.ShowPreparedReport;
    F_MyPreView.ShowModal;
  end;
  F_MyPreView.Free;
  ADOQry_Print.First;
  ADOQry_Print.EnableControls;
end;}

//end;
end.

⌨️ 快捷键说明

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