1 unit ExternalThreadItem;
6 Windows, Classes, SysUtils,
8 ExternalBoardPlugInMain;
11 // TThreadItem
\82Ì
\83v
\83\8d\83p
\83e
\83B
\90Ý
\92è
\81^
\8eæ
\93¾ ID
12 TThreadItemProperty = (
13 tipContext, // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
14 tipNo, // : Integer //
\94Ô
\8d\86
15 tipFileName, // : string //
\83X
\83\8c\83b
\83h
\83t
\83@
\83C
\83\8b\96¼
16 tipTitle, // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
17 tipRoundDate, // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
18 tipLastModified, // : TDateTime //
\83X
\83\8c\83b
\83h
\82ª
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82é
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81j
19 tipCount, // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83\8d\81[
\83J
\83\8b\81j
20 tipAllResCount, // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83T
\81[
\83o
\81j
21 tipNewResCount, // : Integer //
\83X
\83\8c\83b
\83h
\90V
\92\85\90\94
22 tipSize, // : Integer //
\83X
\83\8c\83b
\83h
\83T
\83C
\83Y
23 tipRound, // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
24 tipRoundName, // : string //
\8f\84\89ñ
\96¼
25 tipIsLogFile, // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
26 tipKokomade, // : Integer //
\83R
\83R
\82Ü
\82Å
\93Ç
\82ñ
\82¾
\94Ô
\8d\86
27 tipNewReceive, // : Integer //
\83R
\83R
\82©
\82ç
\90V
\8bK
\8eó
\90M
28 tipNewArrival, // : Boolean //
\90V
\92\85
29 tipUnRead, // : Boolean //
\96¢
\93Ç
\83t
\83\89\83O
30 tipScrollTop, // : Integer //
\83X
\83N
\83\8d\81[
\83\8b\88Ê
\92u
31 tipDownloadHost, // : string //
\8d¡
\82Ì
\83z
\83X
\83g
\82Æ
\88á
\82¤
\8fê
\8d\87\82Ì
\83z
\83X
\83g
32 tipAgeSage, // : TThreadAgeSage //
\83A
\83C
\83e
\83\80\82Ì
\8fã
\82°
\89º
\82°
33 tipURL, // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
34 tipFilePath // : string //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
37 // *************************************************************************
38 // TThreadItem
\82ª
\90¶
\90¬
\82³
\82ê
\82½
39 // *************************************************************************
40 TThreadItemCreate = procedure(
44 // *************************************************************************
45 // TThreadItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
46 // *************************************************************************
47 TThreadItemDispose = procedure(
51 // *************************************************************************
52 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
53 // *************************************************************************
54 TThreadItemOnDownload = function(
55 inInstance : DWORD //
\83C
\83\93\83X
\83^
\83\93\83X
56 ) : TDownloadState; stdcall; //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
58 // *************************************************************************
59 //
\8f\91\82«
\8d\9e\82Ý
\82ð
\8ew
\8e¦
60 // *************************************************************************
61 TThreadItemOnWrite = function(
62 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
63 inName : PChar; //
\96¼
\91O(
\83n
\83\93\83h
\83\8b)
64 inMail : PChar; //
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
65 inMessage : PChar //
\96{
\95¶
66 ) : TDownloadState; stdcall; //
\8f\91\82«
\8d\9e\82Ý
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
68 // *************************************************************************
69 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é html
\82ð
\97v
\8b\81
70 // *************************************************************************
71 TThreadItemOnGetRes = function(
72 inInstance : DWORD; //
\83C
\83\93\83X
\83^
\83\93\83X
73 inNo : DWORD //
\95\
\8e¦
\82·
\82é
\83\8c\83X
\94Ô
\8d\86
74 ) : PChar; stdcall; //
\95\
\8e¦
\82·
\82é HTML
76 // *************************************************************************
77 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é Dat
\82ð
\97v
\8b\81
78 // *************************************************************************
79 TThreadItemOnGetDat = function(
80 inInstance : DWORD; //
\83C
\83\93\83X
\83^
\83\93\83X
81 inNo : DWORD //
\95\
\8e¦
\82·
\82é
\83\8c\83X
\94Ô
\8d\86
82 ) : PChar; stdcall; //
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\8c`
\8e®
\82ÌDat
84 // *************************************************************************
85 //
\83X
\83\8c\83b
\83h
\82Ì
\83w
\83b
\83_ html
\82ð
\97v
\8b\81
86 // *************************************************************************
87 TThreadItemOnGetHeader = function(
88 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
89 inOptionalHeader : PChar //
\92Ç
\89Á
\82Ì
\83w
\83b
\83_
90 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
92 // *************************************************************************
93 //
\83X
\83\8c\83b
\83h
\82Ì
\83t
\83b
\83^ html
\82ð
\97v
\8b\81
94 // *************************************************************************
95 TThreadItemOnGetFooter = function(
96 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
97 inOptionalFooter : PChar //
\92Ç
\89Á
\82Ì
\83t
\83b
\83^
98 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
100 // *************************************************************************
101 //
\82±
\82Ì ThreadItem
\82ª
\91®
\82·
\82é
\94Â
\82Ì URL
\82ð
\97v
\8b\81
102 // *************************************************************************
103 TThreadItemOnGetBoardURL = function(
104 inInstance : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
105 ) : PChar; stdcall; //
\94Â
\82Ì URL
107 function ThreadItemDat2HTML(
108 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
109 inDatRes : PChar; //
\96¼
\91O<>
\83\81\81[
\83\8b<>
\93ú
\95tID<>
\96{
\95¶<>
\82Å
\8d\
\90¬
\82³
\82ê
\82½
\83e
\83L
\83X
\83g
110 inResNo : DWORD; //
\83\8c\83X
\94Ô
\8d\86
111 inIsNew : Boolean //
\90V
\92\85\83\8c\83X
\82È
\82ç True
112 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
116 uses ExternalBoardManager, GikoSystem, BoardGroup;
118 // *************************************************************************
119 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\8eæ
\93¾
\82·
\82é
120 // *************************************************************************
121 function ThreadItemGetLong(
123 propertyID : TThreadItemProperty
126 threadItem : TThreadItem;
129 threadItem := TThreadItem( instance );
131 tipContext: // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
132 Result := threadItem.Context;
133 tipNo: // : Integer //
\94Ô
\8d\86
134 Result := threadItem.No;
135 tipFileName: // : string //
\83X
\83\8c\83b
\83h
\83t
\83@
\83C
\83\8b\96¼
136 Result := DWORD( CreateResultString( threadItem.FileName ) );
137 tipTitle: // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
138 Result := DWORD( CreateResultString( threadItem.Title ) );
139 tipCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83\8d\81[
\83J
\83\8b\81j
140 Result := threadItem.Count;
141 tipAllResCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83T
\81[
\83o
\81j
142 Result := threadItem.AllResCount;
143 tipNewResCount: // : Integer //
\83X
\83\8c\83b
\83h
\90V
\92\85\90\94
144 Result := threadItem.NewResCount;
145 tipSize: // : Integer //
\83X
\83\8c\83b
\83h
\83T
\83C
\83Y
146 Result := threadItem.Size;
147 tipRound: // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
148 Result := DWORD( threadItem.Round );
149 tipRoundName: // : string //
\8f\84\89ñ
\96¼
150 Result := DWORD( CreateResultString( threadItem.RoundName ) );
151 tipIsLogFile: // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
152 Result := DWORD( threadItem.IsLogFile );
153 tipKokomade: // : Integer //
\83R
\83R
\82Ü
\82Å
\93Ç
\82ñ
\82¾
\94Ô
\8d\86
154 Result := threadItem.Kokomade;
155 tipNewReceive: // : Integer //
\83R
\83R
\82©
\82ç
\90V
\8bK
\8eó
\90M
156 Result := threadItem.NewReceive;
157 tipNewArrival: // : Boolean //
\90V
\92\85
158 Result := DWORD( threadItem.NewArrival );
159 tipUnRead: // : Boolean //
\96¢
\93Ç
\83t
\83\89\83O
160 Result := DWORD( threadItem.UnRead );
161 tipScrollTop: // : Integer //
\83X
\83N
\83\8d\81[
\83\8b\88Ê
\92u
162 Result := threadItem.ScrollTop;
163 tipDownloadHost: // : string //
\8d¡
\82Ì
\83z
\83X
\83g
\82Æ
\88á
\82¤
\8fê
\8d\87\82Ì
\83z
\83X
\83g
164 Result := DWORD( CreateResultString( threadItem.DownloadHost ) );
165 tipAgeSage: // : TThreadAgeSage //
\83A
\83C
\83e
\83\80\82Ì
\8fã
\82°
\89º
\82°
166 Result := DWORD( threadItem.AgeSage );
167 tipURL: // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
168 Result := DWORD( CreateResultString( threadItem.URL ) );
169 tipFilePath: //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
170 Result := DWORD( CreateResultString( threadItem.FilePath ) );
176 // *************************************************************************
177 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\90Ý
\92è
\82·
\82é
178 // *************************************************************************
179 procedure ThreadItemSetLong(
181 propertyID : TThreadItemProperty;
185 threadItem : TThreadItem;
188 threadItem := TThreadItem( instance );
190 tipContext: // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
191 threadItem.Context := param;
192 tipNo: // : Integer //
\94Ô
\8d\86
193 threadItem.No := param;
194 tipFileName: // : string //
\83X
\83\8c\83b
\83h
\83t
\83@
\83C
\83\8b\96¼
195 threadItem.FileName := string( PChar( param ) );
196 tipTitle: // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
197 threadItem.Title := string( PChar( param ) );
198 tipCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83\8d\81[
\83J
\83\8b\81j
199 threadItem.Count := param;
200 tipAllResCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83T
\81[
\83o
\81j
201 threadItem.AllResCount := param;
202 tipNewResCount: // : Integer //
\83X
\83\8c\83b
\83h
\90V
\92\85\90\94
203 threadItem.NewResCount := param;
204 tipSize: // : Integer //
\83X
\83\8c\83b
\83h
\83T
\83C
\83Y
205 threadItem.Size := param;
206 tipRound: // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
207 threadItem.Round := Boolean( param );
208 tipRoundName: // : string //
\8f\84\89ñ
\96¼
209 //threadItem.RoundName := string( PChar( param ) );
210 threadItem.RoundName := PChar( param );
211 tipIsLogFile: // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
212 threadItem.IsLogFile := Boolean( param );
213 tipKokomade: // : Integer //
\83R
\83R
\82Ü
\82Å
\93Ç
\82ñ
\82¾
\94Ô
\8d\86
214 threadItem.Kokomade := param;
215 tipNewReceive: // : Integer //
\83R
\83R
\82©
\82ç
\90V
\8bK
\8eó
\90M
216 threadItem.NewReceive := param;
217 tipNewArrival: // : Boolean //
\90V
\92\85
218 threadItem.NewArrival := Boolean( param );
219 tipUnRead: // : Boolean //
\96¢
\93Ç
\83t
\83\89\83O
220 threadItem.UnRead := Boolean( param );
221 tipScrollTop: // : Integer //
\83X
\83N
\83\8d\81[
\83\8b\88Ê
\92u
222 threadItem.ScrollTop := param;
223 tipDownloadHost: // : string //
\8d¡
\82Ì
\83z
\83X
\83g
\82Æ
\88á
\82¤
\8fê
\8d\87\82Ì
\83z
\83X
\83g
224 threadItem.DownloadHost := string( PChar( param ) );
225 tipAgeSage: // : TThreadAgeSage //
\83A
\83C
\83e
\83\80\82Ì
\8fã
\82°
\89º
\82°
226 threadItem.AgeSage := TGikoAgeSage( param );
227 tipURL: // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
228 threadItem.URL := string( PChar( param ) );
229 //tipFilePath: // : string //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
230 // threadItem.FilePath := string( PChar( param ) );
235 // *************************************************************************
236 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\8eæ
\93¾
\82·
\82é
237 // *************************************************************************
238 function ThreadItemGetDouble(
240 propertyID : TThreadItemProperty
243 threadItem : TThreadItem;
246 threadItem := TThreadItem( instance );
248 tipRoundDate: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
249 Result := threadItem.RoundDate;
250 tipLastModified: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ª
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82é
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81j
251 Result := threadItem.LastModified;
258 // *************************************************************************
259 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\90Ý
\92è
\82·
\82é
260 // *************************************************************************
261 procedure ThreadItemSetDouble(
263 propertyID : TThreadItemProperty;
267 threadItem : TThreadItem;
270 threadItem := TThreadItem( instance );
272 tipRoundDate: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
273 threadItem.RoundDate := param;
274 tipLastModified: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ª
\8dX
\90V
\82³
\82ê
\82Ä
\82¢
\82é
\93ú
\8e\9e\81i
\83T
\81[
\83o
\91¤
\93ú
\8e\9e\81j
275 threadItem.LastModified := param;
280 // *************************************************************************
281 // TThreadItem
\83N
\83\89\83X
\82ð
\8c³
\82É
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\82Ì dat
\8c`
\8e® 1
\8ds
\82ð HTML
\82É
\95Ï
\8a·
\82·
\82é
282 // *************************************************************************
283 function ThreadItemDat2HTML(
284 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
285 inDatRes : PChar; //
\96¼
\91O<>
\83\81\81[
\83\8b<>
\93ú
\95tID<>
\96{
\95¶<>
\82Å
\8d\
\90¬
\82³
\82ê
\82½
\83e
\83L
\83X
\83g
286 inResNo : DWORD; //
\83\8c\83X
\94Ô
\8d\86
287 inIsNew : Boolean //
\90V
\92\85\83\8c\83X
\82È
\82ç True
288 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
290 threadItem : TThreadItem;
295 threadItem := TThreadItem( inInstance );
296 //
\88ø
\90\94\82ð
\95ª
\89ð
297 res := GikoSys.DivideStrLine( string( inDatRes ) );
298 if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin
299 res.FBody := GikoSys.DeleteLink(res.FBody);
300 res.FBody := GikoSys.AddAnchorTag( res.FBody );
301 res.FBody := GikoSys.ConvRes( res.FBody, threadItem.ParentBoard.BBSID, ChangeFileExt( threadItem.FileName, '' ), 'bbs', 'key', 'st', 'to', 'nofirst', 'true');
303 no := IntToStr( inResNo );
306 if GikoSys.Setting.UseSkin then begin
309 Result := CreateResultString( GikoSys.SkinedRes(
310 GikoSys.LoadFromSkin(
311 GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.Size
315 Result := CreateResultString( GikoSys.SkinedRes(
316 GikoSys.LoadFromSkin(
317 GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.Size
320 end else if GikoSys.Setting.UseCSS then begin
322 if res.FName = '' then
323 res.FName := ' ';
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">
\96¼
\91O
\81F</span> '
328 + '<span class="name"><b>' + res.FName + '</b></span> '
329 + '<span class="date_label">
\93\8a\8de
\93ú
\81F</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">
\96¼
\91O
\81F </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">
\93\8a\8de
\93ú
\81F</span>'
339 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
340 + '<div class="mes">' + res.FBody + ' </div>' )
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">
\96¼
\91O
\81F </span>'
345 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
346 + '<b>' + res.FName + '</b></a>'
347 + '<span class="date_label">
\93\8a\8de
\93ú
\81F</span>'
348 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
349 + '<div class="mes">' + res.FBody + ' </div>' );
351 //
\83f
\83t
\83H
\83\8b\83g
352 if res.FMailTo = '' then
353 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a>
\96¼
\91O
\81F<font color="forestgreen"><b> ' + res.FName + ' </b></font>
\93\8a\8de
\93ú
\81F ' + 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>
\96¼
\91O
\81F<a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a> [' + res.FMailTo + ']
\93\8a\8de
\93ú
\81F ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' )
357 Result := CreateResultString( '<a name="' + no + '"></a><dt><a href="menu:' + no + '">' + no + '</a>
\96¼
\91O
\81F<a href="mailto:' + res.FMailTo + '"><b> ' + res.FName + ' </B></a>
\93\8a\8de
\93ú
\81F ' + res.FDateTime+ '<br><dd>' + res.Fbody + ' <br><br><br>' );
368 // *************************************************************************
369 // TThreadItem
\83N
\83\89\83X
\82ð
\8c³
\82É
\83X
\83\8c\83b
\83h
\82Ì
\83w
\83b
\83_
\82ð
\8eæ
\93¾
\82·
\82é
370 // *************************************************************************
371 function ThreadItemGetHeader(
372 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
373 inOptionalHeader : PChar //
\92Ç
\89Á
\82Ì
\83w
\83b
\83_
374 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
376 threadItem : TThreadItem;
378 optionalHeader : string;
382 Writeln('ExternalBoardManager.ThreadItemGetHeader');
384 threadItem := TThreadItem( inInstance );
385 optionalHeader := string( inOptionalHeader );
388 if GikoSys.Setting.UseSkin then begin
390 skinHeader := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.Size );
391 if Length( optionalHeader ) > 0 then
393 StringReplace( skinHeader, '</head>', optionalHeader + '</head><a name="top"></a>', [] );
394 end else if GikoSys.Setting.UseCSS then begin
398 '<title>' + threadItem.Title + '</title>' +
399 '<link rel="stylesheet" href="'+ GikoSys.Setting.GetStyleSheetDir + GikoSys.Setting.CSSFileName +'" type="text/css">' +
403 '<a name="top"></a>' +
404 '<div class="title">' + threadItem.Title + '</div>';
406 //
\83f
\83t
\83H
\83\8b\83g
409 '<title>' + threadItem.Title + '</title>' +
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>' +
420 Result := CreateResultString( skinHeader );
424 // *************************************************************************
425 // TThreadItem
\83N
\83\89\83X
\82ð
\8c³
\82É
\83X
\83\8c\83b
\83h
\82Ì
\83t
\83b
\83^
\82ð
\8eæ
\93¾
\82·
\82é
426 // *************************************************************************
427 function ThreadItemGetFooter(
428 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
429 inOptionalFooter : PChar //
\92Ç
\89Á
\82Ì
\83t
\83b
\83^
430 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
432 threadItem : TThreadItem;
434 optionalFooter : string;
438 Writeln('ExternalBoardManager.ThreadItemGetFooter');
440 threadItem := TThreadItem( inInstance );
441 optionalFooter := string( inOptionalFooter );
444 if GikoSys.Setting.UseSkin then begin
446 skinFooter := GikoSys.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.Size );
447 if Length( optionalFooter ) > 0 then
449 StringReplace( skinFooter, '</body>', optionalFooter + '</body>', [] );
450 end else if GikoSys.Setting.UseCSS then begin
455 '<a name="last"></a>' +
458 //
\83f
\83t
\83H
\83\8b\83g
463 '<a name="last"></a>' +
469 Result := CreateResultString( skinFooter );
473 // *************************************************************************
474 //
\83X
\83\8c\83b
\83h
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\90i
\8ds
\82µ
\82½
475 // *************************************************************************
476 procedure ThreadItemWork(
477 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
478 inWorkCount : Integer //
\8c»
\8dÝ
\82Ì
\90i
\95à
\8fó
\8bµ(
\83J
\83E
\83\93\83g)
482 if Assigned( OnWork ) then
483 OnWork( TObject( inInstance ), wmRead, inWorkCount );
487 // *************************************************************************
488 //
\83X
\83\8c\83b
\83h
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8en
\82Ü
\82Á
\82½
489 // *************************************************************************
490 procedure ThreadItemWorkBegin(
491 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
492 inWorkCountMax : Integer //
\92Ê
\90M
\82Ì
\8fI
\82í
\82è
\82ð
\8e¦
\82·
\83J
\83E
\83\93\83g
496 if Assigned( OnWorkBegin ) then
497 OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
501 // *************************************************************************
502 //
\83X
\83\8c\83b
\83h
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8fI
\82í
\82Á
\82½
503 // *************************************************************************
504 procedure ThreadItemWorkEnd(
505 inInstance : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
509 if Assigned( OnWorkEnd ) then
510 OnWorkEnd( TObject( inInstance ), wmRead );