Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
6613 | leency | 1 | MODULE Dialogs; |
2 | |||
3 | IMPORT KOSAPI, sys := SYSTEM, OpenDlg, ColorDlg; |
||
4 | |||
5 | VAR header: ARRAY 1024 OF CHAR; back_color: INTEGER; |
||
6 | |||
7 | PROCEDURE WindowRedrawStatus(p: INTEGER); |
||
8 | VAR aux: INTEGER; |
||
9 | BEGIN |
||
10 | aux := KOSAPI.sysfunc2(12, p) |
||
11 | END WindowRedrawStatus; |
||
12 | |||
13 | PROCEDURE DefineAndDrawWindow(x, y, w, h, color, style, hcolor, hstyle, htext: INTEGER); |
||
14 | VAR aux: INTEGER; |
||
15 | BEGIN |
||
16 | aux := KOSAPI.sysfunc6(0, x * 65536 + w, y * 65536 + h, color + LSL(style, 24), hcolor + LSL(hstyle, 24), htext) |
||
17 | END DefineAndDrawWindow; |
||
18 | |||
19 | PROCEDURE WaitForEvent(): INTEGER; |
||
20 | RETURN KOSAPI.sysfunc1(10) |
||
21 | END WaitForEvent; |
||
22 | |||
23 | PROCEDURE ExitApp; |
||
24 | VAR aux: INTEGER; |
||
25 | BEGIN |
||
26 | aux := KOSAPI.sysfunc1(-1) |
||
27 | END ExitApp; |
||
28 | |||
29 | PROCEDURE pause(t: INTEGER); |
||
30 | VAR aux: INTEGER; |
||
31 | BEGIN |
||
32 | aux := KOSAPI.sysfunc2(5, t) |
||
33 | END pause; |
||
34 | |||
35 | PROCEDURE Buttons; |
||
36 | |||
37 | PROCEDURE Button(id, X, Y, W, H: INTEGER; Caption: ARRAY OF CHAR); |
||
38 | VAR n, aux: INTEGER; |
||
39 | BEGIN |
||
40 | n := LENGTH(Caption); |
||
41 | aux := KOSAPI.sysfunc5(8, X * 65536 + W, Y * 65536 + H, id, 00C0C0C0H); |
||
42 | X := X + (W - 8 * n) DIV 2; |
||
43 | Y := Y + (H - 14) DIV 2; |
||
44 | aux := KOSAPI.sysfunc6(4, X * 65536 + Y, LSL(48, 24), sys.ADR(Caption[0]), n, 0) |
||
45 | END Button; |
||
46 | |||
47 | BEGIN |
||
48 | Button(17, 5, 5, 70, 25, "open"); |
||
49 | Button(18, 85, 5, 70, 25, "color"); |
||
50 | END Buttons; |
||
51 | |||
52 | PROCEDURE draw_window; |
||
53 | BEGIN |
||
54 | WindowRedrawStatus(1); |
||
55 | DefineAndDrawWindow(200, 200, 500, 100, back_color, 51, 0, 0, sys.ADR(header[0])); |
||
56 | Buttons; |
||
57 | WindowRedrawStatus(2); |
||
58 | END draw_window; |
||
59 | |||
60 | PROCEDURE OpenFile(Open: OpenDlg.Dialog); |
||
61 | BEGIN |
||
62 | IF Open # NIL THEN |
||
63 | OpenDlg.Show(Open, 500, 450); |
||
64 | WHILE Open.status = 2 DO |
||
65 | pause(30) |
||
66 | END; |
||
67 | IF Open.status = 1 THEN |
||
68 | COPY(Open.FilePath, header) |
||
69 | END |
||
70 | END |
||
71 | END OpenFile; |
||
72 | |||
73 | PROCEDURE SelColor(Color: ColorDlg.Dialog); |
||
74 | BEGIN |
||
75 | IF Color # NIL THEN |
||
76 | ColorDlg.Show(Color); |
||
77 | WHILE Color.status = 2 DO |
||
78 | pause(30) |
||
79 | END; |
||
80 | IF Color.status = 1 THEN |
||
81 | back_color := Color.color |
||
82 | END |
||
83 | END |
||
84 | END SelColor; |
||
85 | |||
86 | PROCEDURE main; |
||
87 | VAR Open: OpenDlg.Dialog; Color: ColorDlg.Dialog; res, al: INTEGER; |
||
88 | BEGIN |
||
89 | back_color := 00FFFFFFH; |
||
90 | header := "Dialogs"; |
||
91 | draw_window; |
||
92 | Open := OpenDlg.Create(draw_window, 0, "/rd/1", "ASM|TXT|INI"); |
||
93 | Color := ColorDlg.Create(draw_window); |
||
94 | WHILE TRUE DO |
||
95 | CASE WaitForEvent() OF |
||
96 | |1: draw_window |
||
97 | |3: res := KOSAPI.sysfunc1(17); |
||
98 | al := LSR(LSL(res, 24), 24); |
||
99 | res := LSR(res, 8); |
||
100 | IF al = 0 THEN |
||
101 | CASE res OF |
||
102 | | 1: ExitApp |
||
103 | |17: OpenFile(Open) |
||
104 | |18: SelColor(Color) |
||
105 | END |
||
106 | END |
||
107 | ELSE |
||
108 | END |
||
109 | END |
||
110 | END main; |
||
111 | |||
112 | BEGIN |
||
113 | main |
||
114 | END Dialogs. |