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

📄 common.pas

📁 里面有个人一天消费管理
💻 PAS
字号:
unit common;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Forms, ExtCtrls,  StdCtrls,
  RzPanel,DateUtils, RzButton, DB, ADODB, RzDBCmbo, RzGrids, Graphics, Grids,
  Controls, Dialogs, RzCmboBx, ImgList;

  procedure ShowPanel(const ChildFormPanel,MainFormPanel:TRzPanel);
  procedure EmptyAdoTable(const tblTableName:TADOTable);
  function Base64Encode(const s: string): string;
  function Base64Decode(const s: string): string;
  function GetADOTableFieldValue(const tblTableName:TADOTable;strFieldName: string):TStrings;
  function GetADOQueryFieldValue(const tblTableName:TADOQuery;strFieldName: string):TStrings;
  function GetPrestr(Substr: string; i,j:integer):string;  //获取字符串中指定字节
  function GettwoFieldValue(const tblTableName:TADOTable;strFieldName1,strFieldName2: string):TStrings;
  function SumADOQueryField(const tblTableName:TADOQuery;SqlStr:string;strFieldName1: string;SearchStr: string):Real;
  procedure AddRenYuan(const cmbbx:TRzDBComboBox);
  function FormatMonth(i:integer):string;
  function SumField(const tblTableName:TADOQuery;FieldName:string):string;
  procedure StrGrdSum(const StrGrd:TRzstringGrid);
  function MonthDays(iYear,iMonth:Word):Word;
  Function Formatvalue(s:string):double; //假如为空值则保存 0
  Function  CheckStrGrdInfo(const StrGrd:TRzStringGrid):Boolean; 
  procedure ClearStrGrd(const StrGrd:TRzstringGrid);
  
implementation

uses frmdata, frmhomepage;

procedure ShowPanel(const ChildFormPanel,MainFormPanel: TRzPanel);
var
    I,J:Integer;
    panChildPanelName:TRzPanel;
begin
  for  I:= 0 to MainFormPanel.ControlCount-1 do
  begin
    if MainFormPanel.Controls[I].Name = 'panChild' then
    begin
      panChildPanelName:=(MainFormPanel.controls[I] as TRzPanel);
      for J:=0 to panChildPanelName.ControlCount-1 do

       if panChildPanelName.Controls[J].Name='cmdClose' then

        (panChildPanelName.Controls[J] as TRzButton).Click;
       end
       else
        Exit;

  end;

    ChildFormPanel.Parent := MainFormPanel;
    ChildFormPanel.Left := 0;
    ChildFormPanel.Top := 0;
end;

function Base64Encode(const s: string): string;
var
  i,c1,c2,c3: Integer;
  m,n: Integer;
const
  Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
  Result := '';
  m:=1;
  n:=0;
  for i := 1 to (Length(s) div 3) do
  begin
    c1 := Ord(s[m]);
    c2 := Ord(s[m+1]);
    c3 := Ord(s[m+2]);
    m:=m+3;
    Result := Result+base64[(c1 shr 2)and $3F+1];
    Result := Result+base64[((c1 shl 4)and $30) or ((c2 shr 4)and $0F)+1];
    Result := Result+base64[((c2 shl 2)and $3C) or ((c3 shr 6)and $03)+1];
    Result := Result+base64[c3 and $3F+1];
    n:=n+4;
    if(n = 76)then
    begin
       n:=0;
       Result := Result+#13#10;
    end;
  end;
  if (Length(s) mod 3)=1 then
  begin
    c1 := Ord(s[m]);
    Result := Result+base64[(c1 shr 2)and $3F+1];
    Result := Result+base64[(c1 shl 4)and $30+1];
    Result := Result+'=';
    Result := Result+'=';
  end;
  if (Length(s) mod 3)=2 then
  begin
    c1 := Ord(s[m]);
    c2 := Ord(s[m+1]);
    Result := Result+ base64[(c1 shr 2)and $3F+1];
    Result := Result+ base64[((c1 shl 4)and $30) or ((c2 shr 4)and $0F)+1];
    Result := Result+base64[(c2 shl 2)and $3C+1];
    Result := Result+ '=';
  end;
end;

function Base64Decode(const s: string): string;
var
  i,m,n: Integer;
  c1,c2,c3,c4: Integer;
const
  Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
  Result := '';
  n:=1;
  m:=Length(s);
  if s[m]='='then m:=m-1;
  if s[m]='='then m:=m-1;
  for i:=1 to m div 4 do
  begin
    c1:=Pos(s[n],Base64)-1;
    c2:=Pos(s[n+1],Base64)-1;
    c3:=Pos(s[n+2],Base64)-1;
    c4:=Pos(s[n+3],Base64)-1;
    n:=n+4;
    Result:=Result+Chr(((c1 shl 2)and $FC)or((c2 shr 4)and $3));
    Result:=Result+Chr(((c2 shl 4)and $F0)or((c3 shr 2)and $0F));
    Result:=Result+Chr(((c3 shl 6)and $C0)or c4);
  end;
  if m mod 4=2 then
  begin
    c1:=Pos(s[n],Base64)-1;
    c2:=Pos(s[n+1],Base64)-1;
    Result:=Result+Chr(((c1 shl 2)and $FC)or((c2 shr 4)and $3));
  end;

  if m mod 4=3 then
  begin
    c1:=Pos(s[n],Base64)-1;
    c2:=Pos(s[n+1],Base64)-1;
    c3:=Pos(s[n+2],Base64)-1;
    Result:=Result+Chr(((c1 shl 2)and $FC)or((c2 shr 4)and $3));
    Result:=Result+Chr(((c2 shl 4)and $F0)or((c3 shr 2)and $0F));
  end;

end;

function GetADOTableFieldValue(const tblTableName:TADOTable;strFieldName: string):TStrings;
var
    CurrentTableRecordNum: Integer;
begin
    Result:=TStringList.Create;
    Result.Clear;
    CurrentTableRecordNum := tblTableName.RecNo;
    tblTableName.First;
    while not tblTableName.EOF do
    begin
        Result.Add(tblTableName[strFieldName]);
        tblTableName.Next;
    end;
    tblTableName.MoveBy(CurrentTableRecordNum);
end;

function GetADOQueryFieldValue(const tblTableName:TADOQuery;strFieldName: string):TStrings;overload;
var
    CurrentTableRecordNum: Integer;
begin
    Result:=TStringList.Create;
    Result.Clear;
    CurrentTableRecordNum := tblTableName.RecNo;
    tblTableName.First;
    while not tblTableName.EOF do
    begin
        Result.Add(tblTableName[strFieldName]);
        tblTableName.Next;
    end;
    tblTableName.MoveBy(CurrentTableRecordNum);
end;

function GetPrestr(Substr: string; i,j:integer):string;
var
  PrevStr:string;
begin
  PrevStr:=Copy(Substr,i,j);
  Result:=PrevStr;
end;

function GettwoFieldValue(const tblTableName:TADOTable;strFieldName1,strFieldName2: string):TStrings;
var
    CurrentTableRecordNum: Integer;
begin
    Result:=TStringList.Create;
    Result.Clear;
    CurrentTableRecordNum := tblTableName.RecNo;
    tblTableName.First;
    while not tblTableName.EOF do
    begin
        Result.Add(tblTableName[strFieldName1]+'-'+tblTableName[strFieldName2]);
        tblTableName.Next;
    end;
    tblTableName.MoveBy(CurrentTableRecordNum);
end;

function SumADOQueryField(const tblTableName:TADOQuery;SqlStr:string;strFieldName1: string;SearchStr: string): Real;
var
    CurrentTableRecordNum: Integer;
begin
with tblTableName do
  begin
    SQL.Clear;
    SQL.Add(SqlStr);
    Open;
    CurrentTableRecordNum :=RecNo;
    First;
    Result:=0;
    while not EOF do
    begin
        if tblTableName[strFieldName1]=Trim(SearchStr) then
            Result:=Result+tblTableName['金额'];
        Next;
    end;
    MoveBy(CurrentTableRecordNum);
  end;
end;

procedure EmptyAdoTable(const tblTableName:TADOTable);
begin
with tblTableName do
  begin
    close;
    Open;
    First;
    while not EOF do
    begin
      Delete;
    end;
  end;
end;

procedure AddRenYuan(const cmbbx:TRzDBComboBox);
begin
  cmbbx.Items.Clear;
  cmbbx.Items.AddStrings(GetADOTableFieldValue(dataFm.Tbl_family_option,'xm'));
  //cmbbx.Text:=cmbbx.Items[0];
end;

function FormatMonth(i:integer):string;
begin
  if i<10 then  Result:='0'+inttostr(i)  else  Result:=inttostr(i);
end;

function SumField(const tblTableName:TADOQuery;FieldName:string):string;
var   TableRecordNum: Integer;
jinee:real;
begin
if tblTableName.Active=true then
begin
with tblTableName do
  begin
    TableRecordNum :=RecNo;
    First;
    jinee:=0;
    while not EOF do
    begin
        jinee:=jinee+FieldByName(FieldName).asfloat;
        Next;
    end;
    MoveBy(TableRecordNum);
  end;
  Result:=floattostr(jinee);
end;
end;

procedure StrGrdSum(const StrGrd:TRzstringGrid);
var colx,rowx,coli,rowj,coly,rowy,z:integer;
colvalue,rowvalue,sumvalue:double;
begin
  colx:=StrGrd.ColCount;
  rowx:=StrGrd.RowCount;
  colvalue:=0;
  rowvalue:=0;
  sumvalue:=0;
  
  if (colx>2) and (rowx>2)  then
  begin

  for coli :=1 to colx-2 do
  begin
   for rowj:=1 to rowx-2 do
   begin
     colvalue:=colvalue+strtofloat(StrGrd.Cells[coli,rowj]);
     //StrGrd.Cells[coli,rowj]:=floattostr(colvalue);
   end;
   StrGrd.Cells[coli,rowx-1]:=floattostr(colvalue);
   colvalue:=0;
  end;

  for coly:=1 to rowx-2 do
  begin
   for rowy:=1 to colx-2  do
   begin
     rowvalue:=rowvalue+strtofloat(StrGrd.Cells[rowy,coly]);
     //StrGrd.Cells[rowy,coly]:=floattostr(rowvalue);
   end;
   StrGrd.Cells[colx-1,coly]:=floattostr(rowvalue);
   rowvalue:=0;
  end;

  for z:=1 to colx-2 do
  begin
    sumvalue:=sumvalue+strtofloat(StrGrd.Cells[z,rowx-1]);
  end;
 
  StrGrd.Cells[colx-1,rowx-1]:=floattostr(sumvalue);
 end;
end;

function MonthDays(iYear,iMonth:Word):Word;
begin
 case iMonth of
   1,3,5,7,8,10,12: Result:=31;
   4,6,9,11: Result:=30;
   2://如果是闰年
     if IsLeapYear(iYear) then
       Result:=29
     else
       Result:=28
 else
   Result:=0;
 end;
end;

Function Formatvalue(s:string):double; //假如为空值则保存 0
begin
  if s='' then result:=0 else Result:=strtofloat(s);
end;

Function  CheckStrGrdInfo(const StrGrd:TRzStringGrid):Boolean;  //判断支出列表有没有输入
var Rowx,i:integer;
GrdValue:double;
begin
  //Colx:= StrGrd.ColCount;
  Rowx:= StrGrd.RowCount;
  GrdValue:=0;
  if Rowx>1 then
  begin
    for I := 1 to Rowx - 1 do
    begin
      GrdValue:=GrdValue+Formatvalue(StrGrd.Cells[1,i]);       //
    end;
    //showmessage(floattostr(GrdValue));
    if GrdValue<>0 then   Result:=true else Result:=false;
  end
  else
  begin
    Result:=false;
  end;
end;

procedure ClearStrGrd(const StrGrd:TRzstringGrid);
var Colx,Rowx:integer;
begin
for Rowx := 0 to StrGrd.RowCount-1 do  //清空编辑框
  begin
     for Colx := 0 to StrGrd.ColCount-1 do
     begin
      StrGrd.Cells[Colx,Rowx]:='';
     end;
  end;
  StrGrd.ColCount:=2;
  StrGrd.RowCount:=2;
end;




end.

⌨️ 快捷键说明

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