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