基于控件的J2EE框架

来源:互联网 发布:适合w10的c语言 编辑:程序博客网 时间:2024/05/18 12:05

           我在业余时间写了一个J2EE框架,  该框架基于控件并支持可视化界面设计,整个框架的组织结构类似于Delphi PHP

           使用该框架编程只需要从TForm类派生出自己的窗口类,并处理OnCreate事件和OnEvent事件,完全不必与HTML代码和JavaScript、VBScript代码打交道,在该框架中内置了TMenu(菜单控件)、TLabel(标签控件)、TButton(按钮控件)、TEdit(文本编辑框控件)、TMemo(文本区控件)、TCheckBox(复选框控件)、TDBUpdate(数据库更新组件)、TDBQuery(数据库查询组件)、 TListDB(列表框控件)、TComboDB(下拉式列表框控件)、TGridDB(表格控件) 、TPageControl(属性页控件) 、TForm(窗体控件) 、TApplication(应用程序组件)等支持面向对象设计的控件类,使用该框架可以进行快速Web应用程序开发,并且程序的设计过程类似于Delphi应用程序的开发,整个框架使用基于事件驱动的模型,Web应用程序开发者只需要在需要处理的事件中加上自己的Java代码即可,同时为了实现界面的可视化设计,我开发了一个用于自动生成界面代码的插件,该插件应用在C++ Builder上,它可以根据用户在窗体设计器上放置的控件自动生成对应的Java界面代码。

      整个 框架的代码如下(包括演示Demo):

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.Vector;
import java.util.HashMap;
import java.util.StringTokenizer;
import java.sql.*;

class TGlobal
{static long ID_COUNT=0;static long ID_SESSION=0;static long ID_FORM=0;
static PrintWriter out;static HttpServletRequest request;static HttpSession session;
static TForm entry;static Connection datacon;static Vector formlist=new Vector();
static TSessionInt active=new TSessionInt(0);static TSessionByte state=new TSessionByte((byte)0);
static TSessionInt newin=new TSessionInt(0);
static void echo(String scriptstr)
{out.println(scriptstr);
}
static String getvalue(String keystr)
{return request.getParameter(keystr);
}
static TForm getnew()
{TForm form=(TForm)formlist.get(newin.get());
return form;
}
static String geturl()
{String use="
http://"+request.getServerName()+request.getRequestURI()+"?EventForm="+newin.get();
return use;
}
//导航到另一个窗口
static void goform(TForm form)
{
 active.set((int)form.markID);state.set((byte)1);
}
//关闭当前窗口
static void closeform()
{
 state.set((byte)3);
}
//新建一个窗口
static void newform(TForm form)
{
 state.set((byte)2);newin.set((int)form.markID);
}
static void addform(TForm form,boolean ismain)
{form.name=String.valueOf(ID_FORM);form.markID=ID_FORM;
formlist.add(form);ID_FORM++;if(ismain)entry=form;
}
static void setentry(TForm form)
{entry=form;
}
}

class TSessionBool
{
 String name;boolean initvalue;
 TSessionBool(boolean initvalue)
 {
  long temp=TGlobal.ID_SESSION;
  name=String.valueOf(temp);
  TGlobal.ID_SESSION++;
  this.initvalue=initvalue;
 }
 void set(boolean value)
 {
  TGlobal.session.setAttribute(name,new Boolean(value));
 }
 boolean get()
 {
  Boolean temp=(Boolean)TGlobal.session.getAttribute(name);
  if(temp==null)return initvalue;
  else return temp.booleanValue();
 }
}
class TSessionByte
{
 String name;byte initvalue;
 TSessionByte(byte initvalue)
 {long temp=TGlobal.ID_SESSION;
 name=String.valueOf(temp);
 TGlobal.ID_SESSION++;
 this.initvalue=initvalue;
 }
 void set(byte value)
 {
  TGlobal.session.setAttribute(name,new Byte(value));
 }
 byte get()
 {
  Byte temp=(Byte)TGlobal.session.getAttribute(name);
  if(temp==null)return initvalue;
  else return temp.byteValue();
 }
}
class TSessionInt
{
 String name;int initvalue;
 TSessionInt(int initvalue)
 {long temp=TGlobal.ID_SESSION;
 name=String.valueOf(temp);
 TGlobal.ID_SESSION++;
 this.initvalue=initvalue;
 }
 void set(int value)
 {
  TGlobal.session.setAttribute(name,new Integer(value));
 }
 int get()
 {
  Integer temp=(Integer)TGlobal.session.getAttribute(name);
  if(temp==null)return initvalue;
  else return temp.intValue();
 }
}
class TSessionLong
{
 String name;long initvalue;
 TSessionLong(long initvalue)
 {long temp=TGlobal.ID_SESSION;
 name=String.valueOf(temp);
 TGlobal.ID_SESSION++;
 this.initvalue=initvalue;
 }
 void set(long value)
 {
  TGlobal.session.setAttribute(name,new Long(value));
 }
 long get()
 {
  Long temp=(Long)TGlobal.session.getAttribute(name);
  if(temp==null)return initvalue;
  else return temp.longValue();
 }
}
class TSessionFloat
{
 String name;float initvalue;
 TSessionFloat(float initvalue)
 {long temp=TGlobal.ID_SESSION;
 name=String.valueOf(temp);
 TGlobal.ID_SESSION++;
 this.initvalue=initvalue;
 }
 void set(float value)
 {
  TGlobal.session.setAttribute(name,new Float(value));
 }
 float get()
 {
  Float temp=(Float)TGlobal.session.getAttribute(name);
  if(temp==null)return initvalue;
  else return temp.floatValue();
 }
}
class TSessionStr
{
 String name;String initvalue;
 TSessionStr(String initvalue)
 {long temp=TGlobal.ID_SESSION;
 name=String.valueOf(temp);
 TGlobal.ID_SESSION++;
 this.initvalue=initvalue;
 }
 void set(String value)
 {
  TGlobal.session.setAttribute(name,value);
 }
 String get()
 {
  String temp=(String)TGlobal.session.getAttribute(name);
  if(temp==null)return initvalue;
  else return temp;
 }
}
interface FControl
{
void init();
void output();
void outscript();
void reset();
void setsize(int dx,int dy);
void setpos(int x,int y);
void setrect(int x,int y,int dx,int dy);
}
/*
interface FDataSet
{void reset();
}
*/
class TControl
{int x;int y;int cx;int cy;long markID;String name;
void autoname()
{markID=TGlobal.ID_COUNT;name=String.valueOf(markID);
TGlobal.ID_COUNT++;
}
public void outscript()
{
}
public void setsize(int dx,int dy)
{this.cx=dx;this.cy=dy;
}
public void setpos(int x,int y)
{this.x=x;this.y=y;
}
public void setrect(int x,int y,int dx,int dy)
{this.x=x;this.y=y;this.cx=dx;this.cy=dy;
}
//输出风格
void htmlstyle()
{TGlobal.echo(" style=/"left:"+this.x+";top:"+this.y+";width:"+this.cx+";height:"+this.cy+";position:absolute/"");
}
//输出名字
void htmlname()
{TGlobal.echo(" name=/""+this.name+"/"");
}
//public void setparent(container)
//public void getparent()
//public void setvisible()
//public void setunvisible()
//public boolean isvisible()
//public void setenable()
//public void setdisable
//public boolean isenabled()
}

class TLabel extends TControl implements FControl
{String caption;
//构造函数
TLabel(String caption)
{this.caption=caption;
}
//输出界面
public void output()
{TGlobal.echo("<NOBR");
htmlstyle();
TGlobal.echo(">"+caption+"</NOBR>");
}
//初始化
public void init()
{
}
//重置对象
public void reset()
{
}
}

class TButton extends TControl implements FControl
{String caption;
//输出界面
public void output()
{TGlobal.echo("<BUTTON type=/"button/" onclick=buttonclick("+this.name+")");
this.htmlname();this.htmlstyle(); 
TGlobal.echo(">");
TGlobal.echo(caption);
TGlobal.echo("</BUTTON>");
}
//构造函数
TButton(String caption)
{this.caption=caption;
this.autoname();
}
//初始化
public void init()
{
}
//重置对象
public void reset()
{
}
}
class TEdit extends TControl implements FControl
{TSessionStr text;
//输出界面
public void output()
{TGlobal.echo("<INPUT type=/"text/" value=/""+text.get()+"/"");
this.htmlname();this.htmlstyle();
TGlobal.echo(">");
}
//初始化
public void init()
{text.set(TGlobal.getvalue(name));
}
//重置数据
public void reset()
{text.set("");
}
//设置文本内容
void settext(String text)
{this.text.set(text);
}
//得到文本内容
String gettext()
{return text.get();
}
//构造函数
TEdit()
{text=new TSessionStr("");
this.autoname();
}
}

class TMemo extends TControl implements FControl
{TSessionStr text;int rows;int cols;
//输出界面
public void output()
{TGlobal.echo("<TEXTAREA");
this.htmlname();this.htmlstyle();htmlsize();
TGlobal.echo(">"+text.get()+"</TEXTAREA>");
}
//初始化
public void init()
{text.set(TGlobal.getvalue(name));
}
//重置数据
public void reset()
{text.set("");
}
//设置文本内容
void settext(String text)
{this.text.set(text);
}
//得到文本内容
String gettext()
{return text.get();
}
//输出尺寸
void htmlsize()
{TGlobal.echo(" rows="+rows+" cols="+cols);
}
//构造函数
TMemo(int rows,int cols)
{this.rows=rows;this.cols=cols;
this.autoname();text=new TSessionStr("");
}
//构造函数
TMemo()
{rows=7;cols=8;
this.autoname();text=new TSessionStr("");
}
}

class TCheckBox extends TControl  implements FControl
{TSessionBool check;
//输出界面
public void output()
{
 String checkstr=check.get()?" checked":"";
 TGlobal.echo("<INPUT type=/"checkbox/" value=/"true/""+checkstr);
 this.htmlname();this.htmlstyle();
 TGlobal.echo(">");
}
//判断是否选中
boolean ischecked()
{return check.get();
}
//设置选中
void setcheck()
{check.set(true);
}
//取消选中
void setuncheck()
{check.set(false);
}
//构造函数
TCheckBox()
{check=new TSessionBool(false);
this.autoname();
}
//初始化
public void init()
{
 String temp=TGlobal.getvalue(name);
 if(temp==null){check.set(false);return ;}
 if(temp.equals("true"))check.set(true);
 else check.set(false);
}
//重置数据
public void reset()
{check.set(false);
}
}

class TFieldValue
{String field;String value;
}
class TDBUpdate
{Vector insertmap=null;String table;Connection con;
String keyfield;Statement command=null;
//构造函数
TDBUpdate(String table,String keyfield)throws SQLException
{this.table=table;this.keyfield=keyfield;con=TGlobal.datacon;
command=this.con.createStatement();
insertmap=new Vector();
}
//————————对单行记录进行操作——————//
//立即设置单元格的值(传入数值)
void setcell(long rowID,String fieldname,int value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"="+value+" WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
void setcell(long rowID,String fieldname,long value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"="+value+" WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
void setcell(long rowID,String fieldname,float value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"="+value+" WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
void setcell(long rowID,String fieldname,String value)throws SQLException
{String sql="UPDATE "+this.table+" SET "+fieldname+"='"+value+"' WHERE "+this.keyfield+"="+rowID;
command.executeUpdate(sql);
}
//立即得到单元格的值
String getcellstr(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getString(fieldname);
}
int getcellint(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getInt(fieldname);
}
long getcelllong(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getLong(fieldname);
}
float getcellfloat(long rowID,String fieldname)throws SQLException
{String sql="SELECT "+fieldname+" FROM "+this.table+" WHERE "+this.keyfield+"="+rowID;
ResultSet record=command.executeQuery(sql);
return record.getFloat(fieldname);
}
//设置更新值或插入值(传入数值)
void updatecell(String fieldname,int value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value=String.valueOf(value);
insertmap.add(use);
}
void updatecell(String fieldname,long value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value=String.valueOf(value);
insertmap.add(use);
}
void updatecell(String fieldname,float value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value=String.valueOf(value);
insertmap.add(use);
}
void updatecell(String fieldname,String value)
{TFieldValue use=new TFieldValue();
use.field=fieldname;use.value="'"+value+"'";
insertmap.add(use);
}
//执行更新
void updaterow(long keyID)throws SQLException
{
 String sql="UPDATE "+table+" SET ";
 String temp="";
 int size=insertmap.size();TFieldValue use;
 for(int i=0;i<size;i++)
 {
  use=(TFieldValue)insertmap.get(i);
  temp+=use.field;temp+="=";temp+=use.value;
  if(i!=size-1)temp+=",";
 }
 sql+=temp;sql+=" WHERE ";
 sql+=this.keyfield;sql+="=";sql+=keyID;
 command.executeUpdate(sql);
 insertmap.clear();
}
//执行插入
void insertrow()throws SQLException
{
 String insertfields="";String insertvalues="";
 int size=insertmap.size();TFieldValue use;
 for(int i=0;i<size;i++)
 {
  use=(TFieldValue)insertmap.get(i);
  insertfields+=use.field;insertvalues+=use.value;
  if(i!=size-1)
  {insertfields+=",";insertvalues+=",";
  }
 }
 String sql="INSERT INTO "+this.table+"("+insertfields+") VALUES("+insertvalues+")";
 command.executeUpdate(sql);
 insertmap.clear();
}
//删除指定记录
void delrow(long keyID)throws SQLException
{String sql="DELETE FROM "+this.table+" WHERE "+this.keyfield+"="+keyID;
command.executeUpdate(sql);
}
//有条件的清空记录
void clear(String filter)throws SQLException
{String sql="DELETE FROM "+table+" WHERE "+filter;
command.executeUpdate(sql);
}
//清空所有记录
void clear()throws SQLException
{String sql="DELETE FROM "+table;
command.executeUpdate(sql);
}
}
class TDBQuery
{String table;Connection con;String keyfield;
ResultSet recordset=null;
TSessionLong activerow;Statement command=null;
TSessionStr filter;TSessionBool needfilter;
TSessionLong querystart;TSessionLong queryend;
//构造函数
TDBQuery(String table,String keyfield)throws SQLException
{this.table=table;this.keyfield=keyfield;con=TGlobal.datacon;
command=con.createStatement();
filter=new TSessionStr("");needfilter=new TSessionBool(false);
querystart=new TSessionLong(0);queryend=new TSessionLong(0);
}
//设置过滤器
void setfilter(String filter)
{this.filter.set(filter);needfilter.set(true);
}
//取消过滤器
void setunfilter()
{needfilter.set(false);
}
//打开第一条记录
void firstrecord(String fieldlist)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" desc";
 else sql="SELECT top 1 "+fieldlist+" FROM "+table+" order by "+keyfield+" desc";
 recordset=command.executeQuery(sql);
 recordset.absolute(1);
 long keyID=recordset.getLong(keyfield);
 activerow.set(keyID);
}
//打开上一条记录
void prevrecord(String fieldlist)throws SQLException
{
 String sql;long keyID=activerow.get();
 if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+"<"+keyID+" order by "+keyfield+" asc";
 else sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+keyfield+"<"+keyID+" order by "+keyfield+" asc";
 recordset=command.executeQuery(sql);
 recordset.absolute(1);
 keyID=recordset.getLong(keyfield);
 activerow.set(keyID);
}
//打开下一条记录
void nextrecord(String fieldlist)throws SQLException
{
 String sql;long keyID=activerow.get();
 if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+">"+keyID+" order by "+keyfield+" desc";
 else sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+keyfield+">"+keyID+" order by "+keyfield+" desc";
 recordset=command.executeQuery(sql);
 recordset.absolute(1);
 keyID=recordset.getLong(keyfield);
 activerow.set(keyID);
}
//打开最后一条记录
void lastrecord(String fieldlist)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT top 1 "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" asc";
 else sql="SELECT top 1 "+fieldlist+" FROM "+table+" order by "+keyfield+" asc";
 recordset=command.executeQuery(sql);
 recordset.absolute(1);
 long keyID=recordset.getLong(keyfield);
 activerow.set(keyID);
}
//打开第一页
void firstpage(String fieldlist,int pagesize)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" desc";
 else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" order by "+keyfield+" desc";
 recordset=command.executeQuery(sql);
}
//打开最后一页
void lastpage(String fieldlist,int pagesize)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" order by "+keyfield+" asc";
 else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" order by "+keyfield+" asc";
 recordset=command.executeQuery(sql);
}
//打开上一页
void prevpage(String fieldlist,long pagestart,int pagesize)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+"<"+pagestart+" order by "+keyfield+" asc";
 else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+keyfield+"<"+pagestart+" order by "+keyfield+" asc";
 recordset=command.executeQuery(sql);
}
//打开下一页
void nextpage(String fieldlist,long pageend,int pagesize)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+filter.get()+" and "+keyfield+">"+pageend+" order by "+keyfield+" desc";
 else sql="SELECT top "+pagesize+" "+fieldlist+" FROM "+table+" WHERE "+keyfield+">"+pageend+" order by "+keyfield+" desc";
 recordset=command.executeQuery(sql);
}
//打开所有记录
void open(String fieldlist)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT "+fieldlist+" FROM "+table+" WHERE "+filter.get();
 else sql="SELECT "+fieldlist+" FROM "+table;
 recordset=command.executeQuery(sql);
}
//打开从属的记录
void openasdetail(String fieldlist,String masterfield,long masterkeyID)throws SQLException
{
 String sql;
 if(needfilter.get())sql="SELECT "+fieldlist+" FROM "+this.table+" WHERE "+filter.get()+" AND "+masterfield+"="+masterkeyID;
 else sql="SELECT "+fieldlist+" FROM "+this.table+" WHERE "+masterfield+"="+masterkeyID;
 recordset=command.executeQuery(sql);
}
//————————用于循环遍历整个记录集——————//
//移动到下一条记录
boolean movenext()throws SQLException
{return recordset.next();
}
//取得当前记录索引字段的值
long getkey()throws SQLException
{return recordset.getLong(keyfield);
}
//取得当前记录指定字段的值
String getvaluestr(String fieldname)throws SQLException
{return recordset.getString(fieldname);
}
int getvalueint(String fieldname)throws SQLException
{return recordset.getInt(fieldname);
}
long getvaluelong(String fieldname)throws SQLException
{return recordset.getLong(fieldname);
}
float getvaluefloat(String fieldname)throws SQLException
{return recordset.getFloat(fieldname);
}
//关闭数据集
void close()throws SQLException
{recordset.close();
}
}

class TCollectDB extends TControl
{TDBQuery dbselect;String listfield;TSessionLong selkeyID;
//得到选中项
long getsel()
{return selkeyID.get();
}
//设置选中项
void setsel(long selkeyID)
{this.selkeyID.set(selkeyID);
}
//初始化
public void init()
{
 String temp=TGlobal.getvalue(name);
 if(temp==null)selkeyID.set(-1);
 else selkeyID.set(Long.parseLong(temp));
}
//重置数据
public void reset()
{selkeyID.set(-1);
}
//————————用于循环遍历整个记录集——————//
//打开记录集
void open()throws SQLException
{String fieldstr=dbselect.keyfield+","+listfield;
dbselect.open(fieldstr);
}
//移动到下一条记录
boolean movenext()throws SQLException
{return dbselect.movenext();
}
//得到当前记录
String currentitem()throws SQLException
{return dbselect.getvaluestr(listfield);
}
//得到当前记录的唯一索引
long currentitemkey()throws SQLException
{return dbselect.getkey();
}
//关闭记录集
void close()throws SQLException
{dbselect.close();
}
//————————设置数据绑定信息——————//
//指定列表字段
void setlistfield(String listfield)
{this.listfield=listfield;
}
//设置相关联的数据集
void setdbselect(TDBQuery data)
{this.dbselect=data;
}
//输出选项
void htmloption(long key,String value)
{TGlobal.echo("<OPTION value="+key+">"+value+"</OPTION>");
}
//输出选中的选项
void htmlseloption(long key,String value)
{TGlobal.echo("<OPTION value="+key+" selected>"+value+"</OPTION>");
}
}

class TListDB extends TCollectDB implements FControl
{int visualsize;
//输出界面
public void output()
{
 long keyID;String value;long selrecord=selkeyID.get();
 TGlobal.echo("<SELECT");
 htmlname();htmlstyle();htmlvisualsize();
 TGlobal.echo(">");
 try
 {
  open();
  while(movenext())
  {keyID=currentitemkey();value=currentitem();
  if(keyID==selrecord)htmlseloption(keyID,value);
  else htmloption(keyID,value);
  }
  close();
 }
 catch(SQLException e){} 
 TGlobal.echo("</SELECT>");
}
//设置可视个数
void setvisualsize(int num)
{this.visualsize=num;
}
//输出可视个数
void htmlvisualsize()
{TGlobal.echo(" size="+this.visualsize);
}
//构造函数
TListDB(TDBQuery data,String listfield,int num)
{this.dbselect=data;this.listfield=listfield;
this.visualsize=num;selkeyID=new TSessionLong(-1);
this.autoname();
}
//构造函数
TListDB(TDBQuery data,String listfield)
{this.dbselect=data;this.listfield=listfield;
this.visualsize=8;selkeyID=new TSessionLong(-1);
this.autoname();
}
}

class TComboDB extends TCollectDB implements FControl
{
//输出界面
public void output()
{
 long keyID;String value;long selrecord=selkeyID.get();
 TGlobal.echo("<SELECT");
 htmlname();htmlstyle();
 TGlobal.echo(">");
 try
 {
  open();
  while(movenext())
  {
   keyID=currentitemkey();value=currentitem();
   if(keyID==selrecord)htmlseloption(keyID,value);
   else htmloption(keyID,value);
  }
  close();
 }
 catch(SQLException e){}
 TGlobal.echo("</SELECT>");
}
//构造函数
TComboDB(TDBQuery data,String listfield)
{this.dbselect=data;this.listfield=listfield;
selkeyID=new TSessionLong(-1);
this.autoname();
}
}

class TCollectRAM extends TControl
{Vector data;TSessionInt selkeyID;
//初始化
public void init()
{
 String temp=TGlobal.getvalue(name);
 if(temp==null)selkeyID.set(-1);
 else selkeyID.set(Integer.parseInt(temp));
}
//重置数据
public void reset()
{selkeyID.set(-1);
}
//得到选中项
int getsel()
{return selkeyID.get();
}
//设置选中项
void setsel(int selkeyID)
{this.selkeyID.set(selkeyID);
}
//输出选项
void htmloption(int key,String value)
{TGlobal.echo("<OPTION value="+key+">"+value+"</OPTION>");
}
//输出选中的选项
void htmlseloption(int key,String value)
{TGlobal.echo("<OPTION value="+key+" selected>"+value+"</OPTION>");
}
//添加子项
int additem(String item)
{data.add(item);
return data.size()-1;
}
//得到子项
String getitem(int index)
{
 return (String)data.get(index);
}
int getsize()
{return data.size();
}
}
class TListRAM extends TCollectRAM implements FControl
{int visualsize;
//输出界面
public void output()
{
 String value;int selrecord=selkeyID.get();
 TGlobal.echo("<SELECT");
 htmlname();htmlstyle();htmlvisualsize();
 TGlobal.echo(">");
 int size=getsize();
 for(int i=0;i<size;i++)
 {value=getitem(i);
 if(i==selrecord)htmlseloption(i,value);
 else htmloption(i,value);
 }
 TGlobal.echo("</SELECT>");
}
//设置可视个数
void setvisualsize(int num)
{this.visualsize=num;
}
//输出可视个数
void htmlvisualsize()
{TGlobal.echo(" size="+this.visualsize);
}
//构造函数
TListRAM(int num)
{data=new Vector();
this.visualsize=num;selkeyID=new TSessionInt(-1);
this.autoname();
}
//构造函数
TListRAM()
{data=new Vector();
this.visualsize=8;selkeyID=new TSessionInt(-1);
this.autoname();
}
}
class TComboRAM extends TCollectRAM implements FControl
{
//输出界面
public void output()
{
 String value;int selrecord=selkeyID.get();
 TGlobal.echo("<SELECT");
 htmlname();htmlstyle();
 TGlobal.echo(">");
 int size=getsize();
 for(int i=0;i<size;i++)
 {value=getitem(i);
 if(i==selrecord)htmlseloption(i,value);
 else htmloption(i,value);
 }
 TGlobal.echo("</SELECT>");
}
//构造函数
TComboRAM()
{data=new Vector();selkeyID=new TSessionInt(-1);
this.autoname();
}
}
class TRAMData
{Vector data;
TRAMData()
{data=new Vector();
}
//添加子项
int additem(String item)
{data.add(item);
return data.size()-1;
}
//得到子项
String getitem(int index)
{
 return (String)data.get(index);
}
//得到尺寸
int getsize()
{return data.size();
}
}
class TField
{HashMap mapdb;TDBQuery listsource;String listfield;
TRAMData mapram;
byte type;String alias;String fieldname;
//构造函数(普通)
TField(String fieldname,String alias)
{this.alias=alias;this.fieldname=fieldname;
type=0;
}
//构造函数(连接到数据库)
TField(String fieldname,String alias,TDBQuery listsource,String listfield)
{mapdb=new HashMap();this.listsource=listsource;this.listfield=listfield;
type=1;
}
//构造函数(连接到内存)
TField(String fieldname,String alias,TRAMData mapram)
{this.alias=alias;this.fieldname=fieldname;
this.mapram=mapram;type=2;
}
boolean isnormal()
{ if(type==0)return true;
else return false;
}
boolean islookup()
{if(type==1|| type==2)return true;
else return false;
}
boolean linkdata()
{if(type==1)return true;
else return false;
}
//加载查询列表
void load()
{
 String fieldstr=listsource.keyfield+","+listfield;
 mapdb.clear();
 try
 {
  listsource.open(fieldstr);String value;long keyID;
  while(listsource.movenext())
  {
   value=listsource.getvaluestr(listfield);
   keyID=listsource.getkey();
   mapdb.put(new Long(keyID),value);
  }
  listsource.close();
 }
 catch(SQLException e){}
}
String getvalue(long keyID)
{if(type==1)return (String)mapdb.get(new Long(keyID));
else return mapram.getitem((int)keyID);
}
}
class TSelRecord
{Vector selrows;int selcount;int activesel;
TSelRecord()
{selrows=new Vector();selcount=0;
}
int getsize()
{return selcount;
}
//得到选中的记录索引
long getonesel()
{Long use=(Long)selrows.get(0);
return use.longValue();
}
//移动到第一条选中记录
void movefirstsel()
{activesel=0;selcount=selrows.size();
}
//判断是否存在下一条选中记录
boolean hasnextsel()
{if(activesel<selcount)return true;
else return false;
}
//得到当前选中记录
long getsel()
{
 Long use=(Long)selrows.get(activesel);
 long ret=use.longValue();
 activesel++;return ret;
}
void add(long item)
{selrows.add(new Long(item));
}
}
class TGridDB extends TControl implements FControl
{Vector fieldlist;TDBQuery dataset;int initwidth;
TSessionStr selstr;
int pagesize;TSessionLong pagestart;TSessionLong pageend;
//添加文本字段
public void addfield(String fieldname,String alias)
{
 TField sfield=new TField(fieldname,alias);
 fieldlist.add(sfield); 
}
//添加数据库查询字段
public void addfield(String fieldname,String alias,TDBQuery listsource,String listfield)
{
 TField sfield=new TField(fieldname,alias,listsource,listfield);
 fieldlist.add(sfield); 
}
//添加内存查询字段
public void addfield(String fieldname,String alias,TRAMData mapram)
{
 TField sfield=new TField(fieldname,alias, mapram);
 fieldlist.add(sfield);
}
//构造函数
public TGridDB(TDBQuery data,int initwidth)
{this.dataset=data;fieldlist=new Vector();
this.autoname();selstr=new TSessionStr("");
this.initwidth=initwidth;
}
//重置数据
public void reset()
{selstr.set("");
}
//输出脚本
public void outscript()
{TGlobal.echo("var selrows"+name+"=new Array(50);var numrows"+name+"=0;");
TGlobal.echo("function findrecord"+name+"(keyID){for(i=0;i<numrows"+name+";i++){if(selrows"+name+"[i].id==keyID)return true;}return false;}");
TGlobal.echo("function cancelselrecords"+name+"(){var selrecord;for(i=0;i<numrows"+name+";i++){selrecord=selrows"+name+"[i];selrecord.style.background=/"white/";}}");
TGlobal.echo("function onselrecord"+name+"(record){var eform=document.mainform;if(event.ctrlKey){if(!findrecord"+name+"(record.id)){selrows"+name+"[numrows"+name+"]=record;numrows"+name+"++;record.style.background=/"blue/";eform.selrecord"+name+".value=eform.selrecord"+name+".value+/"-/"+record.id;}}else{cancelselrecords"+name+"();record.style.background=/"blue/";selrows"+name+"[0]=record;numrows"+name+"=1;eform.selrecord"+name+".value=record.id;}}");
}
//输出界面
public void output()
{
 String value; int num=fieldlist.size();TField item;long lookid;
 String fieldstr="",head="",temp;
 TGlobal.echo("<INPUT type=/"hidden/" name=/"selrecord"+this.name+"/" value=/"/">");
 TGlobal.echo("<DIV onscroll=posheader(this,/"header"+name+"/",/"firstpage"+name+"/",/"prevpage"+name+"/",/"nextpage"+name+"/",/"lastpage"+name+"/") style=/"left:"+x+";top:"+y+";width:"+cx+";height:"+cy+";position:absolute;border-left:2pt outset;border-top:2pt outset;border-bottom:2pt ridge;border-right:2pt ridge;padding-left:2;padding-top:2;overflow:auto/">");
 for (int i = 0; i <num; i++)
 {item=(TField)fieldlist.get(i);
 if(item.linkdata())item.load();
 fieldstr+=item.fieldname;fieldstr+=",";
 temp="<th>"+item.alias+"</th>";
 head+=temp;
 }
 fieldstr+=dataset.keyfield;
 TGlobal.echo("<TABLE width="+initwidth+" border=1 cellspacing=0 bordercolor=black bgcolor=white>");
 TGlobal.echo("<TR id=header"+name+" style=/"position:relative;z-index:5;background-color:#C8FC60/">");
 TGlobal.echo(head);
 try
 {
  dataset.open(fieldstr);
  while(dataset.movenext())
  {
   TGlobal.echo("<tr id="+String.valueOf(dataset.getkey())+" onclick=onselrecord"+name+"(this)>");
   for (int i = 0; i <num; i++)
   {
    item=(TField)fieldlist.get(i);
    if(item.islookup())
    {
     lookid=dataset.getvaluelong(item.fieldname);htmlcell(item.getvalue(lookid));
    }
    else
    {
     value=dataset.getvaluestr(item.fieldname);htmlcell(value);
    }
   }
  }
  dataset.close();
  TGlobal.echo("<TR height=80><TD></TD>");
 }
 catch(SQLException e){}
 TGlobal.echo("</TABLE>");
 TGlobal.echo("<BUTTON id=firstpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=firstpage("+name+")>第一页</BUTTON>");
 TGlobal.echo("<BUTTON id=prevpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=prevpage("+name+")>上一页</BUTTON>");
 TGlobal.echo("<BUTTON id=nextpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=nextpage("+name+")>下一页</BUTTON>");
 TGlobal.echo("<BUTTON id=lastpage"+name+" type=/"button/" style=/"position:absolute;width:80;height:40/" onclick=lastpage("+name+")>最后一页</BUTTON>");
 TGlobal.echo("</DIV>");
}
void htmlcell(String value)
{TGlobal.echo("<td>"+value+"</td>");
}
public void init()
{
 String temp=TGlobal.getvalue("selrecord"+name);
 if(temp==null)selstr.set("");
 else selstr.set(temp);
}
TSelRecord getsel()
{
 long use;TSelRecord mn=new TSelRecord();
 StringTokenizer fenxi=new StringTokenizer(selstr.get(),"-");
 while(fenxi.hasMoreTokens())
 {use=Long.parseLong(fenxi.nextToken());
 mn.add(use);
 }
 return mn;
}
}

class TContainer extends TControl
{Vector controllist=new Vector();
//添加子控件
void addcontrol(FControl child)
{controllist.add(child);
}
void init()
{
 FControl control;
 int num=controllist.size();
 for(int i=0;i<num;i++)
 { control=(FControl)controllist.get(i);
  control.init();
 }
}
//重置所有子控件
void reset()
{
 FControl control;TDBQuery ds;
 int num=controllist.size();
 for(int i=0;i<num;i++)
 { control=(FControl)controllist.get(i);
  control.reset();
 }
}
//输出所有子控件的界面
void output()
{
 FControl control;
 int num=controllist.size();
 for(int i=0;i<num;i++)
 { control=(FControl)controllist.get(i);
  control.output();
 }
}
//输出所有子控件的脚本
public void outscript()
{  FControl control;
 int num=controllist.size();
 for(int i=0;i<num;i++)
 { 
  control=(FControl)controllist.get(i);
  control.outscript();
 }
}
}
class TTabSheet extends TContainer
{String caption;
TTabSheet(String caption)
{this.caption=caption;
autoname();
}
}
class TPageControl extends TControl implements FControl
{Vector sheetlist;TSessionInt selsheet;
void addsheet(TTabSheet item)
{sheetlist.add(item);
}
void setactive(int active)
{selsheet.set(active);
}
public void reset()
{
 int num=sheetlist.size();TTabSheet item;
 item=(TTabSheet)sheetlist.get(0);selsheet.set((int)item.markID);
 for(int i=0;i<num;i++)
 {
  item=(TTabSheet)sheetlist.get(i);
  item.reset();
 }
}
TPageControl()
{sheetlist=new Vector();selsheet=new TSessionInt(-1);
autoname();
}
//输出界面
public void output()
{
 int ptsel=selsheet.get();
 TGlobal.echo("<INPUT type=/"hidden/" name=/"selsheet"+name+"/" value="+ptsel+">");
 TGlobal.echo("<DIV style=/"left:"+x+";top:"+y+";width:"+cx+";height:"+cy+";position:absolute;border-left:2pt outset;border-top:2pt outset;border-bottom:2pt ridge;border-right:2pt ridge/">");
 TGlobal.echo("<TABLE border=1 cellspacing=1 bgcolor=aqua height=26><TR>");
 int num=sheetlist.size();TTabSheet item;
 for(int i=0;i<num;i++)
 {
  item=(TTabSheet)sheetlist.get(i);
  if(item.markID==ptsel)
  TGlobal.echo("<TD id=caption"+item.name+" bgcolor=red onclick=ontabswitch"+name+"(this,"+item.name+")>"+item.caption+"</TD>");
  else
  TGlobal.echo("<TD id=caption"+item.name+" onclick=ontabswitch"+name+"(this,"+item.name+")>"+item.caption+"</TD>");
 }
 TGlobal.echo("</TABLE>");
 for(int i=0;i<num;i++)
 {
  item=(TTabSheet)sheetlist.get(i);
  if(ptsel==item.markID)
  TGlobal.echo("<DIV id="+item.name+" style=/"left:0;top:26;position:absolute;visibility:visible/">");
  else
  TGlobal.echo("<DIV id="+item.name+" style=/"left:0;top:26;position:absolute;visibility:hidden/">");
  item.output();
  TGlobal.echo("</DIV>");
 }
 TGlobal.echo("</DIV>");
}
//产生脚本
public void outscript()
{
 TGlobal.echo("var tabsheet"+name+";var sheetlabel"+name+";");
 TGlobal.echo("function ontabswitch"+name+"(lab,ele)");
 TGlobal.echo("{var eform=document.mainform;");
 TGlobal.echo("var selsheet=eform.selsheet"+name+".value;");
 TGlobal.echo("if(tabsheet"+name+"==null)tabsheet"+name+"=document.getElementById(selsheet);");
 TGlobal.echo("if(sheetlabel"+name+"==null)sheetlabel"+name+"=document.getElementById(/"caption/"+selsheet);");
 TGlobal.echo("tabsheet"+name+".style.visibility=/"hidden/";");
 TGlobal.echo("sheetlabel"+name+".style.background=/"aqua/";");
 TGlobal.echo("sheetlabel"+name+"=lab;sheetlabel"+name+".style.background=/"red/";");
 TGlobal.echo("tabsheet"+name+"=document.getElementById(ele);");
 TGlobal.echo("tabsheet"+name+".style.visibility=/"visible/";");
 TGlobal.echo("eform.selsheet"+name+".value=ele;");
 TGlobal.echo("}");
 int num=sheetlist.size();TTabSheet item;
 for(int i=0;i<num;i++)
 {
  item=(TTabSheet)sheetlist.get(i);
  item.outscript();
 } 
}
//初始化
public void init()
{
 String use=TGlobal.getvalue("selsheet"+name);
 selsheet.set(Integer.parseInt(use));
 int num=sheetlist.size();TTabSheet item;
 for(int i=0;i<num;i++)
 {
  item=(TTabSheet)sheetlist.get(i);
  item.init();
 } 
}
}

abstract class TForm extends TContainer
{String caption;
//private eventsource; private bkcolor;
void setcaption(String caption)
{this.caption=caption;
}
//显示正常的界面
void Show()
{TGlobal.echo("<HTML><HEAD><TITLE>"+caption+"</TITLE>");
TGlobal.echo("<script language=/"javascript/">");
eventscript();
outscript();
TGlobal.echo("</script>");
TGlobal.echo("</HEAD><BODY bgcolor=#D8D0C8>");
TGlobal.echo("<FORM name=/"mainform/" method=/"post/" action=/"app/">");
TGlobal.echo("<INPUT type=/"hidden/" name=/"EventType/" value=/"-1/"><INPUT type=/"hidden/" name=/"EventSource/" value=-1><INPUT type=/"hidden/" name=/"EventForm/" value=/""+name+"/">");
output();
TGlobal.echo("</FORM>");
TGlobal.echo("</BODY></HTML>");
}
//显示新建窗体的界面
void ShowNew()
{TGlobal.echo("<HTML><HEAD><TITLE>"+caption+"</TITLE>");
TGlobal.echo("<script language=/"javascript/">");
eventscript();
outscript();
TGlobal.echo("</script>");
TGlobal.echo("</HEAD><BODY");
TForm mn=TGlobal.getnew();
TGlobal.echo(" onload=window.open(/""+TGlobal.geturl()+"/",/"_blank/",/"top="+mn.y+",left="+mn.x+",width="+mn.cx+",height="+mn.cy+",menubar=yes,toolbar=no,location=yes,status=no,scrollbars=yes,resizable=yes/")");
TGlobal.echo(" bgcolor=#D8D0C8>");
TGlobal.echo("<FORM name=/"mainform/" method=/"post/" action=/"app/">");
TGlobal.echo("<INPUT type=/"hidden/" name=/"EventType/" value=/"-1/"><INPUT type=/"hidden/" name=/"EventSource/" value=-1><INPUT type=/"hidden/" name=/"EventForm/" value=/""+name+"/">");
output();
TGlobal.echo("</FORM>");
TGlobal.echo("</BODY></HTML>");
}
void eventscript()
{TGlobal.echo("function buttonclick(value){var eform=document.mainform;eform.EventType.value=/"ButtonClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function posheader(item,head,firstpage,prevpage,nextpage,lastpage){var header=document.getElementById(head);var firstbutton=document.getElementById(firstpage);var prevbutton=document.getElementById(prevpage);var nextbutton=document.getElementById(nextpage);var lastbutton=document.getElementById(lastpage);header.style.posTop=item.scrollTop-2;var comtop=item.scrollTop+item.offsetHeight-70;var sep=(item.offsetWidth-320)/5;firstbutton.style.posTop=comtop;prevbutton.style.posTop=comtop;nextbutton.style.posTop=comtop;lastbutton.style.posTop=comtop;firstbutton.style.posLeft=item.scrollLeft+sep;prevbutton.style.posLeft=item.scrollLeft+2*sep+80;nextbutton.style.posLeft=item.scrollLeft+3*sep+160;lastbutton.style.posLeft=item.scrollLeft+4*sep+240;}");
TGlobal.echo("function firstpage(value){var eform=document.mainform;eform.EventType.value=/"FirstPageClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function prevpage(value){var eform=document.mainform;eform.EventType.value=/"PrevPageClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function nextpage(value){var eform=document.mainform;eform.EventType.value=/"NextPageClick/";eform.EventSource.value=value;eform.submit();}");
TGlobal.echo("function lastpage(value){var eform=document.mainform;eform.EventType.value=/"LastPageClick/";eform.EventSource.value=value;eform.submit();}");
}
//窗口创建事件
public abstract void OnCreate();
//事件分发函数
void OnEvent()
{
 long source=Long.parseLong(TGlobal.getvalue("EventSource"));
 String type=TGlobal.getvalue("EventType");
 if(type.equals("ButtonClick"))
 {
  OnButtonClick(source);
 }
//Form2.LinkTo();
}
//按钮单击事件
public abstract void OnButtonClick(long eventsource);
}

abstract class TApplication extends HttpServlet
{boolean isfirst=true;
public void init()throws ServletException
{
 run();
}
public void setconnection(Connection con)
{TGlobal.datacon=con;
}
abstract void run();
void htmlclose()
{TGlobal.echo("<HTML><HEAD><TITLE></TITLE></HEAD><BODY onload=window.close()></BODY></HTML>");
}
void prepare(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
 request.setCharacterEncoding("GB2312");
 TGlobal.request=request;
 response.setContentType("text/html;charset=GB2312");
 TGlobal.out=response.getWriter();
 TGlobal.session=request.getSession();
}
public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
 isfirst=true;doPost(request,response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
 TForm form;int temp;byte mn;
 prepare(request,response);
 //TGlobal.setactive();
 String name=request.getParameter("EventForm");
 if(name==null)form=TGlobal.entry;
 else
 {temp=Integer.parseInt(name);
 form=(TForm)TGlobal.formlist.get(temp);
 TGlobal.active.set(temp);
 }
 if(!isfirst)
 {
  form.init();form.OnEvent();
 }
 else
 {
  isfirst=false;form.reset();form.OnCreate();
 }
 mn=TGlobal.state.get();
 if(mn==(byte)1)   //转向
 {
  TGlobal.state.set((byte)0);
  temp=TGlobal.active.get();
  form=(TForm)TGlobal.formlist.get(temp);
  form.reset();form.OnCreate();
  form.Show();
 }
 else if(mn==(byte)2)  //新建
 {
  TGlobal.state.set((byte)0);form.ShowNew();
 }
 else if(mn==(byte)3)  //关闭
 {
  TGlobal.state.set((byte)0);htmlclose();
 }
 else form.Show();
}
}

//————————————————————演示程序的代码————————————————————//

class TLoginForm extends TForm
{
 TPageControl PageControl1;TTabSheet TabSheet1;TGridDB DBGrid1;TButton Button1;TButton Button2;TButton Button3;TLabel Label1;
 TLoginForm()
 {
  setcaption("应用程序主窗口");
PageControl1=new TPageControl();
TabSheet1=new TTabSheet("界面");PageControl1.addsheet(TabSheet1);
Label1=new TLabel("标签");
Label1.setrect(80,8,65,33);TabSheet1.addcontrol(Label1);
DBGrid1=new TGridDB(Entire.da,400);
DBGrid1.setrect(40,56,497,265);TabSheet1.addcontrol(DBGrid1);
Button1=new TButton("修改");
Button1.setrect(112,336,73,41);TabSheet1.addcontrol(Button1);
Button2=new TButton("删除");
Button2.setrect(240,336,81,41);TabSheet1.addcontrol(Button2);
Button3=new TButton("新建窗口");
Button3.setrect(376,336,97,41);TabSheet1.addcontrol(Button3);
PageControl1.setrect(40,24,585,425);addcontrol(PageControl1);
  DBGrid1.addfield("english","姓名");
  DBGrid1.addfield("chinese","年龄");
 }
 public void OnCreate()
 {
 }
 public void OnButtonClick(long eventsource)
 {
  if(eventsource==Button3.markID)
  {TGlobal.newform(Entire.form2);
  }
 }
}

class TSubForm extends TForm
{
 TPageControl PageControl1;TTabSheet TabSheet1;TEdit Edit1;TMemo Memo1;TCheckBox CheckBox1;TButton Button2;TTabSheet TabSheet2;TListRAM ListBox1;TComboRAM ComboBox1;TButton Button1;TTabSheet TabSheet3;TEdit Edit3;TButton Button4;TEdit Edit2;TButton Button3;
 TSubForm()
 {
  setcaption("Child Form");setpos(0,0);setsize(800,400);
  PageControl1=new TPageControl();
  TabSheet1=new TTabSheet("Card1");PageControl1.addsheet(TabSheet1);
  Edit1=new TEdit();
  Edit1.setrect(56,48,129,28);TabSheet1.addcontrol(Edit1);
  Memo1=new TMemo();
  Memo1.setrect(32,96,201,169);TabSheet1.addcontrol(Memo1);
  CheckBox1=new TCheckBox();
  CheckBox1.setrect(280,40,129,41);TabSheet1.addcontrol(CheckBox1);
  Button2=new TButton("Button2");
  Button2.setrect(280,152,137,57);TabSheet1.addcontrol(Button2);
  TabSheet2=new TTabSheet("Card2");PageControl1.addsheet(TabSheet2);
  ListBox1=new TListRAM();
  ListBox1.additem("yang");ListBox1.additem("xue");ListBox1.additem("dong");ListBox1.setrect(40,40,169,169);TabSheet2.addcontrol(ListBox1);
  ComboBox1=new TComboRAM();
  ComboBox1.additem("Hello");ComboBox1.additem("How do you do");ComboBox1.additem("My name is join");ComboBox1.setrect(248,48,185,28);TabSheet2.addcontrol(ComboBox1);
  Button1=new TButton("Button1");
  Button1.setrect(264,160,121,57);TabSheet2.addcontrol(Button1);
  TabSheet3=new TTabSheet("Card3");PageControl1.addsheet(TabSheet3);
  Edit3=new TEdit();
  Edit3.setrect(128,56,153,28);TabSheet3.addcontrol(Edit3);
  Button4=new TButton("Button4");
  Button4.setrect(120,144,185,65);TabSheet3.addcontrol(Button4);
  PageControl1.setrect(56,24,497,321);addcontrol(PageControl1);
  Edit2=new TEdit();
  Edit2.setrect(80,360,153,28);addcontrol(Edit2);
  Button3=new TButton("Button3");
  Button3.setrect(296,360,89,41);addcontrol(Button3);
 }
 public void OnCreate()
 {
  Edit1.settext("Yang");
 }
 public void OnButtonClick(long eventsource)
 {
/*  if(eventsource==button1.markID)
  {
   edit1.settext("The selected option is:"+listram1.getsel());   
  }
  if(eventsource==button2.markID)
  {
   close();
  }
*/
 }
}
class Entire
{static TLoginForm form1;static TSubForm form2;
static TDBQuery da;
}
public class App extends TApplication
{
 Connection con;
 void run()
 {
  try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");}
  catch(ClassNotFoundException e){}
  try
  {con=DriverManager.getConnection("jdbc:odbc:yang","","");
  setconnection(con);
  }
  catch(SQLException e){}
  try{Entire.da=new TDBQuery("dictionary","id");}
  catch(SQLException e){}
  Entire.form1=new TLoginForm();TGlobal.addform(Entire.form1,true);
  Entire.form2=new TSubForm();TGlobal.addform(Entire.form2,false);
 }
}
欢迎J2EE编程爱好者与我交流编程心得,本人的邮箱为yangxuedong2000@163.com,移动电话为15814676195(深圳),现处于找工作状态中。

原创粉丝点击