1
|
DEFINE VAR h AS HANDLE NO-UNDO.
|
2
|
DEFINE FRAME d WITH SIZE 30 BY 6.
|
3
|
DEFINE VAR static AS LOGICAL NO-UNDO.
|
4
|
|
5
|
DEFINE VAR rc AS LOGICAL NO-UNDO.
|
6
|
|
7
|
DEFINE VAR cl AS INTEGER NO-UNDO LABEL "line".
|
8
|
DEFINE VAR cc AS INTEGER NO-UNDO LABEL "char".
|
9
|
DEFINE VAR co AS INTEGER NO-UNDO LABEL "offset".
|
10
|
|
11
|
DEFINE VAR ss AS INTEGER NO-UNDO LABEL "start".
|
12
|
DEFINE VAR se AS INTEGER NO-UNDO LABEL "end".
|
13
|
|
14
|
DEFINE VAR ist AS CHARACTER NO-UNDO LABEL "insert".
|
15
|
DEFINE VAR rst AS CHARACTER NO-UNDO LABEL "replace sel".
|
16
|
|
17
|
DEFINE VAR rso AS CHARACTER NO-UNDO LABEL "replace from".
|
18
|
DEFINE VAR rsn AS CHARACTER NO-UNDO LABEL "replace to".
|
19
|
DEFINE VAR rsf AS INTEGER NO-UNDO LABEL "replace flag".
|
20
|
|
21
|
|
22
|
DEFINE VARIABLE txt AS CHARACTER NO-UNDO
|
23
|
VIEW-AS EDITOR
|
24
|
MAX-CHARS 50
|
25
|
NO-BOX
|
26
|
INNER-CHARS 20
|
27
|
INNER-LINES 4
|
28
|
SCROLLBAR-VERTICAL
|
29
|
SCROLLBAR-HORIZONTAL
|
30
|
LABEL "Text".
|
31
|
|
32
|
DEFINE VAR ht AS HANDLE NO-UNDO.
|
33
|
|
34
|
DEFINE FRAME c cl cc co.
|
35
|
ENABLE ALL WITH FRAME c TITLE "Position".
|
36
|
|
37
|
DEFINE FRAME s ss se.
|
38
|
ENABLE ALL WITH FRAME s TITLE "Selection".
|
39
|
|
40
|
DEFINE FRAME m ist rst SKIP(1) rso rsn rsf.
|
41
|
ENABLE ALL WITH FRAME m TITLE "Insert/Replace".
|
42
|
|
43
|
DEFINE FRAME f txt.
|
44
|
ht = txt:HANDLE IN FRAME f.
|
45
|
|
46
|
/*
|
47
|
MESSAGE "box:" ht:BOX
|
48
|
"line:" ht:CURSOR-LINE "char:" ht:CURSOR-CHAR "offset:" ht:CURSOR-OFFSET
|
49
|
"len:" ht:LENGTH "lines:" ht:NUM-LINES
|
50
|
"sel:" ht:TEXT-SELECTED "sel1:" ht:SELECTION-START "sel2:" ht:SELECTION-END
|
51
|
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
52
|
*/
|
53
|
ht:INSERT-STRING("A1234567890 B1234567890").
|
54
|
ht:INSERT-STRING(" ").
|
55
|
ht:INSERT-STRING("C1234567890").
|
56
|
ht:INSERT-STRING(" ").
|
57
|
ht:INSERT-STRING("D1234567890").
|
58
|
ht:INSERT-STRING(" ").
|
59
|
ht:INSERT-STRING("E1234567890").
|
60
|
ht:CURSOR-OFFSET = 1.
|
61
|
/*
|
62
|
MESSAGE "box:" ht:BOX
|
63
|
"line:" ht:CURSOR-LINE "char:" ht:CURSOR-CHAR "offset:" ht:CURSOR-OFFSET
|
64
|
"len:" ht:LENGTH "lines:" ht:NUM-LINES
|
65
|
"sel:" ht:TEXT-SELECTED "sel1:" ht:SELECTION-START "sel2:" ht:SELECTION-END
|
66
|
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
67
|
*/
|
68
|
ENABLE ALL WITH FRAME f NO-LABEL TITLE 'Editor'.
|
69
|
|
70
|
ON RETURN OF rsf IN FRAME m DO:
|
71
|
ASSIGN FRAME m rso rsn rsf.
|
72
|
IF rso = "space" THEN rso = " ".
|
73
|
MESSAGE "[" + rso + "]" "unknown:" rso = ? "[" + rsn + "]" "unknown:" rsn = ? rsf "unknown:" rsf = ?
|
74
|
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
75
|
rc = ht:REPLACE(rso, rsn, rsf).
|
76
|
RUN P_showPos(INPUT rc).
|
77
|
END.
|
78
|
|
79
|
ON RETURN OF ist IN FRAME m DO:
|
80
|
ASSIGN FRAME m ist.
|
81
|
MESSAGE ist "unknown:" ist = ? VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
82
|
rc = ht:INSERT-STRING(ist).
|
83
|
RUN P_showPos(INPUT rc).
|
84
|
END.
|
85
|
|
86
|
ON RETURN OF rst IN FRAME m DO:
|
87
|
ASSIGN FRAME m rst.
|
88
|
MESSAGE rst "unknown:" rst = ? VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
89
|
rc = ht:REPLACE-SELECTION-TEXT(rst).
|
90
|
RUN P_showPos(INPUT rc).
|
91
|
|
92
|
END.
|
93
|
|
94
|
ON RETURN OF cl IN FRAME c DO:
|
95
|
ASSIGN FRAME c cl.
|
96
|
MESSAGE cl "unknown:" cl = ? VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
97
|
ht:CURSOR-LINE = cl.
|
98
|
RUN P_showPos(INPUT ?).
|
99
|
END.
|
100
|
|
101
|
ON RETURN OF cc IN FRAME c DO:
|
102
|
ASSIGN FRAME c cc.
|
103
|
MESSAGE cc "unknown:" cc = ? VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
104
|
ht:CURSOR-CHAR = cc.
|
105
|
RUN P_showPos(INPUT ?).
|
106
|
END.
|
107
|
|
108
|
ON RETURN OF co IN FRAME c DO:
|
109
|
ASSIGN FRAME c co.
|
110
|
MESSAGE co "unknown:" co = ? VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
111
|
ht:CURSOR-OFFSET = co.
|
112
|
RUN P_showPos(INPUT ?).
|
113
|
END.
|
114
|
|
115
|
ON RETURN OF se IN FRAME s DO:
|
116
|
ASSIGN FRAME s ss se.
|
117
|
MESSAGE "start:" ss "unknown:" ss = ? "end:" se "unknown:" se = ? VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
118
|
ht:SELECTED = FALSE.
|
119
|
rc = ht:SET-SELECTION(ss, se).
|
120
|
RUN P_showPos(INPUT rc).
|
121
|
END.
|
122
|
|
123
|
ON CTRL-X ANYWHERE DO:
|
124
|
RUN P_showPos(INPUT ?).
|
125
|
END.
|
126
|
|
127
|
ON CTRL-Y ANYWHERE DO:
|
128
|
MESSAGE "[" + ht:SELECTION-TEXT + "]" "unknown:" ht:SELECTION-TEXT = ?
|
129
|
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
130
|
END.
|
131
|
|
132
|
WAIT-FOR WINDOW-CLOSE OF CURRENT-WINDOW.
|
133
|
|
134
|
PROCEDURE P_showPos PRIVATE:
|
135
|
DEFINE INPUT PARAMETER rc AS LOGICAL NO-UNDO.
|
136
|
MESSAGE "rc:" rc
|
137
|
"line:" ht:CURSOR-LINE "char:" ht:CURSOR-CHAR "offset:" ht:CURSOR-OFFSET
|
138
|
"len:" ht:LENGTH "lines:" ht:NUM-LINES
|
139
|
"sel:" ht:TEXT-SELECTED "sel1:" ht:SELECTION-START "sel2:" ht:SELECTION-END
|
140
|
VIEW-AS ALERT-BOX INFORMATION BUTTONS OK.
|
141
|
END.
|
142
|
|