/
HTMLControl.prg
201 lines (152 loc) · 4.6 KB
/
HTMLControl.prg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
//
// Copyright (c) XSharp B.V. All Rights Reserved.
// Licensed under the Apache License, Version 2.0.
// See License.txt in the project root for license information.
//
CLASS HTMLControl INHERIT TextControl
PROTECT lNoNotify AS LOGIC
PROTECT lForceModFlag2True AS LOGIC
PROTECT _lModified AS LOGIC
PROTECT _oWebBrowser AS VOHtmlEditorControl
PROTECT _oVScrollBar AS System.Windows.Forms.VScrollBar
METHOD __SetText(cNewText AS STRING) AS STRING STRICT
SELF:_oWebBrowser:DocumentText := cNewText
RETURN cNewText
METHOD __GetText() AS STRING STRICT
RETURN SELF:_oWebBrowser:DocumentText
PROPERTY ControlType AS ControlType GET ControlType.Panel
METHOD OnControlCreated(oC AS IVOControl) AS VOID
SELF:_oWebBrowser := VOHtmlEditorControl{}
SELF:_oWebBrowser:Parent := (System.Windows.Forms.Control) oC
SELF:_oWebBrowser:Dock := System.Windows.Forms.DockStyle.Fill
SELF:_oVScrollBar := System.Windows.Forms.VScrollBar{}
SELF:_oVScrollBar:Parent := (System.Windows.Forms.Control) oC
SELF:_oVScrollBar:Visible := TRUE
SELF:_oVScrollBar:Dock := System.Windows.Forms.DockStyle.Right
SELF:_oVScrollBar:BackColor := System.Drawing.Color.Yellow
SELF:_oVScrollBar:SmallChange := 1
SELF:_oVScrollBar:LargeChange := 5
SELF:_oVScrollBar:Scroll += OnVScrolled
SELF:_oWebBrowser:DocumentCompleted += setDefaultFont
SELF:__SetText(" ")
RETURN
PROTECTED METHOD setDefaultFont(sender AS OBJECT, e AS System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) AS VOID
IF SELF:_oWebBrowser:Document != NULL .AND. SELF:_oWebBrowser:Document:Body != NULL
SELF:_oWebBrowser:Document:Body:Style := "font-family:'Arial';font-size:8pt;padding:3px;margin:0px;"
ENDIF
PROTECTED METHOD OnVScrolled(sender AS OBJECT, se AS System.Windows.Forms.ScrollEventArgs ) AS VOID
SELF:_oWebBrowser:Document:body:ScrollTop := SELF:_oVScrollBar:Value * 10
ASSIGN __ForceModFlag2True(lNewValue AS LOGIC) STRICT
lForceModFlag2True := lNewValue
ACCESS __NoNotify AS LOGIC STRICT
RETURN lNoNotify
METHOD CanUndo()
RETURN TRUE
ACCESS Caption AS STRING
RETURN cCaption
ASSIGN Caption(cNewCaption AS STRING)
cCaption := cNewCaption
METHOD Clear() AS VOID STRICT
RETURN
METHOD Copy() AS VOID STRICT
RETURN
METHOD Cut() AS VOID STRICT
RETURN
METHOD Font(oNewFont, lRescal)
LOCAL uRet AS USUAL
LOCAL oMargins AS Dimension
IF SELF:ValidateControl()
oMargins := SELF:Margins
uRet := SUPER:Font(oNewFont, lRescal)
SELF:Margins := oMargins
ENDIF
RETURN uRet
CONSTRUCTOR(oOwner, xID, oPoint, oDimension, kStyle)
LOCAL dwStyle AS DWORD
IF !(xID IS ResourceID)
dwStyle:= _OR(WS_CHILD, WS_CLIPSIBLINGS)
IF !IsNil(kStyle)
dwStyle := _OR(DWORD(kStyle), dwStyle)
ENDIF
SUPER(oOwner, xID, oPoint, oDimension, "Edit", dwStyle, TRUE)
ELSE
SUPER(oOwner, xID, oPoint, oDimension, , kStyle, TRUE)
ENDIF
IF !(xID IS ResourceID)
SELF:SetStyle(ES_MultiLine)
ENDIF
RETURN
METHOD IsPassword()
RETURN FALSE
ACCESS Margins AS Dimension
IF SELF:ValidateControl()
RETURN (Dimension) _oWebBrowser:Margin
ENDIF
RETURN Dimension{}
ASSIGN Margins(oNewMargins AS Dimension)
IF SELF:ValidateControl()
LOCAL oPadding AS System.Windows.Forms.Padding
oPadding := _oWebBrowser:Margin
IF oPadding:Left != oNewMargins:Width .or. oPadding:Right != oNewMargins:Height
oPadding:Left := oNewMargins:Width
oPadding:Right := oNewMargins:Height
_oWebBrowser:Margin := oPadding
ENDIF
ENDIF
RETURN
METHOD Paste(cNewString as string) AS VOID STRICT
RETURN
ACCESS ReadOnly AS LOGIC
RETURN TRUE
ASSIGN ReadOnly(lNewValue AS LOGIC)
RETURN
ACCESS SelectedText AS STRING
RETURN ""
ASSIGN SelectedText(cNewString AS STRING)
RETURN
ACCESS Selection AS Selection
RETURN Selection{0,0}
ASSIGN Selection(oSel AS Selection)
RETURN
METHOD SelectAll()
RETURN NIL
METHOD SelectNone()
RETURN NIL
METHOD SetSelectionFocus()
RETURN NIL
ACCESS TextLimit AS LONG
RETURN 0
ASSIGN TextLimit(nChars AS LONG)
RETURN
METHOD Undo() AS VOID
RETURN
ACCESS TextValue AS STRING
RETURN SELF:_oWebBrowser:DocumentText;
ASSIGN TextValue(cNewText AS STRING)
LOCAL cOldValue AS STRING
IF !SELF:_oWebBrowser:isDisposed
cOldValue := AsString(uValue)
IF SELF:FieldSpec != NULL
uValue := SELF:FieldSpec:Val(cNewText)
ELSE
uValue := cNewText
ENDIF
SELF:_oWebBrowser:DocumentText := cNewText
SELF:ValueChanged := !(cOldValue == AsString(uValue))
ENDIF
RETURN
ACCESS Modified AS LOGIC
IF SELF:ValidateControl()
IF lForceModFlag2True
RETURN TRUE
ELSE
RETURN SELF:_lModified
ENDIF
ENDIF
RETURN FALSE
ASSIGN Modified(lModified AS LOGIC)
IF SELF:ValidateControl()
SELF:_lModified := lModified
ENDIF
RETURN
END CLASS