📄 unit_main_dm.~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:=self.Name;
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 + -