XPLATFORM 응용프로그램은 EDA(Event-Driven Architecture)를 기본으로 하고 있습니다. 즉, XPLATFORM 응용프로그램에서 개발자가 개발하는 부분의 시작점은 모두 Event Function부터 시작합니다.
Event의 개요
Event 처리 대상
XPLATFORM 응용프로그램에서 모든 Object들이 Event처리 대상은 아닙니다. 주로 동적으로 상태가 변하는 Object들이 Event 처리 대상이 됩니다. Event처리를 위하여 개발자가 Script처리하는 부분을 Event Function이라고 합니다.
다음은 UX-Studio상에서 Event Function을 등록할 수 Object입니다.
Project Explorer 분류 | Event를 등록할 수 있는 Object | 설명 |
---|---|---|
ADL | ADL | - application의 로딩/시작/종료 등에 대한 Event를 처리하는 Function들을 등록합니다. |
Frame들 | - MainFrame, Frameset, ChildFrame등 Frame Object들에서 발생하는 Event들을 처리하는 Function들을 등록합니다. | |
Tray | - Tray에서 발생하는 Event들을 처리하는 Event들을 등록합니다. | |
Application Menu | - Application Menu에서 발생하는 Event들을 처리하는 Event들을 등록합니다. | |
Global Variable | Datasets | - Global Variable에 등록한 Dataset의 Event들을 처리하는 Event들을 등록합니다. |
Service | Form | - Form이 작동하면 발생하는 Event들을 처리하는 Event들을 등록합니다. |
컴포넌트들 | - Form내의 컴포넌트들이 작동하면 발생하는 Event들을 처리하는 Event들을 등록합니다. | |
Invisible Object들 | - Form내의 Invisible Object들이 작동하면 발생하는 Event들을 처리하는 Event들을 등록합니다. |
Parent-Child간 Event 전이
parent-child과 관계를 갖는 object들은 event가 상위 parent로 전이되는 것을 기본으로 합니다.
즉, 어떤 Form에 속한 컴포넌트에서 Event가 발생하면, 그 컴포넌트가 포함된 Form에서도 동일한 Event가 발생합니다. 그러나 parent가 해당 Event를 취급하지 않는 경우는 발생하지 않습니다.
다음은 parent로 Event를 전이하는 Event들입니다.
분류 | Event들 | Default가 parent발생? |
---|---|---|
키보드 Key | onkeyup() | O |
마우스 Moving | onmousemove() onmouseleave() onmouseenter() | O O O |
마우스 Button | onmousewheel() onrbuttondown() onrbuttonup() onlbuttondown() onlbuttonup() onmousedown() onmouseup() | O O O O O O O |
마우스 drag | ondrag() ondragenter() ondragleave() ondrop() | X O O O |
표기법
“Key event Flow”부터는 컴포넌트별 Event발생 순서를 흐름도로 나타냅니다. 여기서는 그 흐름도의 표기법을 설명합니다.
Event Flow에서 사용하는 도형
도 형 | 정 의 |
---|---|
사용자 입력 | |
Event | |
Return value없는 event | |
true return시, 상위 컴포넌트에서 해당 event가 발생하지 않는 Event default return값은 false이다. | |
true return시, 상위 컴포넌트에서 해당 event가 발생하는 Event default return값은 true이다. | |
조건/판단 | |
Return value | |
Default return value | |
조건 흐름 | |
이후 작업 없음 | |
Event Module |
Key event Flow
KeyPush module 정의
ApplicationMenu,Button,Calendar,CheckBox,Combo,Div,Edit,Form,ImageViewer,ListBox,MaskEdit,Menu,PopupDiv,PopupMenu,Radio,Spin,Tab,TabPage,TextArea
Grid
Edit event Flow
Edit module 정의
Edit기능이 있는 컴포넌트
Edit / MaskEdit / TextArea / Combo / Calendar / Spin
Grid
Edit, MaskEdit, TextArea, Combo, Calendar, Spin
Grid
Edit중 Focus Out Flow
Calendar/Combo/Spin, Edit/MaskEdit/TextArea
Mouse Move event Flow
Edit/MaskEdit/TextArea, Calendar/Combo/Spin, Tab/TabPage, ListBox/Radio, PopupMenu/ Menu, Button, CheckBox, GraphicPath, GroupBox, ImageViewer, Panel, ProgressBar, Shape, Splitter, Static, Div, Form, Grid, PopupDiv
Mouse Click event Flow
MouseClick Module
MouseLbuttonDown Module
Button,CheckBox,Form,GraphicPath,ImageViewer,Panel,PopupDiv,ProgressBar,Shape,Static, Div/TabPage
Edit/MaskEdit/TextArea, Menu
Calendar
Combo
Spin
Tab
ListBox
Radio
Splitter
PopupDiv / PopupMenu
Focus가 밖으로 나가면 자동 close되는 component들