📄 unit3.pas
字号:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AxCtrls, OleCtrls, VCF1, StdCtrls,DB, ADODB, ExtCtrls,jpeg,DBTables,ComCtrls;
//Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
//Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids, ComCtrls;
//Procedure CompCount(field_name:string);
procedure AddRecord(tablename,prescode:string); //增加表中的记录,编号自动增加
function SaveRecord(tabsheetnum:integer;prescode:string):boolean; //当不是新增从属子信息的保存
procedure DelRecord(tablename,prescode:string);//删除表中相应记录
function tabsheetCount:integer; //找到需要动态创建的 tabsheet的个数
function labelcount:integer; //统计tabsheet页面中控件个数
procedure ClearAllComp; //清除所有tabsheet页面中非标签控件值
procedure ClearSGSheet; //清除当前<激活状态>tabsheet页面中非标签控件值
procedure Loadfield(activepage:integer;perscode:string); ////往激活页控件填值
procedure Updatelistbox(stringlist,listbox:tobject); //更新相应单位下的人员列表
procedure UpdateStringGrid;//更新grid表中人员信息
function Checkfield:boolean;//检查激活页面中容器的是否发生变化
procedure ComboboxOnChange(Comp,sigcombo,editbox,combo:Tcomponent;dpt:tdatetimepicker;index:integer);//未曾用到
procedure loadsubfield(comp:tcomponent;fieldname:string);//向comp组件查询数据库code中的code值 <frm_SJCX>
procedure loadsig(comp:tcomponent;typestr:string); //向comp组件查询数据库sig_code中的code值 <frm_SJCX>
function sig(comp:tcomponent):string; //把组件中的中文名转换为相应的sql语句字符 <frm_SJCX>
Function addCode(PwdStr:String):String;//加密 PwdStr:要加密的字串<frm_manage>
Function undoCode(PwdStr:String):String;//解密 PwdStr:要解密的字串 <frm_manage>
procedure showinfo(pagenum:integer;perscode:string);//显示当前页面下,用户的具体信息
//procedure RadioButtonClick(comp:tcomponent;index:integer);
procedure readpic; //从数据库中读出当前用户的照片信息
procedure savepic; //将图片信息存入数据库中
//yz1118 获得最后一个节点
procedure getfinalchild(treenode:ttreenode);
function trimkongge(s:string):string;//去除字符里面的空格
function ReadCursor:boolean; //变化鼠标状态
function ResumeCursor:boolean; //恢复鼠标状态
implementation
uses data_module,unit_main,unit_global;
///////////////2006-03 zjx//////////////////////////////
function ReadCursor:boolean;
var
H:Hcursor;
begin
////////读取鼠标等待的状态////////////////////
H:=LoadCursorFromFile(pansichar(ExtractFilePath( Application.ExeName )+'Wait.cur'));
//H:=LoadCursorFromFile('Wait.cur');
SetsystemCursor(H,ocr_normal);
end;
//////////////鼠标状态的恢复///////////////////////////////
function ResumeCursor:boolean;
begin
SystemParametersinfo(SPI_SETCURSORS,0,nil,SPIF_SENDCHANGE);
end;
function trimkongge(s:string):string; //2006-03 zjx
var
i:integer;
begin
result:='';
for i:=1 to length(s) do
begin
if s[i]<>' ' then
result:=result+s[i];
end;
end;
///////////////2006-03 zjx//////////////////////////////
Function tabsheetCount:integer;
var
sqlstr:string;
begin
sqlstr:='select max(page) as maxnum from field_info';
with dm.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
open;
if not eof=bof then
result:=fieldbyname('maxnum').AsInteger
else
result:=-1;
end;
end;
function labelcount:integer;
var
sqlstr:string;
begin
sqlstr:='select count(*),yn from field_info where yn=''1'' group by yn';
with dm.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
open;
if not eof=bof then
result:=recordcount
else
result:=-1;
end;
end;
procedure AddRecord(tablename,prescode:string); //每次从相应的表中读出prescode段的最大值,然后自加
var
sqlstr:string;
begin
sqlstr:='insert into '+tablename+' (prescode) values ('+quotedstr(prescode)+')';
with dm.ADOQuery3 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
//Parameters[0].Value:=prescode;
execsql;
end;
end;
function SaveRecord(tabsheetnum:integer;prescode:string):boolean; //当不是新增从属子信息的保存
var
values:string;
table_name,field:string;
code:string;
i,j:integer;
sqlstr:string;
index:integer;
filehandle:integer;
setpath:string;
tmpyear,tmpmonth:integer;
Year,Month,Day:word;
temp:string;
NianLin:integer;
seafield:string;
Selrow:integer;
xhindex:integer;
b_exist:boolean;
xhfieldname:string;
begin
xhfieldname:='';
b_exist:=true;
seafield:='xh';
result:=false;
sqlstr:='select * from field_info where yn=''1'' and page='+inttostr(tabsheetnum);
with dm.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add(sqlstr);
open;
first;
while not eof do
begin
index:=fieldbyname('ord').AsInteger-1;
//从界面上取值
if (fieldbyname('type').AsString='N') then
begin
xhindex:=index;
xhfieldname:=fieldbyname('field').asstring;
end;
if (fieldbyname('type').AsString='E') or (fieldbyname('type').AsString='UE') then
begin
values:=editbox[tabsheetnum-1][index].Text;
end;
if (fieldbyname('type').AsString='B') then
begin
if checkbox[tabsheetnum-1][index].Checked=true then
values:='是'
else
values:='否';
end;
if (fieldbyname('type').AsString='M') then
begin
values:=memo[tabsheetnum-1][index].Text;
end;
if (fieldbyname('type').AsString='D') then
begin
values:=maskedit[tabsheetnum-1][index].Text;
if (fieldbyname('lab_name').AsString='出生年月') and (tabsheetnum=1) then
begin
decodedate(now,year,month,day);
NianLin:=strtoint(copy(inttostr(Year),1,4))-strtoint(copy(values,1,4));
end;
end;
if fieldbyname('type').AsString='C' then
begin
values:=combobox[tabsheetnum-1][index].Text;
end;
if (fieldbyname('type').asstring='N') then
begin
values:=editbox[tabsheetnum-1][index].Text;
end;
if dm.ADOQuery1.FieldByName('lab_name').AsString<>'修改记录项' then
begin
table_name:=dm.ADOQuery1.FieldValues['table_name'];
field:=dm.ADOQuery1.FieldValues['field'];
{1022修改
原因,因为若表中没有该记录则不能保存该修改信息}
with dm.ADOQuery2 do
begin
close;
sql.Clear;
sql.Add('select * from ' +table_name + ' where prescode='+quotedstr(gencode));
open;
if dm.ADOQuery2.Eof then
b_exist:=false
else
b_exist:=true;
end;
//导入数据库
with dm.ADOQuery2 do
begin
if values<>'' then
begin
if is_mult then
begin
if b_exist then
begin
if field=xhfieldname then
sqlstr:='update '+table_name+' set '+field+'='+values+' where prescode='+quotedstr(prescode)+' and '+seafield+'='+inttostr(xh_value)//quotedstr(frm_main.StringGrid1.Cells[0,comprow])
else
sqlstr:='update '+table_name+' set '+field+'='+quotedstr(values)+' where prescode='+quotedstr(prescode)+' and '+seafield+'='+inttostr(xh_value);//quotedstr(frm_main.StringGrid1.Cells[0,comprow]); //yz1127
end
else
begin
if field=xhfieldname then
begin
//200516增加:人员编号根据自动编号字段确定,保证数据交换时编号唯一连续
sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+values+')';
end
else
sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+quotedstr(values)+')';
end;
end
else
if b_exist then
if field=xhfieldname then
sqlstr:='update '+table_name+' set '+field+'='+values+' where prescode='+quotedstr(prescode)
else
sqlstr:='update '+table_name+' set '+field+'='+quotedstr(values)+' where prescode='+quotedstr(prescode)
else
if field=xhfieldname then
sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+values+')'
else
sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+','+quotedstr(values)+')';
end
else
begin
if is_mult then
begin
if comprow=0 then
comprow:=1;
if b_exist then
sqlstr:='update '+table_name+' set '+field+'=null where prescode='+quotedstr(prescode)+' and '+seafield+'='+inttostr(xh_value)//quotedstr(frm_main.StringGrid1.Cells[0,comprow])
else
sqlstr:='insert into ' + table_name+ '(prescode,'+field+') values('+quotedstr(gencode)+',null)';
end
else
if b_exist then
sqlstr:='update '+table_name+' set '+field+'=null where prescode='+quotedstr(prescode)
else
sqlstr:='insert into ' + table_name+ '(prescode'+field+') values('+quotedstr(gencode)+','+'null)';
end;
close;
sql.Clear;
sql.Add(sqlstr);
execsql;
end;
end;
next;
end;
if trim(gencode)='' then
begin
close;
sql.Clear;
sql.Add('select max(id) as maxid from a01');
open;
gencode:=fieldbyname('maxid').AsString;
sqlstr:='update '+table_name+' set prescode='+quotedstr(gencode)+' where id='+fieldbyname('maxid').AsString;
close;
sql.Clear;
sql.Add(sqlstr);
execsql;
end;
result:=true;
end;
if is_mult then
begin
updatestringgrid;
end;
if frm_main.PageControl1.ActivePageIndex=1 then
begin
with dm.ADOQuery2 do
begin
close;
sql.Clear;
sqlstr:= 'update a02 set a0209='+quotedstr(company_code)+',a0206='+quotedstr(company_name)+' where xh='+inttostr(xh_value);
sql.add(sqlstr);
execsql;
end;
end;
end;
procedure DelRecord(tablename,prescode:string);
var
sqlstr:string;
name:string;
str:pansichar;
begin
sqlstr:='delete '+tablename+' where perscode='+quotedstr(prescode);
with dm.ADOQuery2 do
begin
close;
sql.Clear;
dm.ADOQuery2.SQL.Text:='delete from '+tablename+' where prescode='+quotedstr(prescode);//sql.Add(sqlstr);
execsql;
end;
end;
procedure ClearAllComp;
var
i,j:integer;
sqlstr:string;
index:integer;
begin
for i:=0 to tabsheetcount-1 do
begin
sqlstr:='select * from field_info where yn=''1'' and page='+inttostr(i+1);
with dm.ADOQuery3 do //内循环
begin
close;
sql.Clear;
sql.Add(sqlstr);
open;
first;
while not eof do //创建label,之后编辑框
begin
index:=fieldbyname('ord').AsInteger-1;
if (fieldbyname('type').AsString='E') OR (fieldbyname('type').AsString='UE') then
editbox[i][index].Text:='';
if fieldbyname('type').AsString='D' then
maskedit[i][index].Text:='';
//maskedit[i][index].DateTime:=now;
if fieldbyname('type').AsString='C' then
combobox[i][index].Text:='';
if fieldbyname('type').AsString='M' then
memo[i][index].Text:='';
if fieldbyname('type').AsString='B' then
checkbox[i][index].Checked:=false;
if fieldbyname('type').AsString='N' then
editbox[i][index].Text:='';
next;
end;
end;
end;
frm_main.Label1.Caption:='';
for j:=0 to frm_main.StringGrid1.RowCount-1 do
begin
frm_main.StringGrid1.Rows[j].Clear;
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -