차이점

이 페이지의 선택한 이전 버전과 현재 버전 사이의 차이점을 보여줍니다.

차이 보기로 연결

윈도우_관련_예제 [2012/07/23 16:09] (현재)
admin 새로 만듦
줄 1: 줄 1:
 +지금 까지 다룬 윈도우 관련 내용과 앞으로 다루게될 독립함수를 이용하여 간단한 윈도우를 만들고 메뉴를 구성해 보도록 하겠습니다.
 +
 +NSAMPLES\WINDOW\TESTWIN.PRG 참조
 +
 +{{:0049.jpg|}}
 +
 +<code>
 +#include "npp.ch"
 +
 +Static oWnd
 +
 +Function Main()
 +
 +     Local oBar, oIco, oCur, oFont, oSbar[8]
 +     Local oFont1
 +     Local cNalJa := ""
 +     Local i      := 0
 +
 +     
 +     cNalJa := Dr_AllTrim(YEAR(date()))  + "년 " + ;
 +               Dr_AllTrim(MONTH(date())) + "월 " + ;
 +               Dr_AllTrim(DAY(date()))   + "일 " + ;
 +               Dr_D2Yoil(date(), .f.)    + "요일"
 +
 +     DEFINE FONT oFont  NAME "ARIAL"  SIZE 0,16
 +     DEFINE FONT oFont1 NAME "굴림체" SIZE 0,25 BOLD
 +     DEFINE ICON oIco RESOURCE "I_BIBLE"
 +     DEFINE CURSOR oCur  RESOURCE "C_HAND"
 +
 +     DEFINE WINDOW oWnd FROM 0,0 TO 10,20      ;
 +            TITLE " *** 독립 윈도우 예제 ***          "+      ;
 +                  "// 만든곳 : 강남 사무실   " +              ;
 +                  "// 만든이 : 독립개발자   " +              ;
 +                  "// 만든때 : 2003.2"                        ;
 +            MENU  BuildMenu()                                ;
 +            ICON  oIco
 +
 +       oWnd:SetWall( "B_WALL" )
 +       oWnd:Setlogo( "B_LOGO",CLR_WHITE )
 +       oWnd:BKeyDown   := {|nKey| IF(nKey==13, SUB() ,) }
 +       oWnd:BLDblClick := {|| SUB() }
 +
 +       @ 50, 530 SAY   cNalJa                                ;
 +                 OF    oWnd                                  ;
 +                 SIZE  250,25                                  ;
 +                 COLOR nRGB(255,255,255), nRGB(173,189,231)    ;
 +                 FONT  oFont1                                ;
 +                 PIXELS
 +
 +       DEFINE BUTTONBAR oBar 3D SIZE 33, 33 OF oWnd CURSOR oCur
 +
 +         DEFINE BUTTON oSbar[01] RESOURCE "B_ATOC" OF oBar        ;
 +           MESSAGE "A드라이브에서 C드라이브로 복사합니다." NOBORDER ;
 +           TOOLTIP "A C복사" ACTION SUB()
 +
 +         DEFINE BUTTON oSbar[02] RESOURCE "B_CTOA" OF oBar          ;
 +           MESSAGE "C드라이브에서 A드라이브로 복사합니다." NOBORDER ;
 +           TOOLTIP "C A복사" ACTION SUB()
 +
 +         DEFINE BUTTON oSbar[03] RESOURCE "B_APPEND" OF oBar      ;
 +           MESSAGE "자료를 추가합니다." NOBORDER                    ;
 +           TOOLTIP "자료추가" ACTION SUB() GROUP
 +         DEFINE BUTTON oSbar[04] RESOURCE "B_EDIT" OF oBar          ;
 +           MESSAGE "자료를 수정합니다." NOBORDER                    ;
 +           TOOLTIP "자료수정" ACTION SUB()
 +
 +         DEFINE BUTTON oSbar[05] RESOURCE "B_FIND" OF oBar          ;
 +           MESSAGE "자료를 검색합니다." NOBORDER                    ;
 +           TOOLTIP "자료검색" ACTION SUB()
 +
 +         DEFINE BUTTON oSbar[06] RESOURCE "B_PRINT" OF oBar          ;
 +           MESSAGE "자료를 출력합니다." NOBORDER                    ;
 +           TOOLTIP "자료출력" ACTION SUB()
 +
 +         DEFINE BUTTON oSbar[07] RESOURCE "B_HELP" OF oBar          ;
 +           MESSAGE "사용법을 설명합니다." NOBORDER                  ;
 +           TOOLTIP "도움말" ACTION WINHELP( "WINDOW.HLP" ) GROUP
 +
 +         DEFINE BUTTON oSbar[08] RESOURCE "B_EXIT" OF oBar          ;
 +           MESSAGE "작업을 종료합니다." NOBORDER                    ;
 +           TOOLTIP "작업종료" ACTION oWnd:END()
 +
 +         SET MESSAGE OF oWnd                                        ;
 +             TO "독립 메뉴얼 윈도우 예제 프로그램입니다."          ;
 +             CENTERED DATE TIME HAN FONT oFont
 +
 +     ACTIVATE WINDOW oWnd VALID JobEnd() MAXIMIZED
 +
 +     oBar:End()
 +     oFont:End()
 +     oFont1:End()
 +
 +Return Nil
 +
 +Function BuildMenu()
 +     Local oMenu
 +
 +     MENU oMenu
 +       MENUITEM "파일작업(&F)" MESSAGE "파일복사 및 종료작업을 합니다."
 +       MENU
 +         MENUITEM "파일 복사하기(&S)" MESSAGE "자료를 보조기억장치에 복사합니다."
 +         MENU
 +           MENUITEM  "A에서 C로(&C)"                                      ;
 +             ACTION  SUB()                                                  ;
 +             MESSAGE "파일을 A드라이브에서 C드라이브로 복사합니다."
 +           MENUITEM  "C에서 A로(&A)"                                    ;
 +             ACTION  SUB()                                                  ;
 +             MESSAGE "파일을 C드라이브에서 A드라이브로 복사합니다."
 +         ENDMENU
 +         SEPARATOR
 +         MENUITEM  "작업종료(@X)"                                          ;
 +           ACTION  oWnd:End()                                                ;
 +           MESSAGE "작업을 종료합니다."                                      ;
 +           ACCELERATOR ACC_ALT, ASC('X')
 +       ENDMENU
 +
 +       MENUITEM "편집작업(&E)" MESSAGE "자료의 편집 및 출력 작업을 합니다."
 +
 +       MENU
 +         MENUITEM  "추가작업(&A)"                                          ;
 +           ACTION  SUB()                                                    ;
 +           MESSAGE "자료를 추가합니다."
 +         MENUITEM  "수정작업(&M)"                                        ;
 +           ACTION  SUB()                                                    ;
 +           MESSAGE "자료를 수정합니다."
 +         MENUITEM  "검색작업(&S)"                                          ;
 +           ACTION  SUB()                                                  ;
 +           MESSAGE "자료를 검색합니다."
 +         MENUITEM  "출력작업(&P)"                                          ;
 +           ACTION  SUB()                                                    ;
 +           MESSAGE "자료를 출력합니다."
 +       ENDMENU
 +
 +       MENUITEM "도움말(&H)" MESSAGE "프로그램의 사용방법을 설명합니다."
 +
 +       MENU
 +         MENUITEM  "작업 설명(&J)"                                          ;
 +           ACTION  WINHELP( "WINDOW.HLP" )                              ;
 +           MESSAGE "프로그램에 대한 사용법을 설명합니다."
 +         SEPARATOR
 +         MENUITEM  "프로그램 정보(&I)"                                    ;
 +           ACTION  SUB()                                                  ;
 +           MESSAGE "프로그램의 정보를 보여 줍니다."
 +       ENDMENU
 +     ENDMENU
 +
 +Return (oMenu)
 +
 +Function Sub()
 +Return MsgInfo("독립 윈도우 예제입니다.", "메시지")
 +
 +Function JobEnd()
 +Return MsgYesNo("작업을 종료합니까?","작업종료")
 +
 +
 +init Function Start()
 +
 +     DR_REMOVE ( {"DLLTEST","DLLTEST","DRLIB"} )
 +     SETHANDLECOUNT(45)
 +     SET _3DLOOK ON
 +     SET RESOURCES TO "WINDOW.DLL"
 +     SETHELPFILE("WINDOW.HLP")
 +
 +Return Nil
 +
 +
 +exit Function Finish()
 +
 +     SET _3DLOOK OFF
 +     SET RESOURCES TO
 +     SYSREFRESH()
 +
 +Return Nil
 +</code>
 +
 + 
 +
 +NSAMPLES\WINDOW\CUSTOMER.PRG 참조
 +
 +도구상자의 버튼이 좀더 화려하고, MDI를 사용하는 예제입니다.
 +
 +{{:0050.jpg|}}
 +
 +<code>
 +#include "FiveWin.ch"
 +#include "Customer.ch"
 +
 +static aLayouts := { "TOP", "LEFT", "BOTTOM", "RIGHT" }
 +static oWnd, oClients, oClient, oName
 +static cName
 +
 +function Main()
 +   LOCAL oBar, oIco
 +
 +   SET _3DLOOK ON
 +   SET RESOURCES TO "CUSTOMER.DLL"
 +
 +   USE Customer ALIAS Clients
 +   USE Sales NEW
 +   SELECT Clients
 +
 +   DEFINE ICON oIco RESOURCE "USER"
 +
 +   DEFINE WINDOW oWnd TITLE "Reporting tools" ;
 +          MENU BuildMenu() COLOR "N/W" ;
 +          ICON oIco ;
 +          MDI
 +
 +          DEFINE BUTTONBAR oBar OF oWnd SIZE 60, 60 2007
 +                 DEFINE BUTTON OF oBar ACTION MsgInfo( "Click" ) ;
 +                        RESOURCE "ATTACH" PROMPT "첨부"
 +                 DEFINE BUTTON OF oBar ACTION MsgInfo( "Click" ) ;
 +                        RESOURCE "CALENDER" PROMPT "Calendar"
 +                 DEFINE BUTTON OF oBar ACTION MsgInfo( "Click" ) ;
 +                        RESOURCE "PEOPLE" PROMPT "Clients"
 +                 DEFINE BUTTON OF oBar ACTION MsgInfo( "Click" )
 +
 +   SET MESSAGE OF oWnd TO "Testing the FiveWin Report Class" CENTERED
 +   ACTIVATE WINDOW oWnd VALID MsgYesNo( "Do you want to end?" )
 +
 +return nil
 +
 +
 +function BuildMenu()
 +   LOCAL oMenu
 +
 +   MENU oMenu
 +        MENUITEM "&DataBases"
 +        MENU
 +           MENUITEM "&Clients..." ACTION  BrwClients() MESSAGE "Clients management"
 +           MENUITEM "&Report..." ACTION GenReport()
 +           SEPARATOR
 +           MENUITEM "&End" ACTION oWnd:End() MESSAGE "End this test"
 +        ENDMENU
 +        oMenu:AddMdi()              // Add standard MDI menu options
 +   ENDMENU
 +
 +return oMenu
 +
 +
 +function BrwClients()
 +   LOCAL oBrw, oIco, oBar
 +
 +   if oClients != nil ; return nil ;  endif
 +   DEFINE ICON oIco RESOURCE "CUSTOMER"
 +   DEFINE WINDOW oClients TITLE "Clients management" MDICHILD ICON oIco
 +          DEFINE BUTTONBAR oBar OF oClients
 +                 DEFINE BUTTON RESOURCE "NOTE" OF oBar ACTION  ShowClient()
 +          @ 2, 0 LISTBOX oBrw FIELDS OF oClients SIZE 500, 500 ON CHANGE ChangeClient()
 +          oClients:SetControl( oBrw )
 +   ACTIVATE WINDOW oClients VALID( oClients := nil, .t. )  // We destroy the object
 +
 +return nil
 +
 +
 +function GenReport()
 +   local oWnd, oIco
 +
 +   DEFINE ICON oIco RESOURCE "PRINT"
 +   DEFINE WINDOW oWnd TITLE "Clients report" VSCROLL HSCROLL MDICHILD ICON oIco
 +   ACTIVATE WINDOW oWnd
 +
 +return nil
 +
 +
 +function ShowClient()
 +   local oIco
 +
 +   if oClient != nil ; return nil ; endif
 +
 +   DEFINE ICON oIco RESOURCE "PERSON"
 +   DEFINE DIALOG oClient RESOURCE "Client" ICON oIco
 +          REDEFINE SAY ID 3 OF oClient   // To get the proper color
 +          REDEFINE SAY ID 4 OF oClient
 +          REDEFINE SAY ID 5 OF oClient
 +          REDEFINE GET oName VAR cName ID ID_NAME OF oClient
 +          REDEFINE BUTTON ID ID_NEXT OF oClient ACTION GoNext()
 +          SELECT Sales     // We select Sales to properly initialize the Browse
 +          REDEFINE LISTBOX FIELDS ID ID_SALES OF oClient
 +   ACTIVATE DIALOG oClient CENTERED NOWAIT VALID ( oClient := nil, .t. ) // Destroy the object
 +   SELECT Clients
 +
 +return nil
 +
 +
 +function ChangeClient()
 +   if oClient != nil
 +      cName = AllTrim( Clients->Last ) + ", " + Clients->First
 +      oName:Refresh()
 +   endif
 +return nil
 +
 +function GoNext()
 +   if oClients != nil
 +      oClients:oControl:GoDown()
 +   else
 +      SKIP
 +      if EoF()
 +         GO BOTTOM
 +      endif
 +   endif
 +   ChangeClient()
 +return nil
 +
 +
 +#include "FiveWin.ch"
 +
 +#define LTGRAY_BRUSH        1
 +#define RT_BITMAP           2
 +
 +#define OPAQUE              2
 +#define TRANSPARENT         1
 +
 +#define COLOR_BTNFACE      15
 +#define COLOR_BTNSHADOW    16
 +#define COLOR_BTNHIGHLIGHT 20
 +
 +#define NO_FOCUSWIDTH      25
 +#define GWL_STYLE         -16
 +
 +#define TME_LEAVE           2
 +#define WM_MOUSELEAVE     675
 +
 +#ifdef __XPP__
 +   #define Super ::TControl
 +   #define New _New
 +#endif
 +
 +#define LAYOUT_CENTER  0
 +#define LAYOUT_TOP     1
 +#define LAYOUT_LEFT    2
 +#define LAYOUT_BOTTOM  3
 +#define LAYOUT_RIGHT   4
 +
 +#define DST_BITMAP      4
 +#define DSS_UNION      16
 +#define DSS_DISABLED   32
 +#define DSS_MONO      128
 +</code>
 +
  
 

Link categories 1

Link categories 2