블로그 이미지
SITD

카테고리

분류 전체보기 (34)
1.DB (4)
2.OS (3)
3.PROGRAMMING (14)
4.학업 (0)
5.영어 (0)
6.KSIT (5)
7.증권 (1)
8.EXCEL (0)
9.Graduate (2)
기타 (5)
Total
Today
Yesterday

달력

« » 2024.4
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

공지사항

태그목록

최근에 올라온 글

# 파워스크립란?
파워빌더는 이벤트 구동 방식의 프로그램이다. 즉 어떤 이벤트가 발생하면 거기에 알맞은 반응을 한다는 것이다. 이 응답을 처리하는 것이 파워스크립트언어이다.

# 스크립트 작성방법
해당 컨트롤에서 우클릭후 Script를 선택 또는 스크립트 버튼을 클릭한다. 그러면 스크립트 페인트가 열린다. 
 
* 이벤트표시창에는 이 컨트롤이 가질수 있는 이벤트들이 표시되고 이벤트 옆에 그림이 표시된것은 이 이벤트에 스      크립트가 존재한다는 의미이다. 그리고 파워스크립트에서 주석 처리는 일반적인 언어와 마찬가지로
   한 라인을 선택할 때는 문장앞에 //을 써주면 되고 
   문단으로 처리할 때는 /* 내용 */ 이런식으로 해준다.
   파워빌더는 라인이나 문단을 블록으로 설정하고 주석버튼을 누르면 그 부분을 주석으로 달아주는 편리한 기능을      제공한다. 스크립트를 다 작성 했으면 나가기 버튼으로 컨트롤 편집 화면으로 돌아갈 수 있다. 
   만약 이때 에러가 있다면 스크립트 종료가 불가능하다. 그러므로 항상 스크립트 작성 후엔 컴파일 버튼을 눌러 에      러가 없는지 확인하도록 한다. 

* 컴파일 시 나타나는 에러에 대한 설명
Errors : 컴파일 할 수 없는 치명적 에러
Compiler Warnings: 현재 이벤트의 스크립트에서 벗어나기 전에 수정 필요.
                             선언되지 않은 변수 사용등 문법 에러시 발생
Obsolete : 컴파일은 가능하지만 신형 버전으로 대체 필요
Database Warnings: 데이터베이스 관리자로부터 오는 에러 (삽입 SQL을 사용하면, 컴파일할 때 데이터베이스 관리                              자에 연결된다.) 파워빌더는 Databse Warinings를 갖는 경우에도 컴파일하고 객체를 저장할                                수 있는데, 이것은 컴파일 할 때의 환경과 실행환경이 다를 수 있기 때문이다.


# 변수 선언
사용자로부터 입력된 자료나 프로그램 중 계산된 값, 데이터베이스에서 조회된 값등을 저장하는 기억 장소를 변수(Variable)라고 한다. 파워 스크립트에서 모든 변수는 사용전에 선언되어야만 한다. 변수의 종류는 다음의 종류가 있다.

1) 전역변수(Global Variable)
전역변수는 한 어플리케이션 전체에 걸쳐 적용되는 변수이다. 모든 스크립트에서 접근할 수가 있다. 즉 어플리케이션이 실행될때 메모리가 할당되고 종료될 때 제거된다. 
선언방법은 Declare>Global Variables..를 실행하고 선언

2) 공유변수(Shared Variable)
공유변수는 오브젝트와 연관된 변수이다. 모든 이벤트, 함수 , 컨트롤들이 접근할 수 가 있다. 또한 선언된 윈도우가 닫히더라도 메모리에서 제거되는 것이 아니라 어플리케이션이 종료될 때 까지 남아있으며 다시 그 윈도우가 열리면 바로 접근가능하다.
선언방법은 Declare>Shared Variables..

3) 인스턴스 변수(Instance Variable)
공유변수와 비슷하나 선언된 윈도우가 닫히면 메모리에서 제거된다는 특징이 있다. 
선언방법은 Declare>Instance Variables.. 

4) 지역변수 (Local Variable)
컨트롤이나 오브젝트의 스크립트에서 직접 정의되는 변수이다. 이것은 특정 이벤트나 함수내에서만 사용 될 수 있다. 

& 변수선언의 규칙
1) 반드시 문자로 시작해야한다.
2) 최대 40문자를 허용하나 공백은 없어야한다.
3) 대문자, 소문자를 구별하지 않는다.
4) 숫자, 문자와 특수문자($, #, %, _, -)의 조합이 가능하다.

& 변수의 초기화 
변수를 선언한 후에는 초기값을 할당해야 한다. 값이 할당되지 않으며 파워빌더에서 기본값이 할당되나 특정 초기치를 줄려면 다음과 같이 초기화를 한다. 

int a = 1
string text = "name"

* 주의점 - 변수를 선언함에 있어 동일한 이름의 변수는 사용을 자제한다. 전역변수로 선언한 변수가 동일한 이                  름으로 지역변수로으로 선언되어 있다면 파워빌더는 그 변수를 지역 변수로 간주한다. 
* 파워빌더의 변수 우선순위
   지역변수 > 인스턴스변수 > 전역변수> 공유변수 


& 데이터 타입 
파워빌더의 표준데이터 타입은 다음과 같다. 

데이터타입

설명

Boolean

True or False

Integer

부호있는 16bit 범위: -32768 ~ 32767

UnsignedInteger, Uint

부호없는 16bit 범위: 0 ~ 65535

Long

부호있는 32bit 범위: -2147483648 ~ 2147483647

UnsignedLong, Ulong

부호없는 32bit 범위: 0 ~ 4294967295

Decimal, Dec

부호가 있는 10진수로써 자리수는 18자리

Real

부호있는 6자리 실수 범위: 1.17E-38 ~ 3.4E+38

Double

부호있는 실수 자리수는 15자리

Date

년도 표시 예) 1990-01-01

Time

24시간 시간표시 예) 23:50:55:999999

DateTime

Date Time을 합친 형태

Blob

범위가 정해져 있지 않은 큰 자료형의 저장
) 그림, 방대한 문서

Enumerated

오브젝트의 특징을 지정하기 위한 변수(!로 끝남)

Char, Character

한개의 ASCII 문자를 갖는 변수

String

0 에서 60000자리의 ASCII

DragObject

Drag 가능한 모든 Object를 의미하는 값



# 파워스크립트 문장 
* Assign 문 
변수에 값을 할당하기 위해 "="을 사용한다.
연속적인 변수할당은 할 수 없다.
text = "Welcome"
rate = .5
a = b =0 //에러

* IF 문 
조건이 참인 경우 THEN 이후 문장을 수행하고 그렇지 않으면 ELSE 이후 문을 실행한다.

  IF count > 99 THEN //count 가 99 보다 크면 
     count = 0          //count 는 0
  ELSE                 //그렇지 않다면 
     count = 1          //count 는 1
  END IF             //IF 문 마침 


* CHOOSE CASE 문 
CASE에 나오는 조건대로 분기할 수 있는 형태를 제공 

CHOOSE CASE ave
CASE IS < 5                      //ave가 5보다 작으면
     ave = ave * 0.5
CASE 10 TO 20                   //ave가 10에서 20 사이면
     ave = ave / 10
CASE ELSE                      // 그외의 경우
     ave = ave * ave
END CHOOSE

위외 같이 choose 문은 유연하게 사용된다. 여기서 IS 는 조건절 ave 를 가리키는 것으로 ave < 5 같은 식으로 쓰면 에러가 발생한다. 

* DO ... LOOP 문 
DO...LOOP 문은 조건을 만족할 때까지 계속 반복문을 실행한다. 수행중 CONTINUE 를 만나면 반복의 시작으로 가며 EXIT 문을 만나면 반복문을 빠져나온다. 

Int A = 1                              Int A = 1
DO UNTIL A > 15                 DO
    BEEP(A)                             BEEP(A)
    A++                                    A++ 
LOOP                                LOOP UNTIL A > 15
 
Int A =1                               Int A = 1
DO WHILE A < 15                 DO
    BEEP(A)                             BEEP(A)
    A++                                     A++ 
LOOP                                 LOOP WHILE A < 15 

 4 개다 비슷한 표현식들인데
UNTIL 문은 조건이 만족되면 루프가 끝나고 
WHILE 문은 조건이 거짓이 되면 루프가 끝난다는 차이가 있다.
그리고 DO .. LOOP 형식은 조건을 검사하기 않고 일단 한번은 실행시킨다는 차이가 있다. 
>>BEEP(n) - n 초 만큼 비프음을 낸다. 최대치는 10 이다. 

* FOR ... NEXT 문 
정해진 조건 동안 반복문을 수행한다. 

FOR n = 5 TO 25
    A = A +10
NEXT 


* GOTO 문 
스크립트에서 제어를 정해진 곳으로 옮길 때 사용 

IF A = 5 THEN
    GOTO HERE  
ELSE 
    A = 0 
END IF 

HERE:

A가 5라면 HERE 레이블이 있는 곳으로 이동해 A 는 5의 값을 그대로 가지고 그렇지 않다면 A는 0 의 값을 가지게 된다. LABEL은 끝에 : 을 붙혀준다.

* HALT 문 
Application 을 즉시 종료시키는 문장 

IF A <> 1 THEN HALT
IF A = 1 THEN HALT CLOSE

A 가 1 이 아니라면 즉시 어플리케이션을 종료 한다. 만약 A 가 1 이라면 종료는 하되 CLOSE 이벤트에 스크립트가 있다면 그것을 실행하고 종료한다.

* CALL 문 
 조상 스크립트를 호출할때 사용된다.

CALL w_emp::Open                     // w_emp윈도우의 open 될때의 스크립트를 호출
CALL w_emp.cb_close::Clicked    // w_emp의 컨트롤(cb_close)의 클릭 이벤트를 호출 

















'3.PROGRAMMING > Power Builder' 카테고리의 다른 글

[PB]매뉴얼 (04) 윈도우  (0) 2011.07.19
[PB]매뉴얼 (05) 컨트롤  (0) 2011.07.19
[PB]매뉴얼 (07) 함수  (0) 2011.07.19
[PB]매뉴얼 (08) 메뉴  (0) 2011.07.19
[PB]매뉴얼 (09) DataWindow 객체  (0) 2011.07.19
Posted by SITD
, |
# 파워빌더 함수 
* 파워빌더에서 함수는 다음과 같이 구분된다.

1) 내장함수 
 - 오브젝트 관련 함수 
 - 오브젝트 비관련 함수 
2) 사용자 정의 함수 
 - Global 함수 
 - Object-Level 함수 
 - 외부(External) 함수 

# 내장 함수 
파워빌더는 숫자형, 문자열처리, 데이타변화 등을 지원하는 500여개의 내장 함수를 지원한다.
이들 내장함수는 각 컨트롤등에 관련된 오브젝트 관련함수와 이와는 상관없이 사용할 수 있는 비 오브젝트 관련 함수가 있다.

* 오브젝트 관련함수 
- 오브젝트에서 발생한 이벤트처리
- 오브젝트의 속성변환
- 오브젝트 관련정보 얻음 
 예) Open(w_main) // w_main 윈도우를 연다. 
 dw_1.RowCount() // dw_1의 현재 Row 갯수를 얻어 온다.

* 비 오브젝트 관련함수 
데이터형 변환, 산술함수, 문자열처리, 시간처리, 파일처리, 프린팅, DDE관련함수
 예) Date(), Sqrt(), Left(), Day(), FileOpen(), Print(), OpenChannel()

# 함수 호출 방식 
* 함수를 호출시에는 함수명, 인수의 테이터타입, 인수의 갯수가 일치해야 한다.
  (사용할 함수의 인자 타입과 갯수는 파워빌더의 도움말을 통해 알아보는 것이 좋다.)
   형식) 함수명( {인자1, 인자2, .....} )
* 대부분의 내장함수는 처리의 결과를 돌려주기 위한 리턴값이 존재한다. 개발자는 이 리턴값을 지정하여 사용할 수 있다. 
 예) Integer iCount , iCount_2
  String sValue = "100" 
  iCount = integer(sValue) // integer() 함수는 문자열 100 을 정수로 변환하여 돌려준다.
  iCount2 = dw_1.GetRow() // dw_1의 현재 행번호를 돌려준다.

# 사용자 정의 함수
파워빌더는 사용자가 원하는 함수를 정의해서 사용할 수 있다. 정의된 함수는 내장함수와 똑같은 방식으로 사용된다. 함수 이름을 정의하는 데 있어서 규칙은 다음과 같다. 최대 40자 까지 허용된다.
- 반드시 영문자로 시작해야 한다.
- 영문자, 숫자, 특수문자(-, $, #, %, _ )를 사용할 수 있다. 
- 대소문자 구분을 하지 않는다.
- 한글이나 한자나 사용할 수 없다. 

# 사용자 정의 함수 만들기
Declare>Window Funtions... 를 선택해서 New를 선택
 
* Name에는 함수의 이름을 적어준다.
* Access 는 pulbic일때는 어플리케이션 전체에서 사용이 가능하고, 
  private 는 선언된 오브젝트에서만 사용가능하지만 상속이 되지 않고 
  protected는 private와 같고 상속된 자손에서도 사용가능하다. 
* Return 란은 최종적으로 함수내에서 돌려줄 값의 타입을 정해준다. 아무것도 돌릴 값이    없다면 None 이다.
* arguments 란에서 아규먼트가 존재한다면 이름과 타입과 넘기는 방식을 정해준다. 
  옆의 버튼으로 추가, 삭제, 삽입이 가능하다.


Posted by SITD
, |
* 자식 윈도우와 응답윈도우를 제외한 모든 윈도우는 메뉴를 갖는다. 메뉴란 사용자가 현재 활동 윈도에서 선택할 수    있는 명령 또는 옵션들의 목록이다. 파워빌더에서는 메뉴 내의 각 선택을 메뉴 객체로 정의된다. 

# 메뉴 만들기
파워패널에서 메뉴버튼을 클릭하여 New를 선택한 후 메뉴 페인터를 연다. 
 
* Menu Bar Items 칸에 주메뉴를 적고 밑에다 하위 메뉴를 입력한다. &키 와 조합하면 단축키를 만들 수 있다. 그리    고 ' -' 은 메뉴에서 구분선으로 나타난다. 주 메뉴의 추가는 상단의 스크롤바를 움직여서 조정한다. 
* Genaral 탭 
- Menu Item Name : 메뉴의 이름을 적는다. 
- Lock Name : 메뉴항목이 나중에 변경되더라도 메뉴의 이름은 변경되지 않도록 하여 스크립트가 작성되어 있는 경                      우에도 재 입력이 필요없도록 해준다.
- MDI Microhelp : 프로그램 좌하단의 헬프 자리에 표시될 내용 

* Style 탭 
  - Checked : 메뉴옆에 체크표시가 나타날 것인지의 여부
  - Enabled : 메뉴 오브젝트가 선택될수 있을 것인지의 여부
  - Shift Over/Down : 이 메뉴로부터 상속된 메뉴를 추가할 때 우측 또는 아래로 메뉴가 이동할 수 있을지의 여부

* Shortcut 탭 
   메뉴 오브젝의 핫키를 설정하는 곳이다. 

* Toolbar 탭 
   - Text: 커서를 대었을 때의 풍선도움말의 내용이다.
   - Space Before : 아이콘들의 간격설정이다. 1이상면 분리선이 생긴다.
   - Order : 왼쪽부터 아이콘들의 순서를 정한다.
   - Display Down: 툴바버튼이 눌린상태로 나타날 것인지 여부
   - Bar Index : 툴바의 번호이다. 다른 버튼에 2번을 준다면 새로운 툴바가 생성된다.

* Picture 탭 
   - 툴바의 버튼으로 사용할 아이콘을 정하는 탭이다. 

* 메뉴가 완성되면 각 항목들에 대해 스크립트 버튼을 눌러 해당 스크립트를 기술해 주면 된다.
* 메뉴를 윈도우에 붙히는 방법은 해당 윈도우의 속성창에서 Menu Name란에 해당 메뉴를 연결시켜준다. 

Posted by SITD
, |

최근에 달린 댓글

글 보관함