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

📄 unit_main_dm.pas

📁 学习程序,用于初学进销存的参考代码学习程序,用于初学进销存的参考代码
💻 PAS
字号:
unit unit_main_dm;

interface

uses
  SysUtils, Classes, DB, ADODB,ComCtrls,QImgList,StrUtils,QDialogs,Controls,DBGrids;

type
  TMain_DM = class(TDataModule)
    ADOConn: TADOConnection;
    ADOQuery1: TADOQuery;
    ADO_CType: TADOTable;
    DS_CType: TDataSource;
    ADO_CLevel: TADOTable;
    DS_CLevel: TDataSource;
    ADO_CCredit: TADOTable;
    DS_CCredit: TDataSource;
    ADO_CCreditID: TAutoIncField;
    ADO_CCreditCredit_No: TStringField;
    ADO_CCreditCredit_Des: TStringField;
  private
    { Private declarations }
  public
    sCurrentUser:string; 
    procedure IniTreeView_OpenADOQuery(treename:TTreeView;adoname:TADOQuery;treebootcaption:string;nodetext_field:string;_sql:string);
    procedure ClickTreeView(treename:TTreeView;adoname:TADOQuery;sField:string);
    function  AutoCreateNo(_sql:string;sField:string;iLen :integer):string;
    function  AutoCreateDateTimeNo():string;
    function  GetDateLen(str:string):String;
    procedure NewTreeNode(treename:TTreeView;nodetext:string);
    procedure ExistEdit_Text_Validate(sText:string;_sql:string);
    procedure ExitActivePage();
    function MyQuestion(sCaption:string):boolean;
    procedure RegDBGridTitleCaption(frmname:string;grid:TDBGrid);
  end;
   const CloseForm = 8888;
var
  Main_DM: TMain_DM;

implementation

uses main;

{$R *.dfm}
function TMain_DM.MyQuestion(sCaption:string):boolean;
begin
    if MessageDlg(sCaption,mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    result:=true
    else  result:=false;
end;


procedure TMain_DM.IniTreeView_OpenADOQuery(treename:TTreeView;adoname:TADOQuery;treebootcaption:string;nodetext_field:string;_sql:string);
var bootnode,newnode:TTreeNode;
    sNodeText:string;
begin
    treename.Items.Clear;
    bootnode:=treename.Items.AddChild(nil,treebootcaption);
    bootnode.Collapse(true);
    adoname.Connection:=ADOConn;
    adoname.Close;
    adoname.SQL.Clear;
    adoname.SQL.Add(_sql);
    adoname.Open;
    adoname.First;
    while not adoname.Eof do
    begin
        sNodeText:=adoname.FieldByName(nodetext_field).AsString;
        newnode:=treename.Items.AddChild(bootnode,sNodeText);
        newnode.ImageIndex:=1;
        newnode.SelectedIndex:=2;
        adoname.Next;
    end;
    treename.FullExpand;
   // treename.Items.Item[1].Selected:=true;
end;
///////////////////////////////////////
// 点击树的节点查找出节点对应的数据记录
//
//////////////////////////////////////
procedure TMain_DM.ClickTreeView(treename:TTreeView;adoname:TADOQuery;sField:string);
var nodetext:string;
    loCaseInsensitive:TLocateOptions;
begin
    if treename.Selected.AbsoluteIndex>0 then
    begin
        nodetext:=treename.Selected.Text;
        adoname.Locate(sField,nodetext,loCaseInsensitive);
    end;
end;
//////传入字段,自动创建编号
function TMain_DM.AutoCreateNo(_sql:string;sField:string;iLen :integer):string;
var sNo :string;
    adoqry:TADOQuery;
    i,j:integer;
begin
    adoqry:=TADOQuery.Create(self);
    adoqry.Connection:=ADOConn;
    adoqry.Close;
    adoqry.SQL.Clear;
    adoqry.SQL.Add(_sql);
    adoqry.Open;
    if(adoqry.FieldByName(sField).AsInteger=0) then
    begin
        for  i:=1 to iLen-1  do
        sNo:='0'+sNo;
        sNo:=sNo+'1';
    end

    else
    begin
        sNo:=adoqry.FieldByName(sField).AsString;
        i:=StrToInt(sNo)+1;
        sNo:=IntToStr(i);
        i:=iLen-Length(sNo);
        if(i<>0) then
        begin
        for j:=0 to i-1 do
        sNo:='0'+sNo;
        end;

    end;
    adoqry.Free;
    Result:=sNo
end;
////////自动创建以时间为流水账的字符串编号
function  TMain_DM.AutoCreateDateTimeNo():string;
 var sYear,sMonth,sDay,sHour,sMin,sMM,sNowDateTime,sTmp:Word;
     dNowDateTime:TDateTime;
     sDateTime:string;
begin
 dNowDateTime:=Now();
 DecodeDate(dNowDateTime,sYear,sMonth,sDay);
 DecodeTime(dNowDateTime,sHour,sMin,sMM,sTmp);
 sDateTime:=GetDateLen(inttostr(sYear))+GetDateLen(inttostr(sMonth))+GetDateLen(inttostr(sDay))+GetDateLen(inttostr(sHour))+GetDateLen(inttostr(sMin))+GetDateLen(inttostr(sMM));
 result:=sDateTime;
end;
/////截取固定长度的字符串,不够前面补0
function  TMain_DM.GetDateLen(str:string):String;
var sReStr:string;
begin
    if Length(str)>=2 then
    sReStr:=Rightstr(str,2);
    if Length(str)<2 then
    begin
        sReStr:='0'+str;
    end;
    result:=sReStr;

end;
////////对树新增节点.
procedure TMain_DM.NewTreeNode(treename:TTreeView;nodetext:string);
var newnode:TTreeNode;
begin
    newnode:=treename.Items.AddChild(treename.TopItem,nodetext);
    newnode.ImageIndex:=1;
    newnode.SelectedIndex:=2;
    newnode.Selected:=true;
end;
procedure TMain_DM.ExistEdit_Text_Validate(sText:string;_sql:string);
var tmp:TADOQuery;
begin
    tmp:=TADOquery.Create(self);
    tmp.Connection:=Main_DM.ADOConn;
    tmp.Close;
    tmp.SQL.Clear;
    tmp.SQL.Add(_sql);
    tmp.Open;
    if  tmp.IsEmpty then
    ShowMessage('数据库里没有你刚填写的数据,请用选择下拉框选择');
    tmp.Free;
end;
procedure TMain_DM.ExitActivePage();
begin
    if frmMain.PCMain.ActivePage<>frmMain.TB_Main then
    begin
    frmMain.PCMain.ActivePage.Free;
    end;

end;
procedure TMain_DM.RegDBGridTitleCaption(frmname:string;grid:TDBGrid);
var adoquery:TADOQuery;
    i,j:integer;
    _sql:string;
begin
    adoquery:=TADOQuery.Create(self);
    adoquery.Connection:=Main_DM.ADOConn;
    adoquery.Close;
    adoquery.SQL.Clear;
    _sql:='select * from Sys_Object where FormName='''+self.Name+''' and Obj_Name='''+grid.name+'''';
    adoquery.SQL.Add(_sql);
    adoquery.Open;
    if not adoquery.IsEmpty then
    begin
        adoquery.Free;
        exit;
    end;
    i:=grid.Columns.Count;
    for j:=0 to i-1 do
    begin
        adoquery.Append;
        adoquery.FieldByName('FormName').AsString:=frmname;
        adoquery.FieldByName('Obj_Name').AsString:=grid.Name;//+'.'+'Fields['+IntToStr(j)+']';
        adoquery.FieldByName('Obj_Type').AsString:=grid.ClassName;
        adoquery.FieldByName('Obj_Caption').AsString:=grid.Columns[j].Title.Caption;
        adoquery.FieldByName('FieldIndex').AsInteger:=j;
        adoquery.Post;
    end;
    adoquery.Free;
end;
end.

⌨️ 快捷键说明

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