Rev 9577 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
8097 | maxcodehac | 1 | MODULE Dialogs; |
2 | |||
9648 | akron1 | 3 | IMPORT |
4 | KOSAPI, SYSTEM, OpenDlg, ColorDlg; |
||
8097 | maxcodehac | 5 | |
6 | |||
9648 | akron1 | 7 | CONST |
8 | btnNone = 0; |
||
9 | btnClose = 1; |
||
10 | btnOpen = 17; |
||
11 | btnColor = 18; |
||
12 | |||
13 | |||
14 | VAR |
||
15 | header: ARRAY 1024 OF CHAR; |
||
16 | back_color: INTEGER; |
||
17 | |||
18 | |||
19 | PROCEDURE BeginDraw; |
||
8097 | maxcodehac | 20 | BEGIN |
9648 | akron1 | 21 | KOSAPI.sysfunc2(12, 1) |
22 | END BeginDraw; |
||
8097 | maxcodehac | 23 | |
9648 | akron1 | 24 | |
25 | PROCEDURE EndDraw; |
||
8097 | maxcodehac | 26 | BEGIN |
9648 | akron1 | 27 | KOSAPI.sysfunc2(12, 2) |
28 | END EndDraw; |
||
29 | |||
30 | |||
31 | PROCEDURE DefineAndDrawWindow (left, top, width, height, color, style, hcolor, hstyle: INTEGER; header: ARRAY OF CHAR); |
||
32 | BEGIN |
||
33 | KOSAPI.sysfunc6(0, left*65536 + width, top*65536 + height, color + LSL(style, 24), hcolor + LSL(hstyle, 24), SYSTEM.ADR(header[0])) |
||
8097 | maxcodehac | 34 | END DefineAndDrawWindow; |
35 | |||
9648 | akron1 | 36 | |
37 | PROCEDURE WaitForEvent (): INTEGER; |
||
38 | RETURN KOSAPI.sysfunc1(10) |
||
8097 | maxcodehac | 39 | END WaitForEvent; |
40 | |||
9648 | akron1 | 41 | |
8097 | maxcodehac | 42 | PROCEDURE ExitApp; |
43 | BEGIN |
||
9648 | akron1 | 44 | KOSAPI.sysfunc1(-1) |
8097 | maxcodehac | 45 | END ExitApp; |
46 | |||
9648 | akron1 | 47 | |
48 | PROCEDURE pause (t: INTEGER); |
||
8097 | maxcodehac | 49 | BEGIN |
9648 | akron1 | 50 | KOSAPI.sysfunc2(5, t) |
8097 | maxcodehac | 51 | END pause; |
52 | |||
9648 | akron1 | 53 | |
8097 | maxcodehac | 54 | PROCEDURE Buttons; |
55 | |||
9648 | akron1 | 56 | PROCEDURE Button (id, X, Y, W, H: INTEGER; Caption: ARRAY OF CHAR); |
57 | VAR |
||
58 | n: INTEGER; |
||
59 | BEGIN |
||
60 | n := LENGTH(Caption); |
||
61 | KOSAPI.sysfunc5(8, X*65536 + W, Y*65536 + H, id, 00C0C0C0H); |
||
62 | X := X + (W - 8*n) DIV 2; |
||
63 | Y := Y + (H - 14) DIV 2; |
||
64 | KOSAPI.sysfunc6(4, X*65536 + Y, LSL(48, 24), SYSTEM.ADR(Caption[0]), n, 0) |
||
65 | END Button; |
||
8097 | maxcodehac | 66 | |
67 | BEGIN |
||
9648 | akron1 | 68 | Button(btnOpen, 5, 5, 70, 25, "open"); |
69 | Button(btnColor, 85, 5, 70, 25, "color"); |
||
8097 | maxcodehac | 70 | END Buttons; |
71 | |||
9648 | akron1 | 72 | |
8097 | maxcodehac | 73 | PROCEDURE draw_window; |
74 | BEGIN |
||
9648 | akron1 | 75 | BeginDraw; |
76 | DefineAndDrawWindow(200, 200, 500, 100, back_color, 51, 0, 0, header); |
||
77 | Buttons; |
||
78 | EndDraw; |
||
8097 | maxcodehac | 79 | END draw_window; |
80 | |||
9648 | akron1 | 81 | |
82 | PROCEDURE OpenFile (Open: OpenDlg.Dialog); |
||
8097 | maxcodehac | 83 | BEGIN |
9648 | akron1 | 84 | IF Open # NIL THEN |
85 | OpenDlg.Show(Open, 500, 450); |
||
86 | WHILE Open.status = 2 DO |
||
87 | pause(30) |
||
88 | END; |
||
89 | IF Open.status = 1 THEN |
||
90 | COPY(Open.FilePath, header) |
||
91 | END |
||
92 | END |
||
8097 | maxcodehac | 93 | END OpenFile; |
94 | |||
9648 | akron1 | 95 | |
96 | PROCEDURE SelColor (Color: ColorDlg.Dialog); |
||
8097 | maxcodehac | 97 | BEGIN |
9648 | akron1 | 98 | IF Color # NIL THEN |
99 | ColorDlg.Show(Color); |
||
100 | WHILE Color.status = 2 DO |
||
101 | pause(30) |
||
102 | END; |
||
103 | IF Color.status = 1 THEN |
||
104 | back_color := Color.color |
||
105 | END |
||
106 | END |
||
8097 | maxcodehac | 107 | END SelColor; |
108 | |||
9648 | akron1 | 109 | |
110 | PROCEDURE GetButton (): INTEGER; |
||
111 | VAR |
||
112 | btn: INTEGER; |
||
113 | BEGIN |
||
114 | btn := KOSAPI.sysfunc1(17); |
||
115 | IF btn MOD 256 = 0 THEN |
||
116 | btn := btn DIV 256 |
||
117 | ELSE |
||
118 | btn := btnNone |
||
119 | END |
||
120 | RETURN btn |
||
121 | END GetButton; |
||
122 | |||
123 | |||
8097 | maxcodehac | 124 | PROCEDURE main; |
9648 | akron1 | 125 | CONST |
126 | EVENT_REDRAW = 1; |
||
127 | EVENT_KEY = 2; |
||
128 | EVENT_BUTTON = 3; |
||
129 | VAR |
||
130 | Open: OpenDlg.Dialog; |
||
131 | Color: ColorDlg.Dialog; |
||
8097 | maxcodehac | 132 | BEGIN |
9648 | akron1 | 133 | back_color := 00FFFFFFH; |
134 | header := "Dialogs"; |
||
135 | Open := OpenDlg.Create(draw_window, 0, "/sys", "ASM|TXT|INI"); |
||
136 | Color := ColorDlg.Create(draw_window); |
||
137 | |||
138 | WHILE TRUE DO |
||
139 | CASE WaitForEvent() OF |
||
140 | |EVENT_REDRAW: |
||
141 | draw_window |
||
142 | |||
143 | |EVENT_KEY: |
||
144 | |||
145 | |EVENT_BUTTON: |
||
146 | CASE GetButton() OF |
||
147 | |btnNone: |
||
148 | |btnClose: ExitApp |
||
149 | |btnOpen: OpenFile(Open) |
||
150 | |btnColor: SelColor(Color) |
||
151 | END |
||
152 | END |
||
153 | END |
||
8097 | maxcodehac | 154 | END main; |
155 | |||
9648 | akron1 | 156 | |
8097 | maxcodehac | 157 | BEGIN |
9648 | akron1 | 158 | main |
8097 | maxcodehac | 159 | END Dialogs. |