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

📄 expgenerate_frm.pas

📁 sybase大全
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  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 + -