Active-x 에서 PowerBuilder event 및 Function 호출Active-x 에서 PowerBuilder event 및 Function 호출

Posted at 2013. 9. 2. 14:17 | Posted in PowerBuilder
반응형

Active-X Page(HTML)에서 PowerBuilder User Function 및 PowerBuilder Event 을 호출하는 방법과, PowerBuilder Event 발생시 Java script 로 처리하는 방법에 대하여 알아보겠습니다. 

웹 브라우져에서는 Window Event 만을 Java script로 처리할 수 있기 때문에, 다른 Window Control 에서 강제로 Window의 Event 를 발생시켜야 합니다. 

이후 첨부파일 참고 하시기 바랍니다..


Active-x_PowerBuilder_event_and_Function_call.mht




반응형

'PowerBuilder' 카테고리의 다른 글

ADO.NET설치 가이드  (0) 2013.09.02
PowerDesigner for PowerBuilder  (0) 2013.09.02
PoseEvent() 와 TriggerEvent() 의 차이점  (0) 2013.09.02
파워빌더 한영변환  (0) 2013.09.02
파워빌더 함수  (0) 2013.09.02

//

PoseEvent() 와 TriggerEvent() 의 차이점PoseEvent() 와 TriggerEvent() 의 차이점

Posted at 2013. 9. 2. 14:16 | Posted in PowerBuilder
반응형

1.TriggerEvent() 
- 정의된 곳으로 넘어가 해당 오브젝트를 수행하고 , 다시 현재 이벤트 상태로 넘어와 이벤트를 수행.. 

2.PostEvent() 
- 함수 중간에 있어도 현재의 이벤트를 수행하고, 제일 마지막에 정의된 오브젝트의 이벤트를 발생시킴

반응형

'PowerBuilder' 카테고리의 다른 글

PowerDesigner for PowerBuilder  (0) 2013.09.02
Active-x 에서 PowerBuilder event 및 Function 호출  (0) 2013.09.02
파워빌더 한영변환  (0) 2013.09.02
파워빌더 함수  (0) 2013.09.02
제브라 바코드 명령어  (0) 2013.08.29

//

파워빌더 한영변환파워빌더 한영변환

Posted at 2013. 9. 2. 14:15 | Posted in PowerBuilder
반응형

사용자들이 데이터윈도우에 자료를 입력할때 특정항목(한글로입력해야하는경우)에서 
한영키를 눌러줘야하는 번거로움을 피할수 있도록 자동으로 한영키를 변환해주는 팁입니다. 

//Global xternal Functions 함수정의 
FUNCTION LONG ImmGetContext( long handle ) LIBRARY "IMM32.DLL" 
FUNCTION LONG ImmSetConversionStatus( long hIMC, long fFlag, long l ) LIBRARY "IMM32.DLL" 
Function Boolean ImmGetConversionStatus(ulong hImc, ref ulong lpfdwConversion, ref ulong lpfdwSentence) Library "imm32.dll" 
FUNCTION LONG ImmReleaseContext( long handle, long hIMC ) LIBRARY "IMM32.DLL" 

//데이터윈도우의 itemfocuschanged 이벤트 스크립트 
ulong aa, cc 
aa = handle(this) 
cc = ImmGetContext(aa) 

CHOOSE CASE dwo.NAME 
CASE '필드1','필드2' //한글키로 변환해야하는 필드명... 
ImmSetConversionStatus(cc, 1, 0) //한글자판변환 
CASE ELSE 
ImmSetConversionStatus(cc, 0, 0) //영문자판변환 
end choose

반응형

'PowerBuilder' 카테고리의 다른 글

Active-x 에서 PowerBuilder event 및 Function 호출  (0) 2013.09.02
PoseEvent() 와 TriggerEvent() 의 차이점  (0) 2013.09.02
파워빌더 함수  (0) 2013.09.02
제브라 바코드 명령어  (0) 2013.08.29
화면전환 Tip입니다.  (0) 2010.10.11

//

파워빌더 함수파워빌더 함수

Posted at 2013. 9. 2. 14:14 | Posted in PowerBuilder
반응형

AcceptText : DataWinodwName.Accept.Text() 

 리턴값은 integer이고, 데이터윈도우에서 데이터를 변경하고 바로 다른 컨트롤로 focus가 넘어갈 경우 데이터윈도우 컨트롤은 변경된 데이터를 바로 받아들이지않으므로 받아들이기 위해서 사용한다. 정상적일 경우 1, 에러가 발생할 경우는 -1이 리턴된다.

예) inter rtn

     rtn = dw_1.AcceptText() 변경된 데이터를 바로 받아들인다.

 

AddItem : List 박스 Name.AddItem(item)

리턴값은 integer이고 리스트박스의 마지막 자리에 아이템이 추가된다 sorted attribute가 True이면 정령되어 추가된다. 정상적일 경우는 추가된 자리의 인덱스 에러가 발생할 경우는 -1이 리턴된다

예) inter rtn

      rtn = lbx_actions.AddItem("멀티미디어") 리스트박스 아이템에 "멀티미디어" 가 추가된다.

 

Beep

리턴값은 integer이고 컴퓨터가 n번만큼 beep된다. 정상적일 경우는 1, 에러가 발생할 경우는 -1이 리턴된다.

예) integer rtn

     rtn = Beep(5)  computer가 5번 Beep 한다.


Close : WindowName)

리턴값은 integer 이고 지정한 윈도우를 종료한다. 정상적일 경우는 1, 에러가 발생할 경우는 -1이 리턴된다.

예) integer rtn

     rtn = Close(w_윈도우명)


DeleteCount : DataWindowName.DeleteCount()

리턴값은 long이고 데이터 윈도우에서 삭제된 행 건수를 리턴한다. 이미 데이터베이스에 적용이 된 경우는 0이 리턴된다.

예) long rtn

      rtn = dw_1.DeletedCount() 데이터 윈도우의 삭제된 행 건수가 리턴된다.


DeleteRow : DataWindowName.DeleteRow(row)

리턴값은 integer이고 지정된 행을 삭제한다. 이미 데이터베이스에 적용이 된 경우는 0이 리턴된다.

예) integer rtn

     rtn = dw_1.DeleteRow() 데이터윈도우의 현재 행을 삭제한다.

반응형

//

제브라 바코드 명령어제브라 바코드 명령어

Posted at 2013. 8. 29. 08:47 | Posted in PowerBuilder
반응형

"^XA";                                                               // 명령시작 
"^SEE:UHANGUL.DAT^FS";                                 // E드라이버의 인코더파일 로드  
"^CWJ,E:KFONT3.FNT^FS";                                // E드라이버의 kfont3 폰트를 J 문자로 지정
"^PR9^FS";
"^CI26";                                                            // 인코딩할 CI 수치입력   (최신버젼의 zebra 장비에서는 항상 26 값 입력)
"^FO100,200^AJN,200,200^FD가나다라^FS";    // 좌표 J 폰트의 크기 인쇄내용
"^FO100,150^AJN,200,200^FD^FS"; 
"^FO100,100^AJN,200,200^FDZ4MPLUS^FS";
"^PQ1";                                                             // 인쇄수량
"^XZ";                                                               // 명령끝


반응형

//

화면전환 Tip입니다.화면전환 Tip입니다.

Posted at 2010. 10. 11. 08:54 | Posted in PowerBuilder
반응형

- 창 전환

1. 파워빌더 실행 후 모든 창을 닫은 상태입니다.

 

2. Shift + F10(기본지정 단축키죠..외워두시면 좋죠)을 누르시면 라이브러리 페인트 창이 나타납니다.

 

3. Shift + F7(기본지정 단축키)를 누르시면 데이터베이스 페인트 창이 나타납니다.

 

4. 창이 2개 열린 상태에서 상단메뉴의 Tools => Keyboard shortcuts...를 선택합니다.

 그럼 다음과 창이 나타납니다. 거기에서 Window를 선택하여서 트리를 확장하면

 Window 1 ~ Window 9가 보이실겁니다. 선택하셔서 아래의 Press keys for shortcut를 선택하셔서

 원하시는 단축키를 지정하십니다. 저같은 경우 Alt + 1 ~ Alt + 9로 지정을 하였습니다...



 

 지정을 하시고 Alt + 1과 Alt + 2를 눌러보세요...(저와 같이 지정했다는 가정하에...+_+)

 Alt + 1를 누르면 라이브러리 페인트로 이동하실거고 Alt + 2를 누르시면 데이터베이스 페인터로 이동할겁니다.

  여기서 윈도우든 데이터 윈도우든 간에 창을 한개 여시면 그 창은 Alt + 3을 누르면 이동이 됩니다.

 ※ 오픈된 창을 확인하시고 싶으시면 상단메뉴의 Window를 가보시면 됩니다.(보면 알아요^^)

 

Layout / Script / Event / Function / Declare 간의 이동

 

1. 일단 윈도우 오픈 화면입니다. 제 화면 UI는 저렇게 생겼구요. 좌측 하단 부분을 보세요~

 저같은 경우 Layout따로 Script따로 사용하는데요...파워빌더 첨 사용할땐 마우스로 밑에 탭을 클릭하면서 이동했었죠.ㅋ

 완전 불편하더군요...그래서 또 단축키를..ㅎㅎ

 

2. 위의 창전환때와 같이 단축키 지정 화면으로 갑니다.(가는 방법은 위 참조)

 여신 후 Additional Global Shortcuts를 선택하시고

 Next view Tab과 Previous view Tab(원래 단축키는 Shift + F12 )에 주목을 하세요

 Next view Tab은 다음 탭으로 이동하는 것이고 Previous view Tab는 이전 탭으로 이동하는 것입니다.

 위의 제 화면 UI는 Layout이 선택되어져 있는데 여기서 Next View Tab의 단축키인 F12를 누르면 ue_print탭으로 이동합니다.

 다시 F12를 누르면 Event List 탭으로 이동하겠죠...(Previous view Tab도 한번해보세요~~)

 

 

 

Script창에서 Object 선택 / Event 선택 / 상속 윈도우 확인

 

1. 스크립트 작성하는 곳에 가면 상단에 3개의 드랍다운 리스트가 있습니다.

 아래 그림의 어설픈(+_+;) 박스를 보시면 왼쪽게 윈도우의 오브젝트 리스트, 중앙이 해당 오브젝트의 이벤트 리스트,

 오른쪽이 해당 윈도우의 상속 관계를 알수 있는 리스트입니다.

 

2. 3개의 리스트도 단축키를 이용하시면 편하죠..다시 한번 단축키 지정 창을 열어보시면

 (윈도우 오픈 상태에서 단축키 지정창으로 가세요~~ 오픈된 객체에 따라 내용이 조금씩 달라지거든요 )

 Additional Painter Shortchuts에 Control Drop-down과 Script Drop-down, Ancestor Drop-Down을 주목하세요~

 Ctrl + 1~3으로 지정되어 있습니다. 저는 그냥 지정단추키를 사용하고 있죠...변경하실분들은 하시고

 다시 스크립트 창으로 가셔서 Ctrl + 1~3을 눌러보면 리스트 박스가 나오는걸 확인하실수 있을거에요

 방향키나 각각 이름의 첫 스펠링을 키보드로 누르면 이동하는게 보이실거에요

 

기타

 

1. 데이터 윈도우 오브젝트에서 Data Source로 이동

 => 마우스로 

 이 단축키 눌러서 보통 이동하시는데 Alt+d+d누르면 상단메뉴의 Design인에 Data source가 선택이 됩니다

 

2. 창 닫기

 => Ctrl + w를 눌르면 창이 닫힙니다. 데이터 윈도우의 Data source에서도 먹히는 효자죠^^

 
반응형

//

DW 및 각 컨트롤의 속성 리스트가 필요할때DW 및 각 컨트롤의 속성 리스트가 필요할때

Posted at 2010. 10. 11. 08:48 | Posted in PowerBuilder
반응형

File>new 해서 나오는 팝업창에서


다음과 같은 Syntax를 볼 수 있습니다.


여기까지는 이제 아시는 분은 다 아시죠?

 

그럼.. 저기에 있는 목록을 가져오고 싶을 땐, 어떻게 해야 할까요?

출력해서 붙여놓고 쓰고 싶은 분도 계실 거니까요...

 

해답은 저 리스트중에 있습니다.

 

바로 Attributes 라는 것입니다.

 

데이터윈도우에 대한 걸 얻고 싶으면...

dw_1.Describe("DataWindow.Attributes") 하면,

 

위의 화면 목록들이 탭으로 구분되어서 리턴됩니다.  

 
반응형

//

GetHost를 이용한 IP가져오기(10.5버전 이상용)GetHost를 이용한 IP가져오기(10.5버전 이상용)

Posted at 2010. 10. 11. 08:46 | Posted in PowerBuilder
반응형

이전 글에 GetHost는 이전 버전용이라 사용할 수 없는 줄 알았는데, 사용이 가능하며

10.5버전에서도 GetHost()를 통해 새로 생긴 Byte타입으로  연산하면 도메인명을 통한 IP추출이 가능합니다.

 

External Funtion 선언

function int WSAStartup (uint UIVerionrequested, ref str_wsadata lpWSAdata) library "wsock32.DLL" alias for "WSAStartup;ansi"
function int WSACleanup() library "wsock32.DLL"
function int WSAGetLastError() library "wsock32.DLL"
function int gethostname(ref string name, int namelen) library "wsock32.DLL"  alias for "gethostname;Ansi"
function string GetHost(string lpszhost,ref blob lpszaddress) library "pbws32.dll" alias for "GetHost;Ansi"

 

구조체 선언

str_wsadata


스크립트

String ls_ip, ls_host, ls_tmp
Blob{10} lb_host
Integer li_version, li_rc
str_wsadata lstr_wsadata
Byte lbt_host[10]

ls_host = Space(128)
li_version = 257
If WSAStartup(li_version, lstr_wsadata) = 0 Then
   If GetHostName(ls_host, Len(ls_host)) < 0 Then
      li_rc = WSAGetLastError()
   Else
 GetHost(ls_host, lb_host) 
 lbt_host[1] = byte(blobmid(lb_host, 1, 1))
 lbt_host[2] = byte(blobmid(lb_host, 2, 1))
 lbt_host[3] = byte(blobmid(lb_host, 3, 1))
 lbt_host[4] = byte(blobmid(lb_host, 4, 1))
 ls_ip = String(lbt_host[1]) + '.' + String(lbt_host[2]) + '.' + String(lbt_host[3]) + '.' + String(lbt_host[4])
      li_rc = 0
   End If
   MessageBox("My IP", ls_ip)
Else
   li_rc = WSAGetLastError()
End If

WSACleanup()

 
반응형

//

데이타윈도우가 아닌 화면윈도우를 인쇄하는 방법데이타윈도우가 아닌 화면윈도우를 인쇄하는 방법

Posted at 2010. 10. 11. 08:43 | Posted in PowerBuilder
반응형

메뉴에서 "화면인쇄" 목록만들고

Click Event에 아래와 같이 넣으시면됩니다...

활성화된 윈도우만 A4  1/2 사이즈로 인쇄됩니다.

long Job
Job = PrintOpen( )
boolean bValid
window wSheet
wSheet = w_main.GetFirstSheet()
bValid = IsValid (wSheet)
if bValid then
wSheet.Print(Job, 1000,500, 6000,4500)
end if
PrintClose(Job)

 
반응형

//

타원형 윈도우 만들기타원형 윈도우 만들기

Posted at 2010. 10. 11. 08:42 | Posted in PowerBuilder
반응형

파워빌더에서도 API함수를 이용하면 원하는 모양의 윈도우를 만들수 있습니다. 저도한번 해봤는데, 꽤 신기하네요 ~

 

1.Gloval External Function에 다음과 같이 선언

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

  Function long CreateEllipticRgn( long lX1, long lY1, long lX2, long lY2 ) Library "gdi32.dll"
  Function long SetWindowRgn( long lHandle, long lRgn, boolean bIsRedraw ) Library "user32.dll"
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
2.윈도우 open script에 작성

*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
Long hRgn
hRgn = CreateEllipticRgn( 0, 0, This.Width/5, This.Height /4)
SetWindowRgn( Handle( This ), hRgn, True )
*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
※ CreateEllipticRgn() 함수는 타원형 함수입니다.


기존의 딱딱하기만 한 네모 모양의 윈도우 형태를 떠나서 이렇게 시도해보는것도 재미있을 것 같네요.

디자인만 잘 한다면 괜찮은 걸 만들수도 있을 것 같아요. 예를 들면 아래 그림처럼...(하얀바탕이 네모라면.. 저런식으로 타원생성)

반응형

//