HowTo: TFaccess 로그온 폼을 사용자 정의하는 방법
게시일: Apr 04, 2010 11:8:22 AM
개요
TFaccess 로그온 폼을 사용자 정의할 수 있는 방법을 설명하는 문서입니다.
이 문서의 내용은 다음을 정의하고 있습니다.
TFaccess가 시작될 때, 로그온 폼이 표시되기 직전의 동작을 사용자 정의할 수 있습니다.
TFaccess 로그온 폼이 표시된 후, 사용자가 '로그온' 버튼을 클릭하였을 때의 동작을 사용자 정의할 수 있습니다.
TFaccess 로그온 인증 과정이 완료된 후의 동작을 사용자 정의할 수 있습니다.
TFaccess 로그온 폼에서 임의의 명령 버튼, 텍스트 상자, 콤보 상자를 제어할 수 있습니다.
TFaccess 로그온 폼 개요
사용자 정의가 가능한 컨트롤
TFaccess 로그온 폼을 디자인 보기로 보면 다음 그림과 같이 표시됩니다.
이 중, 다음 항목은 사용자 정의가 가능한 항목입니다.
cmdButton1 ~ cmdButton3
txtText1 ~ txtText3
lblText1 ~ lblText3
cboCombo1 ~ cboCombo3
lblCombo1 ~ lblCombo3
사용자 정의가 가능한 컨트롤 매핑
이 로그온 폼의 컨트롤을 가리키는 변수가 'xfStartUp' 폼에 저장되어 있습니다. 이 변수는 컨트롤 이름에 'm'을 붙인 것으로 되어 있습니다.
이 변수를 이용해 'xfStartUp' 폼에서 쉽게 접근이 가능하며, 사용자 정의 이벤트로 정의할 수 있습니다.
cmdButton1 --> mcmdButton1
cmdButton2 --> mcmdButton2
cmdButton3 --> mcmdButton3
txtText1 --> mtxtText1
txtText2 --> mtxtText2
txtText3 --> mtxtText3
lblText1 --> mlblText1
lblText2 --> mlblText2
lblText3 --> mlblText3
cboCombo1 --> mcboCombo1
cboCombo2 --> mcboCombo2
cboCombo3 --> mcboCombo3
lblCombo1 --> mlblCombo1
lblCombo2 --> mlblCombo2
lblCombo3 --> mlblCombo3
참고: TFaccess는 바이너리 형태로 배포되기 때문에 수정이 불가능합니다.
따라서 응용프로그램의 'xfStartUp' 폼의 모듈에서 모든 조작이 가능해야 합니다.
이를 위해 로그온 폼의 컨트롤들을 'xfStartUp' 폼에서 제어할 수 있도록 변수를 할당하여 제어합니다.
컨트롤 별 사용자 정의가 가능한 이벤트
각 컨트롤 별 사용자 정의가 가능한 이벤트는 다음과 같습니다.
명령 버튼 (Command Button)
Click
Enter
Exit
텍스트 상자 (TextBox)
BeforeUpdate
AfterUpdate
Click
DblClick
Enter
Exit
콤보 상자 (ComboBox)
BeforeUpdate
AfterUpdate
Click
DblClick
Enter
Exit
NotInList
사용자 정의가 가능한 시점
사용자 정의가 가능한 시점은 다음과 같습니다.
로그온 화면이 표시 되기 직전: xfStartUp 폼의 RunCodeBeforeLogon 프로시저에 정의
로그온 화면이 표시된 후, 사용자가 '로그온' 버튼을 클릭하였을 때: xfStartUp 폼의 RunCodeClickLogonButton 프로시저에 정의
사용자가 '로그온' 버튼을 클릭한 이후, 로그온 프로세스가 정상적으로 실행된 이후: xfStartUp 폼의 RunCodeAfterLogon 프로시저에 정의
시나리오
로그온 이후, 로그온한 사용자 부서 정보를 TFaccess 전역 변수에 넣는 방법
개요
사용자가 로그온 한 이후, 사용자의 부서 정보를 TFaccess 전역 변수에 삽입합니다. 이 방법을 사용하지 않으면, 로그온한 사용자의 부서 정보를 알기 위해 매 번 데이터베이스에 쿼리해야 합니다. 이 방법을 사용하면, 데이터베이스에 쿼리할 필요 없이, xfnGetConf 함수를 이용하여 사용자 PC에 저장된 TFaccess 전역 변수에서 값을 불러올 수 있습니다.
따라하기
'xfStartUp' 모듈을 Visual Basic 편집기에서 엽니다.
'RunCodeAfterLogon' 프로시저로 이동합니다.
'사용자 정의 코드 시작' 주석과 '사용자 정의 코드 종료' 주석 사이에 다음 코드를 삽입합니다.
코드
Dim rst As ADODB.Recordset
Dim strDeptID As String
'데이터베이스에서 부서 정보 불러오기
Set rst = xfnGetRst("SELECT DeptID FROM tUsers WHERE UserID = " & xfnDbInsVal(xfnGetConf("UserID"), xenlQuotationMarkYes, True))
'오류 처리: xfnGetRst 함수는 오류 발생시 Nothing을 반환하고, 그 때의 오류 메시지를 xstrErrDesc에 저장한다.
If rst Is Nothing Then
xsbErrMsg xstrErrDesc
RunCodeAfterLogon = False
Exit Function
End If
'TFaccess 전역 변수에 값 할당
strDeptID = Nz(rst("DeptID").Value, "")
xfnSetConf "DeptID", strDeptID
주의: 이 예제에 사용한 SQL 구문 및 DeptID 라는 열 이름은, 여러분이 사용자 테이블을 어떻게 정의했느냐에 따라 달라질 수 있습니다.
확인하기
이렇게 설정한 다음, 정상적인 로그온을 하고 난 다음, 다음 절차를 따르면 확인할 수 있습니다.
직접 실행 창을 엽니다. (Ctrl-G 키로 열 수 있습니다.)
다음과 같은 명령을 입력한 후 'Enter' 키를 누릅니다.
?xfnGetConf("DeptID")
직접 실행 창에 다음과 유사한 결과가 표시됩니다.
Sales
부제목(H3)로그온 폼에 '새 사용자 추가' 버튼을 삽입하는 방법
개요
로그온 폼에 '새 사용자 추가' 버튼을 삽입하면, 익명 사용자가 로그온하여 활용 가능한 시스템을 만들 수 있습니다.
사용자 계정이 없는 사용자의 경우, '새 사용자 추가' 버튼을 클릭하여, 자신의 계정을 만든 후 시스템을 사용할 수 있습니다.
따라하기
'xfStartUp' 폼의 'sbSetCustomControls' 프로시저에 다음과 같은 코드를 삽입합니다.
코드
With mcmdButton1
.Left = CON_LEFT '컨트롤 X 좌표 설정
.Top = CON_BOTTOM - .Height '컨트롤 Y 좌표 설정
.Width = CON_DEFAULT_WIDTH * 2 '컨트롤 너비 설정 (단위: 트윕)
.Caption = "새 사용자 추가" '버튼 캡션
.TabIndex = 3 '탭 정지 속성 설정
.Visible = True '로그온 폼에 표시
End With
'xfStartUp' 폼의 'mcmdButton1_Click' 프로시저에 다음과 같은 코드를 삽입합니다.
코드
DoCmd.OpenForm "새_사용자_추가_폼"
'주의: "새_사용자_추가_폼"에는 여러분이 만든 새 사용자를 추가할 수 있는 폼 이름을 입력해야 합니다.
'참고: 이곳에 버튼을 클릭했을 때의 추가적인 코드를 삽입하면 됩니다.
확인하기
'xfStartUp' 폼을 저장하고, 응용프로그램을 다시 시작하면 다음 그림과 유사한 형태의 로그온 폼을 볼 수 있습니다.
로그온 폼에 '접속할 서버' 콤보상자를 삽입하는 방법
이 예제는, 바로 앞의 '로그온 폼에 '새 사용자 추가' 버튼을 삽입하는 방법'과 거의 동일합니다. 다만, 명령 버튼이 아닌, 콤보상자를 사용자 정의하는 것이니 콤보상자를 정의하는 추가적인 속성 설정이 필요합니다.
다음 코드를 'xfStartUp' 폼의 'sbSetCustomControls' 프로시저에 삽입하면 됩니다.
코드
With mlblCombo1
.Left = CON_LEFT
.Top = CON_BOTTOM - .Height
.Width = CON_DEFAULT_WIDTH
.Caption = "서버 선택"
End With
With mcboCombo1
.Left = mlblCombo1.Left + mlblCombo1.Width
.Top = CON_BOTTOM - .Height
.Width = Int(CON_DEFAULT_WIDTH * 1.5)
'Combo Box Setting / 콤보상자 설정
'주의: 'ServerList' 라는 콤보ID가 이미 정의되어 있어야 함.
If Not xfnSetCombo(mcboCombo1, "ServerList") Then
xsbErrMsg xstrErrDesc
End If
.Value = .ItemData(1) '첫번째 항목 기본적으로 선택
.TabIndex = 3
.Visible = True
End With
이 절차를 마치면, 다음 그림과 유사한 형태의 로그온 폼을 볼 수 있습니다.