DW 두개를 같이 움직이기DW 두개를 같이 움직이기

Posted at 2013. 9. 4. 08:38 | Posted in PowerBuilder
반응형

Dw  Scrollhorizontal  event


Long  ll_hsplit1,  ll_hsplit2

ll_hsplit1 = Long(This.Object.DataWindow.HorizontalScrollPosition)

ll_hsplit2 = Long(This.Object.DataWindow.HorizontalScrollPosition2)

dw_list.Object.DataWindow.HorizontalScrollPosition   = ll_hsplit1

dw_list.Object.DataWindow.HorizontalScrollPosition2 = ll_hsplit2


Dw  lbuttonup event


Long  ll_hsplit

ll_hsplit = Long(dw_master.Object.DataWindow.HorizontalScrollSplit)

dw_list.Object.DataWindow.HorizontalScrollSplit = ll_hsplit 

반응형

//

Folder의 파일 리스트 가져오기Folder의 파일 리스트 가져오기

Posted at 2013. 9. 4. 08:37 | Posted in PowerBuilder
반응형

/* integer gf_GetFileList( string as_path, listbox alb_box, ref string as_Files[])
 지정된 경로에서 하위 폴더를 포함한 파일의 리스트를 가져온다.
*/


int i, j, k, i_cnt


String ls_file , ls_Files[], ls_Sub, ls_SubFiles[], ls_tmp[]


as_Files = ls_tmp

If Right(as_path,1) <> '\' Then as_path += '\'

alb_box.Reset()

alb_box.DirList(as_path+"*.*", 16)

For i = 1 To alb_box.Totalitems( )

 ls_Files[UpperBound(ls_Files) + 1] = alb_box.text(i)

Next

For i = 1 To UpperBound(ls_Files)

ls_file = ls_Files[i]

If ls_file = '[..]' Then Continue

If Left(ls_file,1) = '[' and right(ls_file,1) = ']' Then

ls_file = Left(ls_file, Len(ls_file) - 1)

ls_file = Mid(ls_file, 2) + '\'

ls_Sub = as_path + ls_file

i_cnt = gf_GetFileList( ls_Sub, alb_box, ls_SubFiles )

For j = 1 To i_cnt

as_Files[UpperBound(as_Files) + 1] = ls_file + ls_SubFiles[j]

Next

 Else

  as_Files[UpperBound(as_Files) + 1] = ls_file

 End If
Next
i_cnt = UpperBound(as_Files)


Return i_cnt 

반응형

//

PowerBuilder 10 과 EAServer 5 이용한 웹 서비스PowerBuilder 10 과 EAServer 5 이용한 웹 서비스

Posted at 2013. 9. 3. 11:09 | Posted in PowerBuilder
반응형

Web Services란 
XML을 기반으로 하는 공개 표준들을 이용해서 
인터넷 기반의 분산 컴퓨팅 환경에서 
원격 메소드를 호출하여 사용할 수 있는 
재사용 가능한 소프트웨어 컴포넌트를 일컫는다. 
Web Services를 이용하면 
웹을 통한 원격 프로시저 호출(RPC : Remote Procedure Call)이 가능해 진다. 
Web Services를 간단히 표현하면 웹으로 공개된 메소드라고 할 수 있다.



PowerBuilder10_EAServer_WebServices_01.mht


PowerBuilder10_EAServer_WebServices_02.mht


반응형

'PowerBuilder' 카테고리의 다른 글

DW 두개를 같이 움직이기  (0) 2013.09.04
Folder의 파일 리스트 가져오기  (0) 2013.09.04
PowerBuilder 10 으로 Migration 하기  (0) 2013.09.03
파워빌더에서 화면 캡처하기  (0) 2013.09.02
DataDirect ODBC 등록방법  (0) 2013.09.02

//

PowerBuilder 10 으로 Migration 하기PowerBuilder 10 으로 Migration 하기

Posted at 2013. 9. 3. 10:37 | Posted in PowerBuilder
반응형

기존에 쓰던 파워빌더에서, 
OS 의 지원 및 DataBase의 지원여부 또는 
기존에 쓰는 것보다 상위버전의 파워빌더에서 
지원하는 기술을 쓰고 싶은 이유에서 Migration 을 하게 된다. 
대체적으로 마이그레이션시 중요한 틀로 보는 것은 
파워빌더 7 이전의 버전과 파워빌더 8 이후의 버전으로 
나눠서 생각하게 된다.



반응형

//

파워빌더에서 화면 캡처하기파워빌더에서 화면 캡처하기

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

파워빌더 자체에서 제공하는 함수가 따로 있는 것은 아닙니다. 
파워빌더에서 직접 윈도우 API 를 호출하는 방법도 있지만 
매우 복잡해져서, DLL 을 만들고 파워빌더에서는 간단하게 
함수를 호출하는 형식으로 만들어봤습니다. 

첫번째 argument 에 윈도우의 handle 을 넘겨주면 그 윈도우 만을 capture 하게 됩니다. 
만약 파워빌더에서 다른 윈도우의 화면을 capture 하려고 한다면 그 윈도우의 handle 을 
찾는 것은 별도로 구현하셔야 합니다. 

첫번째 argument 에 0 을 주면 두번째 argument 에 지정된 모니터 화면 전체를 capture 합니다. 
(멀티 모니터도 지원이 됩니다. 1 이 기본 모니터이며 2가 확장된 모니터입니다. 
3개 이상의 모니터를 가지고 있을 경우 2, 3 이 어떤 것이 될지는 테스트되지 않았습니다. 
테스트 후 프로그램에 반영하셔야 합니다.) 

자세한 내용은 첨부한 소스를 보시면 됩니다. 

PB 11.5 에서 만들어 졌으며, 하위 버전을 사용하시는 분들은 아래의 스크립트를 참조하십시요. 

// external function 
FUNCTION long pb_screencapture( unsignedlong hwnd, long whichMonitor, long imageType, long imageQuality, string filename, ref string msg ) library "pbscreen.dll" alias for "pb_screencapture;ansi" 


// PowerBuidler scripts 
boolean lb_checked 
long ll_ret, ll_monitor_no, ll_imageType, ll_imageQuality 
ulong lu_handle 
string ls_filename, ls_msg, ls_imageType 

// 저장될 파일 이름. 
ls_filename = sle_3.text 

// 에러가 발생했을 때, 메시지. 반드시 space 로 공간을 잡아주어야 한다. 
ls_msg = space(1024) 

// 현재의 윈도우만 capture 할 것인지의 여부를 묻는 체크박스 
// 체크되지 않으면 monitor number 에 지정된 화면 전체를 capture. 
lb_checked = cbx_1.checked 

if lb_checked then 
lu_handle = handle(parent) 
else 
lu_handle = 0 
end if 

// 윈도우만 capture 하는 것이 아닐 경우에만 사용. 모니터의 번호. 1 부터 시작. 
// 1 은 기본 모니터를 뜻한다. 
ll_monitor_no = long( sle_4.text ) 

// 그림의 형식. JPG, GIF, BMP 만 지원된다. 
// JPG 가 가장 효율적임. 
ls_imageType = ddlb_1.text 
choose case ls_imageType 
case "JPG" 
ll_imageType = 1 
case "GIF" 
ll_imageType = 2 
case "BMP" 
ll_imageType = 3 
end choose 

// 100 : 가장 좋은 품질. 사이즈가 커진다. 
// 1 : 가장 않좋은 품질. 사이즈가 작다. 
// 50-80 사이의 값이면 화면을 알아보는데 지장이 없음. 
ll_imageQuality = 50 

ll_ret = pb_screencapture( lu_handle, ll_monitor_no, ll_imageType, ll_imageQuality, ls_filename, ls_msg ) 
MessageBox( string(ll_ret), ls_msg )




20100504165026_wer_pbscreen_capture.zip


반응형

//

DataDirect ODBC 등록방법DataDirect ODBC 등록방법

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

DIRECT ODBC를 이용하는 방법입니다. 

--> 레지스트리 등록 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources", "ODBC_TEST", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol") 

// Intersolv ODBC Registry Set 
If RegistryGet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol", ls_Tmp) = -1 Then 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\ODBC Drivers", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "Installed") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "APILevel" , "1") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "ConnectFunctions", "YYY") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "CPTimeout" , "60") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "Driver" , SYS.WINDOWSDIR + "\pbora19.dll") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "DriverODBCVer" , "3.52") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "FileUsage" , "0") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "Setup" , SYS.WINDOWSDIR + "\pbora19s.dll") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "SQLLevel" , "1") 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\ODBC\ODBCINST.INI\PB DATADIRECT OEM 4.20 Oracle Wire Protocol", "UsageCount" , "1") 
End If 

// Intersolv ODBC(PB) SharedDLL Registry Set 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBORA19.DLL" ,ReguLong!, 2) 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBORA19S.DLL" ,ReguLong!, 2) 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBBAS19.DLL" ,ReguLong!, 2) 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBUTL19.DLL" ,ReguLong!, 2) 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBUTL19R.DLL" ,ReguLong!, 2) 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\IVPB.LIC" ,ReguLong!, 2) 
li_SetOK += RegistrySet("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\SharedDLLs", SYS.WINDOWSDIR + "\PBODB100.DLL" ,ReguLong!, 2) 

// ODBC.INI Set 
SetProfileString(SYS.WINDOWSDIR + "\ODBC.INI", "ODBC 32 bit Data Sources" , "ODBC_TEST", "PB DATADIRECT OEM 4.20 Oracle Wire Protocol") 
SetProfileString(SYS.WINDOWSDIR + "\ODBC.INI", "ODBC_TEST" , "Driver32", SYS.WINDOWSDIR + "\PBORA19.DLL") 

// ODBC_TEST ODBC Configure 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "ApplicationUsingThreads" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "ArraySize" , "60000" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CachedCursorLimit" , "32") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CachedDescLimit" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CatalogIncludesSynonyms" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "CatalogOptions" , "0") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "DefaultLongDataBuffLen" , "8192" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "DescribeAtPrepare" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "Description" , "ODBC_TEST") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "Driver" , SYS.WINDOWSDIR + "\PBORA19.DLL") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableDescribeParam" , "0" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableNcharSupport" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableScrollableCursors" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableStaticCursorsForLongData", "1") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "EnableTimestampWithTimeZone" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "HostName" , "") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "LocalTimeZoneOffset" , "") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "LockTimeOut" , "-1") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "LogonID" , "") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "PortNumber" , "") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "ProcedureRetResults" , "1" ) 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "SID" , "") 
li_SetOK += RegistrySet("HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC_TEST", "UseCurrentSchema" , "1") 

이렇게 하면 ODBC_TEST 이라는 ODBC가 생성됩니다. 
관련 화일은 위 구문에 보시면 몇개 안됩니다.. 

그걸 찾으시면 됩니다.. 

CONNECT 시에는 

SQLCA.DBMS = "ODBC" // ODBC 
SQLCA.DBPARM = "ConnectString='DSN=ODBC_TEST;HOST="+ls_ipaddress+";PORT="+ls_port+";SID="+ls_sid+";UID="+ls_logid+";PWD="+ls_logpass+"',CommitonDisconnect='No'"
SQLCA.AUTOCOMMIT = FALSE 

로 하시면 됩니다. 

단, 단점은 Oracle SP를 sqlca transaction에 등록 후 사용하셔야 합니다.

반응형

//

파워빌더 어플리케이션 1개만 실행하기파워빌더 어플리케이션 1개만 실행하기

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

어플리케이션이 한번만 실행 될수 있도록 해보겠습니다. 
  
Global Variable에 선언을 하나 합니다. 

UINT gui_hMutex 

External Function에 선언을 합니다. 
FUNCTION UINT CreateMutex ( ULONG lpsa, BOOLEAN fInitialOwner, & 
        STRING lpszMutexName ) LIBRARY "Kernel32.DLL" ALIAS FOR "CreateMutexA" 
FUNCTION ULONG GetLastError ( ) LIBRARY "Kernel32.DLL" 
FUNCTION BOOLEAN ReleaseMutex ( UINT hMutex ) LIBRARY "Kernel32.DLL" 
Application Object의 Open Event에 다음과 같이 기술 합니다. 
gui_hMutex = CreateMutex ( 0, TRUE, "PBAPP_MUTEX" ) 
IF GetLastError() = 0 THEN 
        Open(w_main_frame) 
ELSE 
        MessageBox("!", "Already Running!") 
        HALT 
END IF 
  
Application Object의 Close Event에 다음과 같이 기술 합니다. 
ReleaseMutex ( hMutex ) 
CreateMutex()라는 API는 시스템 전체에 유일한 자물쇠를 만든다 생각하면 됩니다. 
위에 예를 든 "PBAPP_MUTEX"가 바로 자물쇠의 이름이 되는겁니다. 
이 이름은 임의대로 주어도 상관 없을 것이고, 전체적인 로직은 간단합니다. 
마지막으로 EXE화일을 만든후 실행해 보시면 성공여부를 알수 있습니다.

반응형

'PowerBuilder' 카테고리의 다른 글

파워빌더에서 화면 캡처하기  (0) 2013.09.02
DataDirect ODBC 등록방법  (0) 2013.09.02
웹브라우저로 URL열기 (파월빌더 함수사용)  (0) 2013.09.02
ADO.NET설치 가이드  (0) 2013.09.02
PowerDesigner for PowerBuilder  (0) 2013.09.02

//

웹브라우저로 URL열기 (파월빌더 함수사용)웹브라우저로 URL열기 (파월빌더 함수사용)

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

Inet linet_base 

GetContextService("Internet", linet_base) 
linet_base.HyperlinkToURL("http://www.hbkr.net") 
If IsValid(linet_base) Then Destroy linet_base 



반응형

//

ADO.NET설치 가이드ADO.NET설치 가이드

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

본 문서는 기존 PowerBuilder 9 버전에서 Native Drive로 지원되던 MS SQL Database를 PowerBuilder 10 버전에서 ADO.NET으로 연결하여 사용하는 방법에 대해 기술한 것입니다. 


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




ADO_NET_setup_guide.mht




반응형

//

PowerDesigner for PowerBuilderPowerDesigner for PowerBuilder

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

파워디자이너를 간단히 요약한다면 전통적인 데이터베이스 모델링 기능에 


UML을 이용한 오브젝트 모델링 그리고 완성된 모델들의 통합관리를 위한 


레파지토리 기능을 제공하는 엔터프라이즈 모델링 툴입니다. 


그리고 최신버전인 9.5.2 버전 이상부터는 파워빌더 어플리케이션에 대한 모델링과 


Reverse Engineering기능 그리고 파워빌더 어플리케이션 생성기능을 지원하며

 
어느 단계에서든 유연한 보고서를 생성시켜 줍니다.

이하 첨부문서 참고 바랍니다.




반응형

//