📄 unit_global_variant.~pas
字号:
For i := 1 to Length(IntToStr(iNum)) Do
sTempStr[i + 10 - Length(IntToStr(iNum))] :=
IntToStr(iNum)[i];
Result := sTempStr;
end;
function SelectMessageBox(Text:string; CaptionNum: integer; Flags: integer): Integer;
begin
result := 0;
if CaptionNum = 1 then
begin
case Flags of
1: result := Application.MessageBox(pchar(Text),'提示',MB_OK + MB_ICONEXCLAMATION + MB_DEFBUTTON1 );
2: result := Application.MessageBox(pchar(Text),'提示',MB_OKCANCEL + MB_ICONEXCLAMATION + MB_DEFBUTTON1);
3: result := Application.MessageBox(pchar(Text),'提示',MB_YESNO + MB_ICONEXCLAMATION + MB_DEFBUTTON1);
end;
end
else if CaptionNum = 2 then
begin
case Flags of
1: result := Application.MessageBox(pchar(Text),'错误',MB_OK + MB_ICONERROR + MB_DEFBUTTON1 );
2: result := Application.MessageBox(pchar(Text),'错误',MB_OKCANCEL + MB_ICONERROR + MB_DEFBUTTON1);
3: result := Application.MessageBox(pchar(Text),'错误',MB_YESNO + MB_ICONERROR + MB_DEFBUTTON1);
end;
end;
end;
function GetMac:string;
procedure NBGetMac(Strings: TStrings);
function HexBL(by: Byte): String;
begin
Result := Format('%x', [by]);
if Length(Result) < 2 then
Result := '0' + Result;
end;
var
NCB: TNCB;
Adapter: TAdapterStatus;
LanaEnum: TLanaEnum;
I, J: Integer;
Str: String;
begin
Strings.Clear;
ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBENUM);
NetBios(@NCB);
NCB.ncb_buffer := @LanaEnum;
NCB.ncb_length := SizeOf(LanaEnum);
NCB.ncb_command := Chr(NCBENUM);
NetBios(@NCB);
for I := 0 to Ord(LanaEnum.length) - 1 do
begin
ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBRESET);
NCB.ncb_lana_num := LanaEnum.lana[I];
NetBios(@NCB);
ZeroMemory(@NCB,SizeOf(NCB));
NCB.ncb_command := Chr(NCBASTAT);
NCB.ncb_lana_num := LanaEnum.lana[I];
StrPCopy(NCB.ncb_callname,'*');
NCB.ncb_buffer := @Adapter;
NCB.ncb_length := SizeOf(Adapter);
NetBios(@NCB);
Str := '';
if (Adapter.xmit_success <> 0) and (Adapter.recv_success <> 0) then
begin
for J := 0 to 5 do
begin
if J > 0 then Str := Str + '-';
Str := Str + HexBL(Byte(Adapter.adapter_address[J]));
end;
Strings.Add(Str);
end;
end;
end;
var
cardlist:Tstrings;
stemp:string;
begin
cardlist:=Tstringlist.Create;
NBGetMac(cardlist);
if cardlist.Count > 0 then
stemp:=cardlist.Strings[0];
while pos('-',stemp)>0 do
system.Delete(stemp,pos('-',stemp),1);
result:=stemp
end;
//为目标数据集添加所有字段
Function _AddAllFields(DestClientDataSet: TClientDataSet):Boolean;
var
k,j: Integer;
fTempField :TField;
begin
Result := False;
fTempField := TField.Create(DestClientDataSet);
if DestClientDataSet <> Nil then
begin
with DestClientDataSet Do
begin
//首先判断该数据集是否已经存在字段定义?
//如果没有则打开数据集,取得字段定义。
If FieldDefs.Count = 0 then
begin
//此部分程序用以减少取回客户端的无用记录数。
FetchParams;
if Params.Count > 0 then
begin
for k:=0 to Params.count-1 do
begin
case Params[k].DataType of
ftstring:Params[k].Value:=' ';
ftinteger:Params[k].Value:=0;
ftDateTime:Params[k].Value := StrToDateTime('1900-01-01');
end;
end;
end;
Open;
CLose;
end;
//按照字段定义生成Field
for j:=0 to FieldDefs.Count -1 do
begin
if Fields.FindField(FieldDefs[j].Name)<>nil then
Continue;
Case FieldDefs[j].DataType of
ftSmallint: fTempField:=TSmallIntField.Create(DestClientDataSet);
ftInteger: fTempField:=TIntegerField.Create(DestClientDataSet);
ftBoolean: fTempField:=TBooleanField.Create(DestClientDataSet);
ftString: fTempField:=TStringField.Create(DestClientDataSet);
ftDateTime: fTempField:=TDateTimeField.Create(DestClientDataSet);
ftFloat: fTempField:=TFloatField.Create(DestClientDataSet);
else Continue;
end;
With fTempField Do
begin
FieldName:=FieldDefs[j].name;
FieldKind:=fkData ;
Index:=j;
Name:=DestClientDataSet.name+FieldDefs[j].name;
DisplayLabel:= FieldDefs[j].name;
AutoGenerateValue:=arNone;
DataSet:=DestClientDataSet;
end;
end;
Result := True;
end;
end;
fTempField.Free;
end;
procedure ShowLineedt(stgReport:TDsnStage;iRepControlsNum:integer) ;
var
i,j:integer ;
begin
for i:=0 to TQuickRep(stgReport.Controls[iRepControlsNum]).ControlCount-1 do
if TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i] is TQRBand then
For j:=0 to TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controlcount-1 do
if TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].tag = 1 then
TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].Enabled := True ;
end ;
procedure HideLineedt(stgReport:TDsnStage;iRepControlsNum:integer) ;
var
i,j:integer ;
begin
for i:=0 to TQuickRep(stgReport.Controls[iRepControlsNum]).ControlCount-1 do
if TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i] is TQRBand then
For j:=0 to TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controlcount-1 do
if TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].tag = 1 then
TQRBand(TQuickRep(stgReport.Controls[iRepControlsNum]).Controls[i]).Controls[j].Enabled := False ;
end ;
procedure query_openwindow(mainform:tform;appserver,subsysid,userid,setflag0:pchar);external 'pu_dll_reportdesign.dll';
function ConvertDigit_old(iDigit:Double):String;
var
iLen:integer ;
iLoop:integer ;
sUpperBefore,sUpperAfter:string;//小数和整数部分的大写
sDotBefore,sDotAfter:string;//小数部分和整数部分的小写
begin
sUpperBefore:='';
sUpperAfter:='';
iLen:=Length(FloatTostr(iDigit));
if pos('.',floatTostr(iDigit))<>0 then
begin
sDotBefore:=Copy(floattostr(iDigit),1,Pos('.',floatTostr(iDigit))-1);
sDotAfter:=Copy(floattostr(iDigit),Pos('.',floatTostr(iDigit))+1,iLen-Pos('.',floatTostr(iDigit)));
end
else
sDotBefore:=FloatTostr(iDigit);
iLen:=Length(sDotBefore);
for iLoop:=1 to iLen do
sUpperBefore:=sUpperBefore+UpperDigit(strToint(Copy(sDotBefore,iLoop,1)))+DigitDW(iLen-iLoop+1);
iLen:=Length(sDotAfter);
if iLen<>0 then
begin
if iLen=1 then
sUpperAfter:=UpperDigit(strToint(Copy(sDotAfter,1,1)))+'角零分'
else
sUpperAfter:=UpperDigit(strToint(Copy(sDotAfter,1,1)))+'角'+
UpperDigit(strToint(Copy(sDotAfter,2,1)))+'分';
end
else
sUpperAfter:='整';
Result:=sUpperBefore+'元'+sUpperAfter;
end;
function DigitDW(iDW:integer):string;
var
sDW:String;
begin
if iDW=2 then
sDW:='拾'
else if iDW=3 then
sDW:='百'
else if iDW=4 then
sDW:='仟'
else if iDW=5 then
sDW:='万'
else if iDW=6 then
sDW:='拾'
else if iDW=7 then
sDW:='百'
else if iDW=8 then
sDW:='仟'
else if iDW=9 then
sDW:='亿';
Result:=sDW;
end;
function UpperDigit(iDigit:integer):string;
var
sUpper:string;
begin
if iDigit=0 then
sUpper:='零'
else if iDigit=1 then
sUpper:='壹'
else if iDigit=2 then
sUpper:='贰'
else if iDigit=3 then
sUpper:='叁'
else if iDigit=4 then
sUpper:='肆'
else if iDigit=5 then
sUpper:='伍'
else if iDigit=6 then
sUpper:='陆'
else if iDigit=7 then
sUpper:='柒'
else if iDigit=8 then
sUpper:='捌'
else if iDigit=9 then
sUpper:='玖';
Result:=sUpper;
end;
function ConvertDigit(iDigital: Double): String;
var
iLen:integer ;
iLoop:integer ;
sTmp: String;
bFNum: Boolean;
sTmpStr: TStrings;//分割用临时变量
sUpperBefore,sUpperAfter:string;//小数和整数部分的大写
sDotBefore,sDotAfter:string;//小数部分和整数部分的小写
function UpperNum(num:string):string;
begin
case strtoint(num) of
0: result := '零';
1: result := '壹';
2: result := '贰';
3: result := '叁';
4: result := '肆';
5: result := '伍';
6: result := '陆';
7: result := '柒';
8: result := '捌';
9: result := '玖';
end;
end;
function Get1Num(var s:string):string;
var
iori:integer;
begin
result:='';
iori:=strtoint(s);
if iori>=1000 then
result:=uppernum(copy(s,1,1))+'仟'
else begin
if (iOri>=100) then
result:=uppernum(copy(s,1,1))+'佰'
else begin
if iori>=10 then
begin
if length(s)>2 then
result:=result+'零';
s:=inttostr(strtoint(s));
result:=result+uppernum(copy(s,1,1))+'拾'
end
else begin
if iori>0 then
begin
if length(s)>1 then
result:=result+'零';
s:=inttostr(strtoint(s));
result:=result+uppernum(copy(s,1,1))
end else result:='';
end;
end;
end;
delete(s,1,1);
end;
function Get4Num(str:string):string;
var
sori,stemp:string;
begin
sori:=inttostr(strtoint(str));
stemp:=sori;
while length(stemp)>0 do
result:=result+get1num(stemp);
end;
begin
sUpperBefore:='';
sUpperAfter:='';
sDotBefore := '';
sDotAfter := '';
sTmp := '';
//判断传入数值的正负
if iDigital < 0 then
bFnum := True
else bFnum := False;
iDigital := Abs(iDigital);
//首先将传入的数字分为小数点前、后两部分
iLen:=Length(FloatTostr(iDigital));
if pos('.',floatTostr(iDigital))<>0 then
begin
sDotBefore:=Copy(floattostr(iDigital),1,
Pos('.',floatTostr(iDigital))-1);
sDotAfter:=Copy(floattostr(iDigital),Pos('.',floatTostr(iDigital))+1,
iLen-Pos('.',floatTostr(iDigital)));
end
else
sDotBefore:=FloatTostr(iDigital);
//处理整数部分
//先将数字按照4位一组进行分割。
sTmpStr := TStringList.Create;
sTmpStr.Clear;
iLen := Length(sDotBefore);
if iLen < 4 then
sTmpStr.Add(sDotBefore)
else begin
for iLoop := iLen Downto 1 Do
begin
sTmp := Copy(sDotBefore,iLoop,1) + sTmp;
if (Length(sTmp) = 4) or (iLoop = 1)Then
begin
sTmpStr.Add(sTmp);
sTmp := '';
end;
end;
end;
if sTmpStr.Count = 1 then
sUpperBefore := Get4Num(sTmpStr.Strings[0])
else if (sTmpStr.Count = 2) then
begin
if (Copy(sTmpStr.Strings[0],1,1) = '0') and
(StrToInt(sTmpStr.Strings[0]) <> 0) then
begin
sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万零'+
Get4num(sTmpStr.Strings[0]);
end
else
sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万'+
Get4num(sTmpStr.Strings[0]);
end
else if sTmpStr.Count = 3 then
begin
if (Copy(sTmpStr.Strings[0],1,1) = '0') and
(StrToInt(sTmpStr.Strings[0]) <> 0) then
begin
if StrToInt(sTmpStr.Strings[1]) <> 0 then
sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万零'+
Get4num(sTmpStr.Strings[0])
else sUpperBefore :='零'+ Get4num(sTmpStr.Strings[0]);
end
else begin
if StrToInt(sTmpStr.Strings[1]) <> 0 then
sUpperBefore := Get4Num(sTmpStr.Strings[1])+'万'+
Get4num(sTmpStr.Strings[0])
else
sUpperBefore := Get4num(sTmpStr.Strings[0]);
end;
if (Copy(sTmpStr.Strings[1],1,1) = '0') and
(StrToInt(sTmpStr.Strings[1]) <> 0) then
begin
sUpperBefore := Get4Num(sTmpStr.Strings[2])+'亿零'+ sUpperBefore;
end
else
sUpperBefore := Get4Num(sTmpStr.Strings[2])+'亿'+sUpperBefore;
end;
//处理小数部分
iLen:=Length(sDotAfter);
if iLen<>0 then
begin
if iLen=1 then
begin
if Copy(sDotAfter,1,1) <> '0' then
sUpperAfter:=UpperNum(Copy(sDotAfter,1,1))+'角'
else sUpperAfter := '整';
end
else begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -