forked from dstd/HtmlayoutDelphi
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHtmlValue.pas
151 lines (122 loc) · 4.1 KB
/
HtmlValue.pas
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
unit HtmlValue;
interface
uses classes, sysutils, windows
, HtmlValueH
, HtmlTypes
, HtmlLayoutDomH
;
type
{***************************************************************************
* THtmlValue
***************************************************************************}
THtmlValue = class
private
Fhandler : HELEMENT;
Fvalue : RHtmlValue;
FlastError : HLDOM_RESULT;
private
function getAsString() : WideString;
procedure setAsString( const aValue : WideString );
procedure setHandler( aElement : HELEMENT );
protected
procedure updateElement(); virtual;
procedure clear();
public
constructor Create(); overload;
constructor Create( aValue : RHtmlValue ); overload;
constructor Create( aElement : HELEMENT ); overload;
destructor Destroy(); override;
public // property
property lastError : HLDOM_RESULT read FlastError;
property handler : HELEMENT read Fhandler write setHandler;
property asString : WideString read getAsString write setAsString;
end;
implementation
{*******************************************************************************
* Create
*******************************************************************************}
constructor THtmlValue.Create();
begin
Fhandler := nil;
end;
{*******************************************************************************
* Create
*******************************************************************************}
constructor THtmlValue.Create( aValue : RHtmlValue );
begin
Fvalue := aValue;
Fhandler := nil;
end;
{*******************************************************************************
* Create
*******************************************************************************}
constructor THtmlValue.Create( aElement : HELEMENT );
begin
handler := aElement;
end;
{*******************************************************************************
* Destroy
*******************************************************************************}
destructor THtmlValue.Destroy();
begin
clear();
inherited;
end;
{*******************************************************************************
* clear
*******************************************************************************}
procedure THtmlValue.clear();
begin
HTMLayoutValueClear( @Fvalue );
end;
{*******************************************************************************
* setHandler
*******************************************************************************}
procedure THtmlValue.setHandler( aElement : HELEMENT );
begin
if ( Fhandler <> nil ) and ( Fhandler <> aElement ) then
begin
clear();
end;
Fhandler := aElement;
if ( Fhandler = nil ) then
exit;
FlastError := HTMLayoutControlGetValue( Fhandler, @Fvalue );
assert( FlastError = HLDOM_OK );
end;
{*******************************************************************************
* updateElement
*******************************************************************************}
procedure THtmlValue.updateElement();
begin
if ( Fhandler = nil ) then
exit;
FlastError := HTMLayoutControlSetValue( Fhandler, @Fvalue );
assert( FlastError = HLDOM_OK );
end;
{*******************************************************************************
* getAsString
*******************************************************************************}
function THtmlValue.getAsString() : WideString;
var
data : LPCWSTR;
len : cardinal;
begin
HTMLayoutValueStringData( @Fvalue, data, len );
SetString( Result, data, len );
end;
{*******************************************************************************
* setAsString
*******************************************************************************}
procedure THtmlValue.setAsString( const aValue : WideString );
var
len : cardinal;
begin
len := Length( aValue );
if ( len <> 0 ) then
HTMLayoutValueFromString( @Fvalue, LPCWSTR( @aValue[1] ), len, CVT_SIMPLE )
else
HTMLayoutValueFromString( @Fvalue, nil, 0, CVT_SIMPLE );
updateElement();
end;
end.