📄 expgenerate_frm.pas
字号:
begin
if tsybquery(querylist[i]).name=dataset then
begin
query.sql:=tsybquery(querylist[i]).designsql;
foundq:=true;
break;
end;
end;
if not foundq then
begin
query.sql:='select ';
for i:=1 to fieldscount-1 do
query.sql:=query.sql + field_names[i] + ',';
query.addsql(field_names[fieldscount] + ' from ' + dataset + ' where 1=2');
end;
query.sqlexec;
for i:=1 to fieldscount do
begin
field_datatypes[i]:=query.coltype(i);
field_lengths[i]:=query.collength(i);
end;
end;
procedure Tf_exp.create_fields;
var edit :tsybedit;
check :tsybcheckbox;
memo :tsybmemo;
lab :tlabel;
i,topp,
maxwidth,
lft,j :integer;
s :string;
begin
for i:=temp_form.componentcount-1 downto 0 do
begin
if temp_form.components[i].tag >= 100 then
begin
temp_form.components[i].destroy;
end;
end;
pan_top:=tpanel.create(temp_form);
pan_top.align:=altop;
pan_top.alignment:=tacenter;
pan_top.name:='pan_top';
pan_top.tag:=100;
pan_top.caption:='';
pan_top.parent:=temp_form;
navigator:=tsybnavigator.create(temp_form);
navigator.name:='nav_' + dataset;
navigator.left:=8;
navigator.top:=8;
navigator.dbname:=database.name;
navigator.dataset:='ds_' + dataset;
navigator.parent:=pan_top;
pan_main:=tpanel.create(temp_form);
pan_main.align:=alclient;
pan_main.alignment:=tacenter;
pan_main.bevelinner:=bvlowered;
pan_main.bevelouter:=bvraised;
pan_main.name:='pan_main';
pan_main.caption:='';
pan_main.tag:=100;
pan_main.parent:=temp_form;
scbox_main:=tscrollbox.create(temp_form);
scbox_main.align:=alclient;
scbox_main.name:='scbox_main';
scbox_main.tag:=100;
scbox_main.parent:=pan_main;
topp:=top_of_first_field;
lft:=left_of_first_field;
maxwidth:=0;
if (r_vertical) then
begin
if r_left then
begin
for i:=1 to fieldscount do
begin
lab:=tlabel.create(temp_form);
lab.left:=lft;
lab.tag:=105;
lab.name:='lab_' + field_names[i];
lab.caption:=no_under(field_names[i]);
lab.top:=topp;
if lab.width > maxwidth then
maxwidth:=lab.width;
if (field_datatypes[i] = 'text') then
topp:=topp + 90
else
topp:=topp + 22;
lab.parent:=scbox_main;
end;
topp:=top_of_first_field;
lft:=(left_of_first_field + 10) + maxwidth;
end
else
lft:=left_of_first_field + 10;
for i:=1 to fieldscount do
begin
if (r_top) then
begin
lab:=tlabel.create(temp_form);
lab.left:=lft;
lab.tag:=105;
lab.name:='lab_' + field_names[i];
lab.caption:=no_under(field_names[i]);
lab.top:=topp;
if (field_datatypes[i] = 'text') then
topp:=topp + 90
else
topp:=topp + 22;
lab.parent:=scbox_main;
end;
if (field_datatypes[i] <> 'bit')
and (field_datatypes[i] <> 'text') then
begin
edit:=tsybedit.create(temp_form);
edit.isprimarykey:=iskey(field_names[i]);
edit.dataset:='ds_' + dataset;
edit.name:='e_' + field_names[i];
edit.text:='';
edit.datafield:=field_names[i];
edit.top:=topp;
edit.left:=lft;
if (r_top) then
topp:=topp + 25
else
topp:=topp + 22;
edit.tag:=110;
if field_datatypes[i] = 'char' then
begin
edit.width:=(field_lengths[i]+1)* (tform(temp_form).font.size);
edit.maxlength:=field_lengths[i];
edit.length:=field_lengths[i];
end;
if (field_datatypes[i] = 'datetime')
or (field_datatypes[i] = 'smalldatetime') then
edit.datatype:='datetime';
if (field_datatypes[i] = 'float')
or (field_datatypes[i] = 'money')
or (field_datatypes[i] = 'real') then
edit.datatype:='float';
if (field_datatypes[i] = 'int')
or (field_datatypes[i] = 'smallint')
or (field_datatypes[i] = 'tinyint') then
edit.datatype:='int';
if (field_datatypes[i] = 'char') then
edit.datatype:='char';
edit.tag:=105;
edit.parent:=scbox_main;
end;
if (field_datatypes[i] = 'bit') then
begin
check:=tsybcheckbox.create(temp_form);
{ if table <> nil then
check.tablename:=table.name;}
check.dataset:='ds_' + dataset;
check.name:='chk_' + field_names[i];
check.caption:='';
check.datafield:=field_names[i];
check.datatype:='bit';
check.top:=topp;
check.left:=lft;
if (r_top) then
topp:=topp + 25
else
topp:=topp + 22;
check.tag:=115;
check.parent:=scbox_main;
end;
if (field_datatypes[i] = 'text') then
begin
memo:=tsybmemo.create(temp_form);
{ if table <> nil then
memo.tablename:=table.name;}
memo.dataset:='ds_' + dataset;
memo.name:='mem_' + field_names[i];
memo.datafield:=field_names[i];
memo.datatype:='text';
memo.top:=topp;
memo.left:=lft;
memo.tag:=120;
memo.text:='';
topp:=topp + memo.height;
memo.parent:=scbox_main;
end;
end;
end;
end;
procedure Tf_exp.create_table_component;
var i,j :integer;
begin
if r_table then
begin
table:=tsybtable.create(temp_form);
table.designinfo:=first_pos;
table.name:='ds_' + dataset;
table.tablename:=dataset;
table.dbname:=database.name;
table.dbproc:=dbproc;
end
else
begin
query:=tsybquery.create(temp_form);
query.designinfo:=first_pos;
query.name:='ds_' + dataset;
for i:=0 to querylist.count-1 do
begin
if tsybquery(querylist[i]).name='ds_' + dataset then
begin
query.sql:='select ';
for j:=1 to fieldscount-1 do
query.sql:=query.sql + field_names[j] + ',';
query.addsql(field_names[fieldscount] + ' from ' + dataset);
break;
end;
end;
query.dbname:=exp_db.dbname;
query.dbproc:=dbproc;
end;
end;
function Tf_exp.no_under(col :string):string;
var i,j :integer;
s :string;
c :string[1];
begin
i:=1;
c:=col[i];
if c<> '_' then
s:=s + upcase(col[i]);
while i < length(col) do
begin
inc(i);
c:=col[i];
if c <> '_' then
s:=s + c;
if c='_' then
begin
inc(i);
c:=upcase(col[i]);
s:=s + ' ' + c;
end;
end;
result:=s;
end;
function Tf_exp.iskey(name :string):boolean;
var i :integer;
begin
result:=false;
for i:=0 to f_form27.l_primarykeys.items.count-1 do
if (f_form27.l_primarykeys.selected[i]) and (f_form27.l_primarykeys.items[i]=name) then
begin
result:=true;
exit;
end;
end;
procedure Tf_exp.btn_cancel1Click(Sender: TObject);
begin
exp_db.disconnect;
cleanup;
modalresult:=mrcancel;
end;
procedure Tf_exp.create_sproc(sproc_type:integer;procname:sybobjectname);
var sproc :tsybsproc;
begin
first_pos:=first_pos + 30;
sproc:=tsybsproc.create(temp_form);
sproc.designinfo:=first_pos;
case sproc_type of
1: sproc.name:='sp_u_' + procname;
2: sproc.name:='sp_i_' + procname;
3: sproc.name:='sp_d_' + procname;
end;
sproc.sprocname:=procname;
sproc.dbname:=exp_db.dbname;
sproc.dbproc:=dbproc;
sproc.designactive:=true;
end;
procedure Tf_exp.cleanup;
begin
if temp_form <> nil then
begin
temp_form.free;
temp_form:=nil;
end;
if f_form1 <> nil then
begin
f_form1.free;
f_form1:=nil;
end;
if f_form2 <> nil then
begin
f_form2.free;
f_form2:=nil;
end;
if f_form25 <> nil then
begin
f_form25.free;
f_form25:=nil;
end;
if f_form27 <> nil then
begin
f_form27.free;
f_form27:=nil;
end;
if f_form3 <> nil then
begin
f_form3.free;
f_form3:=nil;
end;
if f_form4 <> nil then
begin
f_form4.free;
f_form4:=nil;
end;
if f_form5 <> nil then
begin
f_form5.free;
f_form5:=nil;
end;
end;
procedure Tf_exp.lb_exp_tablesClick(Sender: TObject);
begin
exp_db.DBName:=lb_exp_tables.Items[lb_exp_tables.itemindex];
dbindex:=lb_exp_tables.itemindex;
end;
procedure Tf_exp.btn_connectClick(Sender: TObject);
begin
FormActivate(Self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -