模板继续改进中,加入一对多时自动引入combobox元件,并能进行选择,保存.改进能回车跳到下一控件,去掉一些错误.仅作备忘.

 <%
Dim bFirst
Dim name
Dim pname
Dim objTable
Dim objColumn
Dim tableNames
Dim databaseName
Dim tableName
dim ecospace
dim jj
dim xname

dim tmptable
dim tmpcolumn
' Grab the namespace

namespace = input.Item("txtNamespace")
Set tableName = input.Item("lstTables")

MyMeta.Language = input.Item("cmbLanguages")
MyMeta.DbTarget = "OleDb"

' Grab the choices the user made in our UI Script (see Interface Code tab)
Set tableNames = input.Item("lstTables")
ecospace=input.item("txtecospace")

databaseName  = input.Item("cmbDatabase")
Set database = MyMeta.Databases(0)

' Loop through the tables the user select and generate the stored procs and save them to disk
For intLp = 0 To tableNames.Count - 1

set objTable = database.Tables(tablenames.item(intLp))

'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' Now we have the table that we desire to build a Business Object From, let us begin.
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%>
unit fm<%=objtable%>;

interface

uses
  System.Drawing, System.Collections, System.ComponentModel,
  System.Windows.Forms, System.Data,
  Borland.Eco.Handles, Borland.Eco.Windows.Forms, Borland.Eco.WinForm,
  <%=ecospace%>EcoSpace, Package_1Unit,Borland.Eco.Services, System.Resources ;

type
  form<%=objtable%> = class(System.Windows.Forms.Form)
  {$REGION 'Designer Managed Code'}
  strict private
    /// <summary>
    /// Required designer variable.
    /// </summary>
    Components: System.ComponentModel.Container;
    RHRoot: Borland.Eco.Handles.ReferenceHandle;
    eh<%=objtable%>: Borland.Eco.Handles.ExpressionHandle;
    cm<%=objtable%>: Borland.Eco.Handles.CurrencyManagerHandle;
    DataGrid1: System.Windows.Forms.DataGrid;
    StatusBar1: System.Windows.Forms.StatusBar;
    ToolBar1: System.Windows.Forms.ToolBar;
    ToolBarButton1: System.Windows.Forms.ToolBarButton;
    ToolBarButton2: System.Windows.Forms.ToolBarButton;
    ToolBarButton3: System.Windows.Forms.ToolBarButton;
    ToolBarButton4: System.Windows.Forms.ToolBarButton;
    ToolBarButton5: System.Windows.Forms.ToolBarButton;
    ToolBarButton6: System.Windows.Forms.ToolBarButton;
    ToolBarButton7: System.Windows.Forms.ToolBarButton;
    ToolBarButton8: System.Windows.Forms.ToolBarButton;
 
    //自动增加的文本框与标签框*******
    <% output.writeLn ""
    
 for Each objColumn in objTable.Columns
     bfirst=false
           name   = GetAlias(objColumn)
     if not mid(ucase(name),1,3)="ECO"  then
         For x = 0 To tableNames.Count - 1
                  set tmpTable = database.Tables(tablenames.item(x))
      if ucase(tmptable.alias)=ucase(name) and (not ucase(name)=ucase(objTable.alias)) then
               bfirst=true    
      end if
     next
     if bfirst=true then
         output.write "    eh" & name&": Borland.Eco.Handles.ExpressionHandle;"& vbCrLf
        output.write "    cmb" & name& ": System.Windows.Forms.combobox;"& vbCrLf
     else
           output.write "    Text" & name& ": System.Windows.Forms.TextBox;"& vbCrLf
     end if
    
        output.write "    lbl" & name& ": System.Windows.Forms.LABEL;"& vbCrLf
           end if
   
    Next %>
 
 
  {//关于combobox 的加
 
 
  procedure formbuy.ComboBox1_SelectedIndexChanged(sender: System.object; e: System.EventArgs);
var selected: ielement;
  arecord: buy;
begin
  if (cOMBOBOX1.SelectedIndex < 0) then
    exit;

  if not groupbox1.Enabled then exit;

  selected := (EHKH.Element as iobjectlist)[COMBOBOX1.selectedindex];
  if (selected = nil) then exit;

  arecord := cmMAIN.Element.asobject as buy;
  arecord.gys := gys(selected.AsObject);
end;
 
 }
 
 //*******************************
 
    GroupBox1: System.Windows.Forms.GroupBox;
    DataGridTableStyle1: System.Windows.Forms.DataGridTableStyle;
  //  DataGridTextBoxColumn1: System.Windows.Forms.DataGridTextBoxColumn;
 
    <% output.writeLn ""
  k=1
  For Each objColumn in objTable.Columns
          name   = GetAlias(objColumn)
    if not mid(ucase(name),1,3)="ECO" then
            output.write "DataGridTextBoxColumn" &cstr(k) &": System.Windows.Forms.DataGridTextBoxColumn;"  & vbCrLf
    END IF
         k=k+1
   Next %>
    /// <summary>
    /// Required method for Designer support - do not modify
    /// the contents of this method with the code editor.
    /// </summary>
    procedure InitializeComponent;
  
    procedure ToolBar1_ButtonClick(sender: System.object; e: System.Windows.Forms.ToolBarButtonClickEventArgs);
 
{$ENDREGION}
  strict private
  FEcoSpace: t<%=ecospace%>ecospace;
  strict protected
    /// <summary>
    /// Clean up any resources being used.
    /// </summary>
    procedure Dispose(Disposing: Boolean);
    procedure zeroform();
    procedure setstate(mode:integer);
      <% output.writeLn ""
  k=1
  For Each objColumn in objTable.Columns
     xname=""
     bfirst=false
           name   = GetAlias(objColumn)
     if not mid(ucase(name),1,3)="ECO"  then
         For x = 0 To tableNames.Count - 1
                  set tmpTable = database.Tables(tablenames.item(x))       
      if ucase(tmptable.alias)=ucase(name) and (not ucase(name)=ucase(objTable.alias)) then
               xname=tmptable.columns(2)
     bfirst=true    
      end if
      next
     

      
               if bfirst=true then
       
                      OUTPUT.WRITE "procedure Cmb"&name &"_SelectedIndexChanged(sender: System.object; e: System.EventArgs);"

               end if          
    END IF
         k=k+1
   
     Next %>

  public
    constructor Create();
//    constructor Create(anEcoSpace: EcoSpace); overload;
    function get_EcoSpace: Borland.Eco.Handles.EcoSpace;
    property EcoSpace: Borland.Eco.Handles.EcoSpace read get_EcoSpace;
    procedure enter_KeyPress(sender: System.Object; e: System.Windows.Forms.KeyPressEventArgs);
end;

  [assembly: RuntimeRequired(TypeOf(form<%=objtable%>))]

implementation

uses
  Borland.Eco.ObjectRepresentation;
{$AUTOBOX ON}

{$REGION 'Windows Form Designer generated code'}
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
procedure form<%=objtable%> .InitializeComponent;
type
  TArrayOfSystem_Windows_Forms_ToolBarButton = array of System.Windows.Forms.ToolBarButton;
  TArrayOfSystem_Windows_Forms_DataGridTableStyle = array of System.Windows.Forms.DataGridTableStyle;
  TArrayOfSystem_Windows_Forms_DataGridColumnStyle = array of System.Windows.Forms.DataGridColumnStyle;
begin
  Self.RHRoot := Borland.Eco.Handles.ReferenceHandle.Create;
 
  Self.eh<%=objtable%> := Borland.Eco.Handles.ExpressionHandle.Create;
  Self.cm<%=objtable%> := Borland.Eco.Handles.CurrencyManagerHandle.Create;
  Self.DataGrid1 := System.Windows.Forms.DataGrid.Create;

   <% output.writeLn ""
  k=1
  For Each objColumn in objTable.Columns
          name   = GetAlias(objColumn)
    if not mid(ucase(name),1,3)="ECO" then
           output.write "Self.DataGridTextBoxColumn" &cstr(k) &":= System.Windows.Forms.DataGridTextBoxColumn.create;"  & vbCrLf
    END IF
         k=k+1
   
     Next %>
  
  Self.DataGridTableStyle1:=System.Windows.Forms.DataGridTableStyle.Create;
  Self.StatusBar1 := System.Windows.Forms.StatusBar.Create;
  Self.ToolBar1 := System.Windows.Forms.ToolBar.Create;
  Self.ToolBarButton1 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton2 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton3 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton4 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton8 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton5 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton6 := System.Windows.Forms.ToolBarButton.Create;
  Self.ToolBarButton7 := System.Windows.Forms.ToolBarButton.Create;
 
  Self.GroupBox1 := System.Windows.Forms.GroupBox.Create;
  (System.ComponentModel.ISupportInitialize(Self.DataGrid1)).BeginInit;
  Self.GroupBox1.SuspendLayout;
  Self.SuspendLayout;
  //
  // RHRoot
  //
  Self.RHRoot.EcoSpaceType := TypeOf(<%=ECOSPACE%>EcoSpace.t<%=ECOSPACE%>EcoSpace);
  //
 
  //
  //
  // eh<%=objtable%>
  //
   
  Self.eh<%=objtable%>.Expression := '<%=objtable%>.allInstances';
  Self.eh<%=objtable%>.RootHandle := Self.RHRoot;
  //
  //
  // cm<%=objtable%>
  //
  Self.cm<%=objtable%>.BindingContext := Self.DataGrid1;
  Self.cm<%=objtable%>.RootHandle := Self.eh<%=objtable%>;
  //
  // DataGrid1
  //
  Self.DataGrid1.DataMember := '';
  Self.DataGrid1.DataSource := Self.eh<%=objtable%>;
  Self.DataGrid1.HeaderForeColor := System.Drawing.SystemColors.ControlText;
  Self.DataGrid1.Location := System.Drawing.Point.Create(8, 64);
  Self.DataGrid1.Name := 'DataGrid1';
  Self.DataGrid1.RightToLeft := System.Windows.Forms.RightToLeft.No;
  Self.DataGrid1.RowHeaderWidth := 20;
  Self.DataGrid1.Size := System.Drawing.Size.Create(320, 312);
  Self.DataGrid1.TabIndex := 0;
  Self.DataGrid1.TableStyles.AddRange(TArrayOfSystem_Windows_Forms_DataGridTableStyle.Create(Self.DataGridTableStyle1));
  //
  // DataGridTableStyle1
  //
  Self.DataGridTableStyle1.DataGrid := Self.DataGrid1;
     <% output.writeLn ""
 
  k=1
  jj=1
        output.write "Self.DataGridTableStyle1.GridColumnStyles.AddRange(TArrayOfSystem_Windows_Forms_DataGridColumnStyle.Create("
        For Each objColumn in objTable.Columns
          name   = GetAlias(objColumn)
    if not mid(ucase(name),1,3)="ECO" then
      if (jj=1) then
           output.write "Self.DataGridTextBoxColumn" & cstr(k)
     jj=0
      else
        output.write ",Self.DataGridTextBoxColumn" & cstr(k)
   end if
    END IF
         k=k+1

    Next
    output.write "));" &  vbCrLf
  %> 
 
   <% output.writeLn ""
  k=1
  For Each objColumn in objTable.Columns
          name   = GetAlias(objColumn)
    if not mid(ucase(name),1,3)="ECO" then         
    output.write "Self.DataGridTextBoxColumn" &cstr(k) &".Format := '';" & vbCrLf
             output.write "Self.DataGridTextBoxColumn" &cstr(k) &".FormatInfo := nil;" & vbCrLf
             output.write "Self.DataGridTextBoxColumn" &cstr(k) &".HeaderText := '" & name & "';"  & vbCrLf
             output.write "Self.DataGridTextBoxColumn" &cstr(k) &".MappingName := '" & name & "';"  & vbCrLf
             output.write "Self.DataGridTextBoxColumn" &cstr(k) &".Width := 75;" & vbCrLf
    END IF
         k=k+1
   
     Next %>
  Self.DataGridTableStyle1.HeaderForeColor := System.Drawing.SystemColors.ControlText;
  Self.DataGridTableStyle1.MappingName := '';
  Self.DataGridTableStyle1.RowHeaderWidth := 20;
  //
  // DataGridTextBoxColumn1
  //
 
  //****************
 
  //
  // StatusBar1
  //
  Self.StatusBar1.Location := System.Drawing.Point.Create(0, 381);
  Self.StatusBar1.Name := 'StatusBar1';
  Self.StatusBar1.Size := System.Drawing.Size.Create(664, 24);
  Self.StatusBar1.TabIndex := 1;
  //
  // ToolBar1
  //
  Self.ToolBar1.Appearance := System.Windows.Forms.ToolBarAppearance.Flat;
  Self.ToolBar1.Buttons.AddRange(TArrayOfSystem_Windows_Forms_ToolBarButton.Create(Self.ToolBarButton1,
          Self.ToolBarButton2, Self.ToolBarButton3, Self.ToolBarButton4, Self.ToolBarButton8,
          Self.ToolBarButton5, Self.ToolBarButton6, Self.ToolBarButton7));
  Self.ToolBar1.DropDownArrows := True;
  Self.ToolBar1.Location := System.Drawing.Point.Create(0, 0);
  Self.ToolBar1.Name := 'ToolBar1';
  Self.ToolBar1.ShowToolTips := True;
  Self.ToolBar1.Size := System.Drawing.Size.Create(664, 41);
  Self.ToolBar1.TabIndex := 2;
  Include(Self.ToolBar1.ButtonClick, Self.ToolBar1_ButtonClick);
  //
  // ToolBarButton1
  //
  Self.ToolBarButton1.Text := '新增';
  //
  // ToolBarButton2
  //
  Self.ToolBarButton2.Text := '修改';
  //
  // ToolBarButton3
  //
  Self.ToolBarButton3.Text := '保存';
  //
  // ToolBarButton4
  //
  Self.ToolBarButton4.Text := '取消';
  //
  // ToolBarButton8
  //
  Self.ToolBarButton8.Text := '删除';
  //
  // ToolBarButton5
  //
  Self.ToolBarButton5.Text := '上一条';
  //
  // ToolBarButton6
  //
  Self.ToolBarButton6.Text := '下一条';
  //
  // ToolBarButton7
  //
  Self.ToolBarButton7.Text := '退出';
  //

  // GroupBox1
  //
  Self.GroupBox1.Location := System.Drawing.Point.Create(368, 64);
  Self.GroupBox1.Name := 'GroupBox1';
  Self.GroupBox1.RightToLeft := System.Windows.Forms.RightToLeft.No;
  Self.GroupBox1.Size := System.Drawing.Size.Create(264, 312);
  Self.GroupBox1.TabIndex := 20;
  Self.GroupBox1.TabStop := False;
  Self.GroupBox1.Text := '输入';
  //
  // Label1
     
  //
     <% output.writeLn ""
  k=1
  For Each objColumn in objTable.Columns
     xname=""
     bfirst=false
           name   = GetAlias(objColumn)
     if not mid(ucase(name),1,3)="ECO"  then
         For x = 0 To tableNames.Count - 1
                  set tmpTable = database.Tables(tablenames.item(x))       
      if ucase(tmptable.alias)=ucase(name) and (not ucase(name)=ucase(objTable.alias)) then
               xname=tmptable.columns(2)
     bfirst=true    
      end if
      next
    
               if bfirst=true then
          output.write "//"& xname & vbCrLf
          output.write "Self.eh" &name & ":= Borland.Eco.Handles.ExpressionHandle.Create;"  & vbCrLf
                   output.write "Self.eh" &name & ".Expression :='" &name & ".allInstances';" & vbCrLf
                   output.write "Self.eh" &name & ".RootHandle := Self.RHRoot;" & vbCrLf
          output.write "Self.cmb" &name & ":= System.Windows.Forms.combobox.Create;" & vbCrLf
                   output.write "Self.cmb" &name & ".Location := System.Drawing.Point.Create(60," & cstr(5+k*25) &");" & vbCrLf
                   output.write "Self.cmb" &name &".Name := 'cmb" & name &"';" & vbCrLf
                   output.write "Self.cmb" &name &".Size := System.Drawing.Size.Create(100, 20);" & vbCrLf
                   output.write "Self.cmb" &name &".TabIndex := 20;" & vbCrLf
                   output.write "Self.cmb" &name &".Text := 'cmb" & name & "';"& vbCrLf & vbCrLf
                   output.write "Include(Self.cmb" &name &".KeyPress, Self.enter_KeyPress);" & vbCrLf
                   output.write "Self.cmb" &name & ".DataBindings.Add(System.Windows.Forms.Binding.Create('SelectedValue',self.eh" & objtable &",'" & name &"'));" & vbCrLf
                   output.write "Self.cmb" &name & ".DataSource := Self.EH" &name &";" & vbCrLf
                   output.write "Self.cmb" &name & ".DisplayMember :='"& xname &"';" & vbCrLf
       output.write  "//" & xname & "*********" & vbCrLf
                   output.write "Self.cmb" &name & ".ValueMember :='" &xname &"';" & vbCrLf
                   output.write "Include(Self.cmb" &name & ".KeyPress, Self.enter_KeyPress);" & vbCrLf
                   output.write "Include(Self.cmb" &name & ".SelectedIndexChanged, Self.cmb" &name & "_SelectedIndexChanged);" & vbCrLf
       output.write "Self.GroupBox1.Controls.Add(Self.cmb" &name & ");" & vbCrLf
                 else
       output.write "Self.Text" &name & ":= System.Windows.Forms.TextBox.Create;" & vbCrLf
       output.write "Self.Text" &name & ".DataBindings.Add(System.Windows.Forms.Binding.Create('Text',Self.eh" & objtable & ",'" & name & "'));" & vbCrLf
                   output.write "Self.Text" &name & ".Location := System.Drawing.Point.Create(60," & cstr(5+k*25) &");" & vbCrLf
                   output.write "Self.Text" &name &".Name := 'TExt" & name &"';" & vbCrLf
                   output.write "Self.Text" &name &".Size := System.Drawing.Size.Create(100, 20);" & vbCrLf
                   output.write "Self.Text" &name &".TabIndex := 20;" & vbCrLf
                   output.write  "Self.Text" &name &".Text := 'TExt" & name & "';"& vbCrLf & vbCrLf
                   output.write "Include(Self.Text" &name &".KeyPress, Self.enter_KeyPress);"
       output.write "Self.GroupBox1.Controls.Add(Self.Text" &name & ");" & vbCrLf
      end if
     
               output.write "Self.lbl" &name & ":= System.Windows.Forms.Label.Create;"  & vbCrLf
               output.write "Self.lbl" &name & ".Location := System.Drawing.Point.Create(10," & cstr(5+k*25) &");" & vbCrLf
               output.write "Self.lbl" &name &".Name := 'lbl" & name & "';" & vbCrLf
               output.write "Self.lbl" &name &".Size := System.Drawing.Size.Create(40, 20);" & vbCrLf
               output.write "Self.lbl" &name &".Text :='" & name & "';"& vbCrLf & vbCrLf
         output.write "Self.GroupBox1.Controls.Add(Self.lbl" &name & ");" & vbCrLf
          
    END IF
         k=k+1
   
     Next %>
//

  //

  //
  // form<%=objtable%>
  //
  Self.AutoScaleBaseSize := System.Drawing.Size.Create(6, 14);
  Self.ClientSize := System.Drawing.Size.Create(664, 405);

  Self.Controls.Add(Self.GroupBox1);
  Self.Controls.Add(Self.ToolBar1);
  Self.Controls.Add(Self.StatusBar1);
  Self.Controls.Add(Self.DataGrid1);
  Self.Name := 'form<%=objtable%>' ;
  Self.RightToLeft := System.Windows.Forms.RightToLeft.No;
  Self.StartPosition := System.Windows.Forms.FormStartPosition.CenterScreen;
  Self.Text := '<%=objtable%>输入';
  (System.ComponentModel.ISupportInitialize(Self.DataGrid1)).EndInit;
  Self.GroupBox1.ResumeLayout(False);
  Self.ResumeLayout(False);
end;

procedure form<%=objtable%>.setstate(mode:integer);
begin
datagrid1.ReadOnly:=true;
case mode of
1:   //新增状态
begin
self.ToolBarButton2.Enabled:=false;
self.ToolBarButton7.Enabled:=false;
self.ToolBarButton1.Enabled:=false;
self.ToolBarButton5.Enabled:=false;
self.ToolBarButton6.Enabled:=false;
self.ToolBarButton3.Enabled:=true;
self.ToolBarButton4.Enabled:=true;
datagrid1.Enabled:=false;
groupbox1.Enabled:=true;
//textbox1.Focus;
end;
2:  //修改状态
begin
  self.ToolBarButton2.Enabled:=false;
  self.ToolBarButton7.Enabled:=false;
  self.ToolBarButton1.Enabled:=false;
  self.ToolBarButton5.Enabled:=false;
  self.ToolBarButton6.Enabled:=false;
  self.ToolBarButton3.Enabled:=true;
  self.ToolBarButton4.Enabled:=true;
  datagrid1.Enabled:=false;
  groupbox1.Enabled:=true;
  //textbox1.Focus;
end;
3:
begin
  self.ToolBarButton2.Enabled:=true;
  self.ToolBarButton7.Enabled:=true;
  self.ToolBarButton1.Enabled:=true;
  self.ToolBarButton5.Enabled:=true;
  self.ToolBarButton6.Enabled:=true;
  self.ToolBarButton3.Enabled:=false;
  self.ToolBarButton4.Enabled:=false;
  datagrid1.Enabled:=true;
  groupbox1.Enabled:=false;
end;
end;

end;

procedure form<%=objtable%>.zeroform;
begin
     <% output.writeLn ""
  for Each objColumn in objTable.Columns
     bfirst=false
           name   = GetAlias(objColumn)
     if not mid(ucase(name),1,3)="ECO"  then
         For x = 0 To tableNames.Count - 1
                  set tmpTable = database.Tables(tablenames.item(x))
         xname=tmptable.columns(2)
      if ucase(tmptable.alias)=ucase(name) and (not ucase(name)=ucase(objTable.alias)) then
               bfirst=true    
      end if
      next
    
              if bfirst=true then
           output.write "    cmb" & name & ".text:='';" & vbCrLf
              else
              output.write "    Text" & name& ".clear;" & vbCrLf
        end if 
    end if
        Next %>
end;

{$ENDREGION}

procedure form<%=objtable%>.Dispose(Disposing: Boolean);
begin
  if Disposing then
  begin
    if Components <> nil then
      Components.Dispose();
  end;
  inherited Dispose(Disposing);
end;

constructor form<%=objtable%>.Create();
begin
  inherited Create;
  //
  // Required for Windows Form Designer support
  //
  InitializeComponent;
  //
  // TODO: Add any constructor code after InitializeComponent call
  //
  FEcoSpace := t<%=ecospace%>ecospace.Create;
  // Note that you need to set the EcoSpace property for each ReferenceHandle you add to the form.

  RHRoot.EcoSpace := FEcoSpace;
  if (not fecospace.Active) then
    fecospace.Active:=true;

  zeroform;
  setstate(3);
end;

function form<%=objtable%>.get_EcoSpace: Borland.Eco.Handles.EcoSpace;
begin
  Result := FEcoSpace;
end;

procedure form<%=objtable%>.enter_KeyPress(sender: System.Object; e: System.Windows.Forms.KeyPressEventArgs);
begin
    if (e.keychar =#13) then
    self.SelectNextControl(self.activecontrol, true, true, true, true);
end;

procedure form<%=objtable%>.ToolBar1_ButtonClick(sender: System.object; e: System.Windows.Forms.ToolBarButtonClickEventArgs);
var a<%=objtable%>: <%=objtable%>;
begin
  case toolbar1.Buttons.IndexOf(e.Button) of
    0: //新增
      begin
        fEcoSpace.UndoService.StartUndoBlock('abc');
        a<%=objtable%> := <%=objtable%>.create(fecospace);
        datagrid1.DataBindings;
        eh<%=objtable%>.EnsureBindingList;
        cm<%=objtable%>.set_Position(eh<%=objtable%>.Element.GetAsCollection.Count - 1);
        setstate(1);
      end;
    1: //修改
      begin
        fEcoSpace.UndoService.startUndoBlock('abc');
        setstate(2);
      end;
    2: //保存
      begin
        fecospace.UndoService.ClearAllUndoBlocks;
        setstate(3);
        fecospace.UpdateDatabase;
      end;
    3: //取消
      begin
        fEcoSpace.UndoService.UndoBlock('abc');
        fecospace.UndoService.ClearAllUndoBlocks;
        setstate(3);
      end;
    4: //  删除
      begin
        if (MessageBox.Show('你真的要删除吗,按确定后记录将被删除并不能恢复?', '删除数据',
          MessageBoxButtons.YesNo, MessageBoxIcon.Question) = System.Windows.Forms.DialogResult.Yes) then
        begin
          try
            <%=objtable%>(cm<%=objtable%>.Element.AsObject).AsIObject.Delete;
          except
            messagebox.show('该名称已经使用,不能删除!');
            exit;
          end;
          fecospace.UpdateDatabase;
        end;
      end;
    5: // 上一条
      begin

      end;
    6: //   下一条
      begin

      end;
    7: //退出
      begin
        close;
//        fecospace.UpdateDatabase;
      end;
  end;
end;

     <% output.writeLn ""
  k=1
  For Each objColumn in objTable.Columns
     xname=""
     bfirst=false
           name   = GetAlias(objColumn)
     if not mid(ucase(name),1,3)="ECO"  then
         For x = 0 To tableNames.Count - 1
                  set tmpTable = database.Tables(tablenames.item(x))       
      if ucase(tmptable.alias)=ucase(name) and (not ucase(name)=ucase(objTable.alias)) then
               xname=tmptable.columns(2)
     bfirst=true    
      end if
      next
     

      
               if bfirst=true then
                      OUTPUT.WRITE "procedure form" & objtable & ".Cmb"&name &"_SelectedIndexChanged(sender: System.object; e: System.EventArgs);"& vbCrLf
                      OUTPUT.WRITE "var selected: ielement;"& vbCrLf
                      OUTPUT.WRITE "    arecord:"& objtable & ";"& vbCrLf
                      OUTPUT.WRITE "begin"& vbCrLf
                      OUTPUT.WRITE "   if (cMb"& name &".SelectedIndex < 0) then"& vbCrLf
                      OUTPUT.WRITE "          exit;"& vbCrLf
                      OUTPUT.WRITE "   if not groupbox1.Enabled then exit;"& vbCrLf
                      OUTPUT.WRITE "   selected := (EH"& name &".Element as iobjectlist)[Cmb"& name &".selectedindex];"& vbCrLf
                      OUTPUT.WRITE "   if (selected = nil) then exit;"& vbCrLf
                      OUTPUT.WRITE ""& vbCrLf
                      OUTPUT.WRITE "   arecord := cm" & objtable & ".Element.asobject as "& objtable & ";"& vbCrLf
                      OUTPUT.WRITE "   arecord."& name &" := "& name &"(selected.AsObject);"& vbCrLf
                      OUTPUT.WRITE "end;  "& vbCrLf
               end if          
    END IF
         k=k+1
   
     Next %>

 


end.


<%
 ' Save the output file for this Table
 Dim filename
 filename = input.item("txtPath")

 Dim length
 Dim pos
 lenth = Len(filename)
 pos = InStrRev(filename, "\")

 If Not pos = lenth Then
  filename = filename & "\"
 End If

 filename = filename & "fm" & objTable.Alias & ".pas"

 output.save filename, false
 buffer = buffer & output.text
 output.clear
Next '  tableName
 
 output.write buffer
 %>

<%
'===========================================================================
' These are support routines called by the above scirpt
'===========================================================================
Function GetAlias(objColumn)
 Dim name
 name = TrimSpaces(objColumn.Alias)
 GetAlias =name
' UCase(Left(name, 1)) & Right(name, Len(name) -1)
End Function

Function GetName(objColumn)
 Dim name
 name = objColumn.Name
 GetName =name
' UCase(Left(name, 1)) & Right(name, Len(name) -1)
End Function

Function TrimSpaces(str)

 Dim tname
 Dim name
 Dim char
 Dim l

 name = ""
 tname = str
 l = Len(tname)

 For j = 1 To l
  char = Mid(tname, j, 1)
  If Not char = " " Then
   name = name & char
  End If
 Next

 TrimSpaces = name
End Function
%>

posted on 2007-09-15 17:00  偶卖糕的  阅读(359)  评论(0编辑  收藏  举报