📄 pubunit.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 + -