package myprojects.FrmZYCF;
import org.eclipse.swt.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.swt.events.*;
import java.util.*;
import java.sql.*;
import myprojects.FrmMenu.FrmMenu;
import myprojects.FrmZYCFDb.FrmZYCFDb;;
/**
* <p>该类用于住院处方窗体的显示和事件处理</p>
* @author 邓余林
* @version 1.0
* @see java.sql.*
* @see db.FrmZYCFDb
* @see org.eclipse.swt.*;
*/
public class FrmZYCF{
private Shell shell;
private Display display;
private FrmZYCFDb db; //数据库操作实例
private MessageBox msgBox; //错误消息框
private String strSQL; //数据库操作的SQL语句
private String strZFBL; //药品信息Group中的自费比例
private String strYPDJ; //药品信息Group中的药品单价
private String strGG; //药品信息Group中的药品规格
private String strCD; //药品信息Group中的药品产地
private String strCJ; //药品信息Group中的药品厂家
private String strJJDW; //药品信息Group中的计价单位
private String strZYH; //用户登录处方的住院号
private String strXMFL; //分类代码
private String strBLH;
private ArrayList astYPNM; //用于存放药品内码
//和收费项目输入用内码的动态数组
private static int tblItemIndex_YP; //中间表格药品信息行索引值
private static int tblItemIndex_YLFW;//中间表格医疗服务行索引值
private boolean isYPRadioSelected; //用来判断当前录入状态的flag
private boolean isInfGrpChanged; //用来判断下面信息输入Group是否有输入
private boolean isCurrentJFMX;
private boolean isCurrentFYMX;
private float fJE;
private float fZFJE;
private float fYFSum;
private float fQZZF1Sum;
private float fYLFWSum;
private float fQZZF2Sum;
private GridLayout grdLtTop; //顶部控件布局
private GridLayout grdLtZDXX; //诊断Group布局
private GridLayout grdLtYPXX; //药品Group布局
private GridLayout grdLtCmpUp; //上部按键Composite布局
private GridLayout grdLtCmpDown; //下部按键Composite布局
private GridData grdData; //GridData
private Group grpZDXX; //诊断信息Group
private Group grpYPXX; //药品信息Group
private Table tblMiddle; //中间表格
private TableColumn[] colYPXX; //中间表格的列
private TableItem item;
private String[][] saYPXXData;
private String[][] saYLFWData;
private Table tblICDInfo; //输出疾病代码后弹出的ICD信息表格
private TableColumn colICDNO; //ICD信息表格的ICD编号列
private TableColumn colICDName; //ICD信息表的疾病名称列
private TableItem itemICD; //ICD信息表的行
private Composite comGrpLeft; //grpZDXX左边的组件组合
private Composite comGrpRight; //grpZDXX右边的组件组合
private Composite comBtnGrpUp; //上面的"确定""放弃"按键组合
private Composite comBtnGrpDown; //下面的"保存""重输""返回"按键组合
private Button btnYP; //"药"
private Button btnYLFW; //"医疗服务"
private Button btnOK; //"确定"
private Button btnCancel; //"放弃"
private Button btnSave; //"保存"
private Button btnReInput; //"重输"
private Button btnBack; //"返回"
private Label lblNone; //空内容标签,用于布局
private Label lblGG; //药品规格标签
private Label lblCD; //药品产地标签
private Label lblCJ; //药品厂家标签
private Label lblYPDM; //药品代码标签
private Text txtZYH; //"住院号"
private Text txtCFYS; //"处方医师"
private Text txtCFRQ; //"处方日期"
private Text txtBRXM; //"病人姓名"
private Text txtCSRQ; //"出生日期"
private Text txtBLH; //"病历号"
private Text txtYF; //"药费"
private Text txtQZZF1; //"其中自费"
private Text txtYLFWF; //"医疗服务费"
private Text txtQZZF2; //"其中自费"
private Text txtJBDM; //"疾病代码"
private Text txtBM; //"病名"
private Text txtZD; //"诊断"
private Combo cmbYPDM; //"药品代码"
private Text txtDJ; //"单价"
private Text txtJJDW; //"计价单位"
private Text txtSL; //"数量"
private Text txtJE; //"金额"
private Text txtZFBL; //"自费比例"
private Text txtZFJE; //"自费金额"
private Text txtGG; //"规格"
private Text txtCD; //"产地"
private Text txtCJ; //"厂家"
private Text txtJFHJ; //"缴费合计"
private Text txtFYHJ; //"费用合计"
private Text txtKS; //"科室"
private Label lblMsg; //提示信息
private Font font; //表格字体
private Font itemFont; //表格行字体
private Color colRed; //红色
//Create VerifyListener
/**
* 输入验证监听器,当用户在文本框中输入文本但控件还未
* 获得该文本时调用,该监听器只允许用户输入数字和退格键
* 住院号和药品代码文本框使用此监听器
* @see createTop()#txtZYH,createGroupDown()#cmbYPDM
*/
VerifyListener lsnVrfy = new VerifyListener(){
public void verifyText(VerifyEvent event){
//Assume don't allow it
event.doit = false;
//Get the Charater typed
char myChar = event.character;
//Allow '0-9'
if(Character.isDigit(myChar)) event.doit = true;
//Allow Baskspace
if(myChar == '\b') event.doit = true;
if(myChar == SWT.DEL) event.doit = true;
}
};
/**
* 疾病代码输入框验证监听器,当用户在文本框中输入文本但控件还未
* 获得该文本时调用,该监听器只允许用户输入数字,'.'和退格键
* @see createGroupUp()#txtJBDM
*/
VerifyListener lsnVrfyJBDM = new VerifyListener(){
public void verifyText(VerifyEvent event){
//Assume don't allow it
event.doit = false;
//Get the Charater typed
char myChar = event.character;
//Allow '0-9'
if(Character.isDigit(myChar)) event.doit = true;
//Allow Baskspace
if(myChar == '\b') event.doit = true;
if(myChar == SWT.DEL) event.doit = true;
//Allow '.'
if(myChar == '.') event.doit = true;
}
};
/**
* 数量输入框验证监听器,当用户在文本框中输入文本但控件还未
* 获得该文本时调用,该监听器只允许用户输入数字,'-'和退格键
* @see createGroupDown()#txtSL
*/
VerifyListener lsnVrfySL = new VerifyListener(){
public void verifyText(VerifyEvent event){
//Assume don't allow it
event.doit = false;
//Get the Charater typed
char myChar = event.character;
//Allow '0-9'
if(Character.isDigit(myChar)) event.doit = true;
//Allow Baskspace
if(myChar == '\b') event.doit = true;
if(myChar == SWT.DEL) event.doit = true;
//Allow '-'
if(myChar == '-') event.doit = true;
}
};
/**
* 收费项目输入用代码验证监听器,当用户在文本框中输入文本
* 但控件还未获得该文本时调用,
* 该监听器只允许用户输入字母和退格键
* @see createGroupDown()#cmbYPDM
*/
VerifyListener lsnVrfySFSR = new VerifyListener(){
public void verifyText(VerifyEvent event){
//Assume don't allow it
event.doit = false;
//Get the Charater typed
char myChar = event.character;
//Allow Characters 'A-Z'
if(Character.isLetter(myChar)) event.doit = true;
//Allow Baskspace
if(myChar == '\b') event.doit = true;
if(myChar == SWT.DEL) event.doit = true;
}
};
/**
* name:main
* author:pizi
* function:application entry point
* parameters in:String[] args
* parameters out:none
* note:
*/
public static void main(){
Display display = new Display();
FrmZYCF Item=new FrmZYCF();
Item.createshell();
Item.initWidgets();
while(!Item.shell.isDisposed()){
if(!display.readAndDispatch())
display.sleep();
}
Item.colRed.dispose();
Item.font.dispose();
Item.db.closeDB();
display.dispose();
}
/**
*name:createshell
*author:pizi
*function:create application shell and composites to display
*parameters in:none
*parameters out:none
*note:use GridLayout
**/
public void createshell(){
shell = new Shell(display,SWT.BORDER | SWT.CLOSE | SWT.MIN);
shell.setSize(764,600);
shell.setText("住院部处方");
//Create font
font = new Font(display, "Helvetica", 8, SWT.B