?? frmzycf.java
字號:
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.BOLD);
itemFont = new Font(display, "Arial", 10, SWT.NORMAL);
//Create Color
colRed = new Color(display,255,0,0);
//Define the Top's Layout,GridLayout with 6 columns
grdLtTop = new GridLayout(6,false);
grdLtTop.horizontalSpacing = 25;
grdLtTop.marginWidth = 16;
grdLtTop.marginHeight = 10;
shell.setLayout(grdLtTop);
//Create widgets
createTop();
createGroupUp();
createTable();
createGroupDown();
createBottom();
shell.open();
//Connection Database
db = new FrmZYCFDb();
if(db.getConnection()){
//If Database Connection failed,
//dispose shell and exit
shwErrMsgBox_Connect();
shell.getDisplay().dispose();
shell.dispose();
FrmMenu.main();
return;
}
}
/**
* name:createTop
* author:pizi
* function:create top widgets
*/
private void createTop(){
//住院號
Label lblZYH = new Label(shell,SWT.NONE);
lblZYH.setText("住院號");
//設置Label寬62
grdData = new GridData();
grdData.widthHint = 62;
lblZYH.setLayoutData(grdData);
grdData = new GridData();
txtZYH = new Text(shell,SWT.BORDER);
//設置Text寬112
grdData.widthHint=112;
txtZYH.setLayoutData(grdData);
txtZYH.setTextLimit(12);
txtZYH.setToolTipText("請輸入住院號\n住院號由12位數字組成");
//住院號文本框獲取焦點監聽器,當文本框獲得焦點時調用
txtZYH.addListener(SWT.FocusIn,new Listener(){
public void handleEvent(Event event){
if(txtZYH.getEditable()){
//添加輸入驗證監聽器,只允許輸入數字
txtZYH.addVerifyListener(lsnVrfy);
lblMsg.setText("請輸入住院號\n住院號由12位數字組成");
}
}
});
// Add a handler to detect key presses for txtZYH
txtZYH.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent event) {
// End the editing and enable controls if the user presses Enter
// End the editing and throw away the text if the user presses Escape
switch (event.keyCode) {
case SWT.KEYPAD_CR:
case SWT.CR:
//移除住院號文本框的輸入驗證監聽器
txtZYH.removeVerifyListener(lsnVrfy);
strZYH = txtZYH.getText().trim();
strSQL = "SELECT BLH FROM RCYJL WHERE ZYH='"+strZYH+"'";
//User entered right ZYH
if( db.executeQuery(strSQL) ){
//顯示 病歷號
try{
//住院號正確輸入
if(db.rs.next()){
strBLH = db.rs.getString("BLH");
}
//住院號不存在
else{
lblMsg.setText("該住院號不存在!\n請重新輸入");
txtZYH.selectAll();
txtZYH.addVerifyListener(lsnVrfy);
return;
}
}catch(SQLException se){}
//Disable txtZYH
txtZYH.setEditable(false);
txtBLH.setText(strBLH);
strSQL = "SELECT * FROM BRXX WHERE BLH='"+strBLH+"'";
if( db.executeQuery(strSQL) ){
try{
while(db.rs.next()){
//顯示 病人姓名
txtBRXM.setText( db.rs.getString("BRXM") );
//顯示 出生年月
txtCSRQ.setText( db.rs.getString("CSNY") );
}
}catch(SQLException se){}
}
else shwErrMsgBox_Query();
//顯示 繳費合計
strSQL = "SELECT JE FROM [JFJL] WHERE JZRQ IS NULL AND ZYH='"+strZYH+"'";
float fJFHJ = 0;
if( db.executeQuery(strSQL)){
try{
while(db.rs.next()){
fJFHJ += db.rs.getFloat("JE");
}
txtJFHJ.setText( String.valueOf(fJFHJ) );
}catch(SQLException se){}
}
else shwErrMsgBox_Query();
//顯示 費用合計
strSQL = "SELECT DJ,SL,ZFBL FROM View_WJZFY WHERE ZYH='"+strZYH+"'";
float fFYHJ = 0;
if( db.executeQuery(strSQL) ){
try{
while(db.rs.next()){
fFYHJ += db.rs.getFloat("DJ")*
db.rs.getInt("SL")*db.rs.getInt("ZFBL")/100;
}
}catch(SQLException se){}
txtFYHJ.setText( String.valueOf(fFYHJ) );
}
else shwErrMsgBox_Query();
//Enable controls to proceed
//重輸按鍵設置為可用
btnReInput.setEnabled(true);
btnYP.setEnabled(true);
btnYLFW.setEnabled(true);
txtJBDM.setEditable(true);
btnCancel.setEnabled(true);
cmbYPDM.setEnabled(true);
//Set focus to cmbYPDM
cmbYPDM.setFocus();
}
else shwErrMsgBox_Query();
//Set txtKS with RCYJL.ZYKS
strSQL = "SELECT ZYKS FROM [RCYJL] WHERE ZYH='"+strZYH+"'";
if(db.executeQuery(strSQL)){
try{
if(db.rs.next()){
txtKS.setText(db.rs.getString("ZYKS"));
}
}catch(SQLException se){}
}
else shwErrMsgBox_Query();
break;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -