Develop and Download Open Source Software

Browse CVS Repository

Contents of /gikonavigoeson/gikonavi/ExternalThreadItem.pas

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.17 - (show annotations) (download) (as text)
Tue Dec 6 14:09:23 2005 UTC (18 years, 4 months ago) by h677
Branch: MAIN
Changes since 1.16: +4 -4 lines
File MIME type: text/x-pascal
・ケ・?ホHTMLコ?ョ、ホコヌナャイス

1 unit ExternalThreadItem;
2
3 interface
4
5 uses
6 Windows, Classes, SysUtils,
7 IdComponent,
8 ExternalBoardPlugInMain;
9
10 type
11 // TThreadItem 縺ョ繝励Ο繝代ユ繧」險ュ螳夲シ丞叙蠕 ID
12 TThreadItemProperty = (
13 tipContext, // : DWORD // 閾ェ逕ア縺ォ險ュ螳壹@縺ヲ縺?>蛟、
14 tipNo, // : Integer // 逡ェ蜿キ
15 tipFileName, // : string // 繧ケ繝ャ繝?ラ繝輔ぃ繧、繝ォ蜷?/span>
16 tipTitle, // : string // 繧ケ繝ャ繝?ラ繧ソ繧、繝医Ν
17 tipRoundDate, // : TDateTime // 繧ケ繝ャ繝?ラ繧貞叙蠕励@縺滓律譎ゑシ亥キ。蝗樊律譎ゑシ?/span>
18 tipLastModified, // : TDateTime // 繧ケ繝ャ繝?ラ縺梧峩譁ー縺輔l縺ヲ縺?k譌・譎ゑシ医し繝シ繝仙?譌・譎ゑシ?/span>
19 tipCount, // : Integer // 繧ケ繝ャ繝?ラ繧ォ繧ヲ繝ウ繝茨シ医Ο繝シ繧ォ繝ォ??/span>
20 tipAllResCount, // : Integer // 繧ケ繝ャ繝?ラ繧ォ繧ヲ繝ウ繝茨シ医し繝シ繝撰シ?/span>
21 tipNewResCount, // : Integer // 繧ケ繝ャ繝?ラ譁ー逹?謨ー
22 tipSize, // : Integer // 繧ケ繝ャ繝?ラ繧オ繧、繧コ
23 tipRound, // : Boolean // 蟾。蝗槭ヵ繝ゥ繧ー
24 tipRoundName, // : string // 蟾。蝗槫錐
25 tipIsLogFile, // : Boolean // 繝ュ繧ー蟄伜惠繝輔Λ繧ー
26 tipKokomade, // : Integer // 繧ウ繧ウ縺セ縺ァ隱ュ繧薙□逡ェ蜿キ
27 tipNewReceive, // : Integer // 繧ウ繧ウ縺九i譁ー隕丞女菫。
28 tipNewArrival, // : Boolean // 譁ー逹?
29 tipUnRead, // : Boolean // 譛ェ隱ュ繝輔Λ繧ー
30 tipScrollTop, // : Integer // 繧ケ繧ッ繝ュ繝シ繝ォ菴咲スョ
31 tipDownloadHost, // : string // 莉翫?繝帙せ繝医→驕輔≧蝣エ蜷医?繝帙せ繝?/span>
32 tipAgeSage, // : TThreadAgeSage // 繧「繧、繝?Β縺ョ荳翫£荳九£
33 tipURL, // : string // 繧ケ繝ャ繝?ラ繧偵ヶ繝ゥ繧ヲ繧カ縺ァ陦ィ遉コ縺吶k髫帙? URL
34 tipFilePath // : string // 縺薙?繧ケ繝ャ縺御ソ晏ュ倥&繧後※縺?k繝代せ
35 );
36
37 // *************************************************************************
38 // TThreadItem 縺檎函謌舌&繧後◆
39 // *************************************************************************
40 TThreadItemCreate = procedure(
41 inInstance : DWORD
42 ); stdcall;
43
44 // *************************************************************************
45 // TThreadItem 縺檎?エ譽?&繧後◆
46 // *************************************************************************
47 TThreadItemDispose = procedure(
48 inInstance : DWORD
49 ); stdcall;
50
51 // *************************************************************************
52 // 繝?繧ヲ繝ウ繝ュ繝シ繝峨r謖?、コ
53 // *************************************************************************
54 TThreadItemOnDownload = function(
55 inInstance : DWORD // 繧、繝ウ繧ケ繧ソ繝ウ繧ケ
56 ) : TDownloadState; stdcall; // 繝?繧ヲ繝ウ繝ュ繝シ繝峨′謌仙粥縺励◆縺九←縺?°
57
58 // *************************************************************************
59 // 譖ク縺崎セシ縺ソ繧呈欠遉コ
60 // *************************************************************************
61 TThreadItemOnWrite = function(
62 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
63 inName : PChar; // 蜷榊燕(繝上Φ繝峨Ν)
64 inMail : PChar; // 繝。繝シ繝ォ繧「繝峨Ξ繧ケ
65 inMessage : PChar // 譛ャ譁?/span>
66 ) : TDownloadState; stdcall; // 譖ク縺崎セシ縺ソ縺梧?蜉溘@縺溘°縺ゥ縺?°
67
68 // *************************************************************************
69 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k html 繧定ヲ∵ア?/span>
70 // *************************************************************************
71 TThreadItemOnGetRes = function(
72 inInstance : DWORD; // 繧、繝ウ繧ケ繧ソ繝ウ繧ケ
73 inNo : DWORD // 陦ィ遉コ縺吶k繝ャ繧ケ逡ェ蜿キ
74 ) : PChar; stdcall; // 陦ィ遉コ縺吶k HTML
75
76 // *************************************************************************
77 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k Dat 繧定ヲ∵ア?/span>
78 // *************************************************************************
79 TThreadItemOnGetDat = function(
80 inInstance : DWORD; // 繧、繝ウ繧ケ繧ソ繝ウ繧ケ
81 inNo : DWORD // 陦ィ遉コ縺吶k繝ャ繧ケ逡ェ蜿キ
82 ) : PChar; stdcall; // ?偵■繧?s縺ュ繧句ス「蠑上?Dat
83
84 // *************************************************************************
85 // 繧ケ繝ャ繝?ラ縺ョ繝倥ャ繝? html 繧定ヲ∵ア?/span>
86 // *************************************************************************
87 TThreadItemOnGetHeader = function(
88 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
89 inOptionalHeader : PChar // 霑ス蜉?縺ョ繝倥ャ繝?
90 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
91
92 // *************************************************************************
93 // 繧ケ繝ャ繝?ラ縺ョ繝輔ャ繧ソ html 繧定ヲ∵ア?/span>
94 // *************************************************************************
95 TThreadItemOnGetFooter = function(
96 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
97 inOptionalFooter : PChar // 霑ス蜉?縺ョ繝輔ャ繧ソ
98 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
99
100 // *************************************************************************
101 // 縺薙? ThreadItem 縺悟ア槭☆繧区攸縺ョ URL 繧定ヲ∵ア?/span>
102 // *************************************************************************
103 TThreadItemOnGetBoardURL = function(
104 inInstance : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
105 ) : PChar; stdcall; // 譚ソ縺ョ URL
106
107 function ThreadItemDat2HTML(
108 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
109 inDatRes : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;> 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
110 inResNo : DWORD; // 繝ャ繧ケ逡ェ蜿キ
111 inIsNew : Boolean // 譁ー逹?繝ャ繧ケ縺ェ繧 True
112 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
113
114 implementation
115
116 uses ExternalBoardManager, GikoSystem, BoardGroup, HTMLCreate, MojuUtils;
117
118 // *************************************************************************
119 // TThreadItem 繧ッ繝ゥ繧ケ縺ョ繝励Ο繝代ユ繧」繧貞叙蠕励☆繧?/span>
120 // *************************************************************************
121 function ThreadItemGetLong(
122 instance : DWORD;
123 propertyID : TThreadItemProperty
124 ) : DWORD; stdcall;
125 var
126 threadItem : TThreadItem;
127 begin
128
129 threadItem := TThreadItem( instance );
130 case propertyID of
131 tipContext: // : DWORD // 閾ェ逕ア縺ォ險ュ螳壹@縺ヲ縺?>蛟、
132 Result := threadItem.Context;
133 tipNo: // : Integer // 逡ェ蜿キ
134 Result := threadItem.No;
135 tipFileName: // : string // 繧ケ繝ャ繝?ラ繝輔ぃ繧、繝ォ蜷?/span>
136 Result := DWORD( CreateResultString( threadItem.FileName ) );
137 tipTitle: // : string // 繧ケ繝ャ繝?ラ繧ソ繧、繝医Ν
138 Result := DWORD( CreateResultString( threadItem.Title ) );
139 tipCount: // : Integer // 繧ケ繝ャ繝?ラ繧ォ繧ヲ繝ウ繝茨シ医Ο繝シ繧ォ繝ォ??/span>
140 Result := threadItem.Count;
141 tipAllResCount: // : Integer // 繧ケ繝ャ繝?ラ繧ォ繧ヲ繝ウ繝茨シ医し繝シ繝撰シ?/span>
142 Result := threadItem.AllResCount;
143 tipNewResCount: // : Integer // 繧ケ繝ャ繝?ラ譁ー逹?謨ー
144 Result := threadItem.NewResCount;
145 tipSize: // : Integer // 繧ケ繝ャ繝?ラ繧オ繧、繧コ
146 Result := threadItem.Size;
147 tipRound: // : Boolean // 蟾。蝗槭ヵ繝ゥ繧ー
148 Result := DWORD( threadItem.Round );
149 tipRoundName: // : string // 蟾。蝗槫錐
150 Result := DWORD( CreateResultString( threadItem.RoundName ) );
151 tipIsLogFile: // : Boolean // 繝ュ繧ー蟄伜惠繝輔Λ繧ー
152 Result := DWORD( threadItem.IsLogFile );
153 tipKokomade: // : Integer // 繧ウ繧ウ縺セ縺ァ隱ュ繧薙□逡ェ蜿キ
154 Result := threadItem.Kokomade;
155 tipNewReceive: // : Integer // 繧ウ繧ウ縺九i譁ー隕丞女菫。
156 Result := threadItem.NewReceive;
157 tipNewArrival: // : Boolean // 譁ー逹?
158 Result := DWORD( threadItem.NewArrival );
159 tipUnRead: // : Boolean // 譛ェ隱ュ繝輔Λ繧ー
160 Result := DWORD( threadItem.UnRead );
161 tipScrollTop: // : Integer // 繧ケ繧ッ繝ュ繝シ繝ォ菴咲スョ
162 Result := threadItem.ScrollTop;
163 tipDownloadHost: // : string // 莉翫?繝帙せ繝医→驕輔≧蝣エ蜷医?繝帙せ繝?/span>
164 Result := DWORD( CreateResultString( threadItem.DownloadHost ) );
165 tipAgeSage: // : TThreadAgeSage // 繧「繧、繝?Β縺ョ荳翫£荳九£
166 Result := DWORD( threadItem.AgeSage );
167 tipURL: // : string // 繧ケ繝ャ繝?ラ繧偵ヶ繝ゥ繧ヲ繧カ縺ァ陦ィ遉コ縺吶k髫帙? URL
168 Result := DWORD( CreateResultString( threadItem.URL ) );
169 tipFilePath: // 縺薙?繧ケ繝ャ縺御ソ晏ュ倥&繧後※縺?k繝代せ
170 Result := DWORD( CreateResultString( threadItem.FilePath ) );
171 else
172 Result := 0;
173 end;
174 end;
175
176 // *************************************************************************
177 // TThreadItem 繧ッ繝ゥ繧ケ縺ョ繝励Ο繝代ユ繧」繧定ィュ螳壹☆繧?/span>
178 // *************************************************************************
179 procedure ThreadItemSetLong(
180 instance : DWORD;
181 propertyID : TThreadItemProperty;
182 param : DWORD
183 ); stdcall;
184 var
185 threadItem : TThreadItem;
186 begin
187
188 threadItem := TThreadItem( instance );
189 case propertyID of
190 tipContext: // : DWORD // 閾ェ逕ア縺ォ險ュ螳壹@縺ヲ縺?>蛟、
191 threadItem.Context := param;
192 tipNo: // : Integer // 逡ェ蜿キ
193 threadItem.No := param;
194 tipFileName: // : string // 繧ケ繝ャ繝?ラ繝輔ぃ繧、繝ォ蜷?/span>
195 threadItem.FileName := string( PChar( param ) );
196 tipTitle: // : string // 繧ケ繝ャ繝?ラ繧ソ繧、繝医Ν
197 threadItem.Title := string( PChar( param ) );
198 tipCount: // : Integer // 繧ケ繝ャ繝?ラ繧ォ繧ヲ繝ウ繝茨シ医Ο繝シ繧ォ繝ォ??/span>
199 threadItem.Count := param;
200 tipAllResCount: // : Integer // 繧ケ繝ャ繝?ラ繧ォ繧ヲ繝ウ繝茨シ医し繝シ繝撰シ?/span>
201 threadItem.AllResCount := param;
202 tipNewResCount: // : Integer // 繧ケ繝ャ繝?ラ譁ー逹?謨ー
203 threadItem.NewResCount := param;
204 tipSize: // : Integer // 繧ケ繝ャ繝?ラ繧オ繧、繧コ
205 threadItem.Size := param;
206 tipRound: // : Boolean // 蟾。蝗槭ヵ繝ゥ繧ー
207 threadItem.Round := Boolean( param );
208 tipRoundName: // : string // 蟾。蝗槫錐
209 //threadItem.RoundName := string( PChar( param ) );
210 threadItem.RoundName := PChar( param );
211 tipIsLogFile: // : Boolean // 繝ュ繧ー蟄伜惠繝輔Λ繧ー
212 threadItem.IsLogFile := Boolean( param );
213 tipKokomade: // : Integer // 繧ウ繧ウ縺セ縺ァ隱ュ繧薙□逡ェ蜿キ
214 threadItem.Kokomade := param;
215 tipNewReceive: // : Integer // 繧ウ繧ウ縺九i譁ー隕丞女菫。
216 threadItem.NewReceive := param;
217 tipNewArrival: // : Boolean // 譁ー逹?
218 threadItem.NewArrival := Boolean( param );
219 tipUnRead: // : Boolean // 譛ェ隱ュ繝輔Λ繧ー
220 threadItem.UnRead := Boolean( param );
221 tipScrollTop: // : Integer // 繧ケ繧ッ繝ュ繝シ繝ォ菴咲スョ
222 threadItem.ScrollTop := param;
223 tipDownloadHost: // : string // 莉翫?繝帙せ繝医→驕輔≧蝣エ蜷医?繝帙せ繝?/span>
224 threadItem.DownloadHost := string( PChar( param ) );
225 tipAgeSage: // : TThreadAgeSage // 繧「繧、繝?Β縺ョ荳翫£荳九£
226 threadItem.AgeSage := TGikoAgeSage( param );
227 tipURL: // : string // 繧ケ繝ャ繝?ラ繧偵ヶ繝ゥ繧ヲ繧カ縺ァ陦ィ遉コ縺吶k髫帙? URL
228 threadItem.URL := string( PChar( param ) );
229 //tipFilePath: // : string // 縺薙?繧ケ繝ャ縺御ソ晏ュ倥&繧後※縺?k繝代せ
230 // threadItem.FilePath := string( PChar( param ) );
231 end;
232
233 end;
234
235 // *************************************************************************
236 // TThreadItem 繧ッ繝ゥ繧ケ縺ョ繝励Ο繝代ユ繧」繧貞叙蠕励☆繧?/span>
237 // *************************************************************************
238 function ThreadItemGetDouble(
239 instance : DWORD;
240 propertyID : TThreadItemProperty
241 ) : Double; stdcall;
242 var
243 threadItem : TThreadItem;
244 begin
245
246 threadItem := TThreadItem( instance );
247 case propertyID of
248 tipRoundDate: // : TDateTime // 繧ケ繝ャ繝?ラ繧貞叙蠕励@縺滓律譎ゑシ亥キ。蝗樊律譎ゑシ?/span>
249 Result := threadItem.RoundDate;
250 tipLastModified: // : TDateTime // 繧ケ繝ャ繝?ラ縺梧峩譁ー縺輔l縺ヲ縺?k譌・譎ゑシ医し繝シ繝仙?譌・譎ゑシ?/span>
251 Result := threadItem.LastModified;
252 else
253 Result := 0;
254 end;
255
256 end;
257
258 // *************************************************************************
259 // TThreadItem 繧ッ繝ゥ繧ケ縺ョ繝励Ο繝代ユ繧」繧定ィュ螳壹☆繧?/span>
260 // *************************************************************************
261 procedure ThreadItemSetDouble(
262 instance : DWORD;
263 propertyID : TThreadItemProperty;
264 param : Double
265 ); stdcall;
266 var
267 threadItem : TThreadItem;
268 begin
269
270 threadItem := TThreadItem( instance );
271 case propertyID of
272 tipRoundDate: // : TDateTime // 繧ケ繝ャ繝?ラ繧貞叙蠕励@縺滓律譎ゑシ亥キ。蝗樊律譎ゑシ?/span>
273 threadItem.RoundDate := param;
274 tipLastModified: // : TDateTime // 繧ケ繝ャ繝?ラ縺梧峩譁ー縺輔l縺ヲ縺?k譌・譎ゑシ医し繝シ繝仙?譌・譎ゑシ?/span>
275 threadItem.LastModified := param;
276 end;
277
278 end;
279
280 // *************************************************************************
281 // TThreadItem 繧ッ繝ゥ繧ケ繧貞?縺ォ?偵■繧?s縺ュ繧九? dat 蠖「蠑 1 陦後r HTML 縺ォ螟画鋤縺吶k
282 // *************************************************************************
283 function ThreadItemDat2HTML(
284 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
285 inDatRes : PChar; // 蜷榊燕<>繝。繝シ繝ォ<>譌・莉露D<>譛ャ譁?lt;> 縺ァ讒区?縺輔l縺溘ユ繧ュ繧ケ繝?/span>
286 inResNo : DWORD; // 繝ャ繧ケ逡ェ蜿キ
287 inIsNew : Boolean // 譁ー逹?繝ャ繧ケ縺ェ繧 True
288 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
289 var
290 threadItem : TThreadItem;
291 res : TResRec;
292 no : string;
293 begin
294
295 threadItem := TThreadItem( inInstance );
296 // 蠑墓焚繧貞?隗」
297 DivideStrLine( string( inDatRes ) , @res);
298 if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin
299 res.FBody := GikoSys.DeleteLink(res.FBody);
300 res.FBody := HTMLCreater.AddAnchorTag( res.FBody );
301 res.FBody := HTMLCreater.ConvRes( res.FBody, threadItem.ParentBoard.BBSID, ChangeFileExt( threadItem.FileName, '' ));
302
303 no := IntToStr( inResNo );
304
305 try
306 if GikoSys.Setting.UseSkin then begin
307 // 繧ケ繧ュ繝ウ
308 if inIsNew then
309 Result := CreateResultString( HTMLCreater.SkinedRes(
310 HTMLCreater.LoadFromSkin(
311 GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.Size
312 ), @res, no
313 ) )
314 else
315 Result := CreateResultString( HTMLCreater.SkinedRes(
316 HTMLCreater.LoadFromSkin(
317 GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.Size
318 ), @res, no
319 ) );
320 end else if GikoSys.Setting.UseCSS then begin
321 // CSS
322 if res.FName = '' then
323 res.FName := '&nbsp;';
324 if res.FMailTo = '' then
325 Result := CreateResultString( '<a name="' + no + '"></a>'
326 + '<div class="header"><span class="no"><a href="menu:' + No + '">' + no + '</a></span> '
327 + '<span class="name_label">蜷榊燕??lt;/span> '
328 + '<span class="name"><b>' + res.FName + '</b></span> '
329 + '<span class="date_label">謚慕ィソ譌・??lt;/span> '
330 + '<span class="date">' + res.FDateTime+ '</span></div>'
331 + '<div class="mes">' + res.FBody + ' </div>' )
332 else if GikoSys.Setting.ShowMail then
333 Result := CreateResultString( '<a name="' + no + '"></a>'
334 + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
335 + '<span class="name_label"> 蜷榊燕? </span>'
336 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
337 + '<b>' + res.FName + '</b></a><span class="mail"> [' + res.FMailTo + ']</span>'
338 + '<span class="date_label"> 謚慕ィソ譌・??lt;/span>'
339 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
340 + '<div class="mes">' + res.FBody + ' </div>' )
341 else
342 Result := CreateResultString( '<a name="' + no + '"></a>'
343 + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
344 + '<span class="name_label"> 蜷榊燕? </span>'
345 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
346 + '<b>' + res.FName + '</b></a>'
347 + '<span class="date_label"> 謚慕ィソ譌・??lt;/span>'
348 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
349 + '<div class="mes">' + res.FBody + ' </div>' );
350 end else begin
351 // 繝?ヵ繧ゥ繝ォ繝?/span>
352 if res.FMailTo = '' then
353 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> 蜷榊燕??lt;font color="forestgreen"><b> ' + res.FName + ' </b></font> 謚慕ィソ譌・? ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
354 else if GikoSys.Setting.ShowMail then
355 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> 蜷榊燕??lt;a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> [' + res.FMailTo + '] 謚慕ィソ譌・? ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
356 else
357 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a> 蜷榊燕??lt;a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> 謚慕ィソ譌・? ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' );
358 end;
359 except
360 Result := nil;
361 end;
362 end else begin
363 Result := nil;
364 end;
365
366 end;
367
368 // *************************************************************************
369 // TThreadItem 繧ッ繝ゥ繧ケ繧貞?縺ォ繧ケ繝ャ繝?ラ縺ョ繝倥ャ繝?繧貞叙蠕励☆繧?/span>
370 // *************************************************************************
371 function ThreadItemGetHeader(
372 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
373 inOptionalHeader : PChar // 霑ス蜉?縺ョ繝倥ャ繝?
374 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
375 var
376 threadItem : TThreadItem;
377 skinHeader : string;
378 optionalHeader : string;
379 begin
380
381 {$IFDEF DEBUG}
382 Writeln('ExternalBoardManager.ThreadItemGetHeader');
383 {$ENDIF}
384 threadItem := TThreadItem( inInstance );
385 optionalHeader := string( inOptionalHeader );
386
387 try
388 if GikoSys.Setting.UseSkin then begin
389 // 繧ケ繧ュ繝ウ
390 skinHeader := HTMLCreater.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.Size );
391 if Length( optionalHeader ) > 0 then
392 skinHeader :=
393 StringReplace( skinHeader, '</head>', optionalHeader + '</head><a name="top"></a>', [] );
394 end else if GikoSys.Setting.UseCSS then begin
395 // CSS
396 skinHeader :=
397 '<html><head>' +
398 '<title>' + threadItem.Title + '</title>' +
399 '<link rel="stylesheet" href="'+ GikoSys.Setting.GetStyleSheetDir + GikoSys.Setting.CSSFileName +'" type="text/css">' +
400 optionalHeader +
401 '</head>' +
402 '<body>' +
403 '<a name="top"></a>' +
404 '<div class="title">' + threadItem.Title + '</div>';
405 end else begin
406 // 繝?ヵ繧ゥ繝ォ繝?/span>
407 skinHeader :=
408 '<html><head>' +
409 '<title>' + threadItem.Title + '</title>' +
410 optionalHeader +
411 '</head>' +
412 '<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' +
413 '<a name="top"></a>' +
414 '<font size=+1 color="#FF0000">' + threadItem.Title + '</font>' +
415 '<dl>';
416 end;
417 except
418 end;
419
420 Result := CreateResultString( skinHeader );
421
422 end;
423
424 // *************************************************************************
425 // TThreadItem 繧ッ繝ゥ繧ケ繧貞?縺ォ繧ケ繝ャ繝?ラ縺ョ繝輔ャ繧ソ繧貞叙蠕励☆繧?/span>
426 // *************************************************************************
427 function ThreadItemGetFooter(
428 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
429 inOptionalFooter : PChar // 霑ス蜉?縺ョ繝輔ャ繧ソ
430 ) : PChar; stdcall; // 謨エ蠖「縺輔l縺 HTML
431 var
432 threadItem : TThreadItem;
433 skinFooter : string;
434 optionalFooter : string;
435 begin
436
437 {$IFDEF DEBUG}
438 Writeln('ExternalBoardManager.ThreadItemGetFooter');
439 {$ENDIF}
440 threadItem := TThreadItem( inInstance );
441 optionalFooter := string( inOptionalFooter );
442
443 try
444 if GikoSys.Setting.UseSkin then begin
445 // 繧ケ繧ュ繝ウ
446 skinFooter := HTMLCreater.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.Size );
447 if Length( optionalFooter ) > 0 then
448 skinFooter :=
449 StringReplace( skinFooter, '</body>', optionalFooter + '</body>', [] );
450 end else if GikoSys.Setting.UseCSS then begin
451 // CSS
452 skinFooter :=
453 optionalFooter +
454 '</body></html>' +
455 '<a name="last"></a>' +
456 '</body></html>';
457 end else begin
458 // 繝?ヵ繧ゥ繝ォ繝?/span>
459 skinFooter :=
460 '</dl>' +
461 optionalFooter +
462 '</body></html>' +
463 '<a name="last"></a>' +
464 '</body></html>';
465 end;
466 except
467 end;
468
469 Result := CreateResultString( skinFooter );
470
471 end;
472
473 // *************************************************************************
474 // 繧ケ繝ャ繝?ラ縺ョ繝?繧ヲ繝ウ繝ュ繝シ繝峨′騾イ陦後@縺?/span>
475 // *************************************************************************
476 procedure ThreadItemWork(
477 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
478 inWorkCount : Integer // 迴セ蝨ィ縺ョ騾イ豁ゥ迥カ豕?繧ォ繧ヲ繝ウ繝?
479 ); stdcall;
480 begin
481
482 if Assigned( OnWork ) then
483 OnWork( TObject( inInstance ), wmRead, inWorkCount );
484
485 end;
486
487 // *************************************************************************
488 // 繧ケ繝ャ繝?ラ縺ョ繝?繧ヲ繝ウ繝ュ繝シ繝峨′蟋九∪縺」縺?/span>
489 // *************************************************************************
490 procedure ThreadItemWorkBegin(
491 inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
492 inWorkCountMax : Integer // 騾壻ソ。縺ョ邨ゅo繧翫r遉コ縺吶き繧ヲ繝ウ繝?/span>
493 ); stdcall;
494 begin
495
496 if Assigned( OnWorkBegin ) then
497 OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
498
499 end;
500
501 // *************************************************************************
502 // 繧ケ繝ャ繝?ラ縺ョ繝?繧ヲ繝ウ繝ュ繝シ繝峨′邨ゅo縺」縺?/span>
503 // *************************************************************************
504 procedure ThreadItemWorkEnd(
505 inInstance : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
506 ); stdcall;
507 begin
508
509 if Assigned( OnWorkEnd ) then
510 OnWorkEnd( TObject( inInstance ), wmRead );
511
512 end;
513
514 exports
515 ThreadItemGetLong,
516 ThreadItemSetLong,
517 ThreadItemGetDouble,
518 ThreadItemSetDouble,
519 ThreadItemDat2HTML,
520 ThreadItemGetHeader,
521 ThreadItemGetFooter,
522 ThreadItemWork,
523 ThreadItemWorkBegin,
524 ThreadItemWorkEnd;
525
526 end.
527

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26