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
35 tipJumpAddress // : Integer // JUMP
\90æ
\83\8c\83X
\94Ô
\8d\86
38 // *************************************************************************
39 // TThreadItem
\82ª
\90¶
\90¬
\82³
\82ê
\82½
40 // *************************************************************************
41 TThreadItemCreate = procedure(
45 // *************************************************************************
46 // TThreadItem
\82ª
\94j
\8aü
\82³
\82ê
\82½
47 // *************************************************************************
48 TThreadItemDispose = procedure(
52 // *************************************************************************
53 //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ð
\8ew
\8e¦
54 // *************************************************************************
55 TThreadItemOnDownload = function(
56 inInstance : DWORD //
\83C
\83\93\83X
\83^
\83\93\83X
57 ) : TDownloadState; stdcall; //
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
59 // *************************************************************************
60 //
\8f\91\82«
\8d\9e\82Ý
\82ð
\8ew
\8e¦
61 // *************************************************************************
62 TThreadItemOnWrite = function(
63 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
64 inName : PChar; //
\96¼
\91O(
\83n
\83\93\83h
\83\8b)
65 inMail : PChar; //
\83\81\81[
\83\8b\83A
\83h
\83\8c\83X
66 inMessage : PChar //
\96{
\95¶
67 ) : TDownloadState; stdcall; //
\8f\91\82«
\8d\9e\82Ý
\82ª
\90¬
\8c÷
\82µ
\82½
\82©
\82Ç
\82¤
\82©
69 // *************************************************************************
70 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é html
\82ð
\97v
\8b\81
71 // *************************************************************************
72 TThreadItemOnGetRes = function(
73 inInstance : DWORD; //
\83C
\83\93\83X
\83^
\83\93\83X
74 inNo : DWORD //
\95\
\8e¦
\82·
\82é
\83\8c\83X
\94Ô
\8d\86
75 ) : PChar; stdcall; //
\95\
\8e¦
\82·
\82é HTML
77 // *************************************************************************
78 //
\83\8c\83X
\94Ô
\8d\86 n
\82É
\91Î
\82·
\82é Dat
\82ð
\97v
\8b\81
79 // *************************************************************************
80 TThreadItemOnGetDat = function(
81 inInstance : DWORD; //
\83C
\83\93\83X
\83^
\83\93\83X
82 inNo : DWORD //
\95\
\8e¦
\82·
\82é
\83\8c\83X
\94Ô
\8d\86
83 ) : PChar; stdcall; //
\82Q
\82¿
\82á
\82ñ
\82Ë
\82é
\8c`
\8e®
\82ÌDat
85 // *************************************************************************
86 //
\83X
\83\8c\83b
\83h
\82Ì
\83w
\83b
\83_ html
\82ð
\97v
\8b\81
87 // *************************************************************************
88 TThreadItemOnGetHeader = function(
89 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
90 inOptionalHeader : PChar //
\92Ç
\89Á
\82Ì
\83w
\83b
\83_
91 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
93 // *************************************************************************
94 //
\83X
\83\8c\83b
\83h
\82Ì
\83t
\83b
\83^ html
\82ð
\97v
\8b\81
95 // *************************************************************************
96 TThreadItemOnGetFooter = function(
97 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
98 inOptionalFooter : PChar //
\92Ç
\89Á
\82Ì
\83t
\83b
\83^
99 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
101 // *************************************************************************
102 //
\82±
\82Ì ThreadItem
\82ª
\91®
\82·
\82é
\94Â
\82Ì URL
\82ð
\97v
\8b\81
103 // *************************************************************************
104 TThreadItemOnGetBoardURL = function(
105 inInstance : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
106 ) : PChar; stdcall; //
\94Â
\82Ì URL
108 function ThreadItemDat2HTML(
109 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
110 inDatRes : PChar; //
\96¼
\91O<>
\83\81\81[
\83\8b<>
\93ú
\95tID<>
\96{
\95¶<>
\82Å
\8d\
\90¬
\82³
\82ê
\82½
\83e
\83L
\83X
\83g
111 inResNo : DWORD; //
\83\8c\83X
\94Ô
\8d\86
112 inIsNew : Boolean //
\90V
\92\85\83\8c\83X
\82È
\82ç True
113 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
117 uses ExternalBoardManager, GikoSystem, BoardGroup, HTMLCreate, MojuUtils;
119 // *************************************************************************
120 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\8eæ
\93¾
\82·
\82é
121 // *************************************************************************
122 function ThreadItemGetLong(
124 propertyID : TThreadItemProperty
127 threadItem : TThreadItem;
130 threadItem := TThreadItem( instance );
132 tipContext: // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
133 Result := threadItem.Context;
134 tipNo: // : Integer //
\94Ô
\8d\86
135 Result := threadItem.No;
136 tipFileName: // : string //
\83X
\83\8c\83b
\83h
\83t
\83@
\83C
\83\8b\96¼
137 Result := DWORD( CreateResultString( threadItem.FileName ) );
138 tipTitle: // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
139 Result := DWORD( CreateResultString( threadItem.Title ) );
140 tipCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83\8d\81[
\83J
\83\8b\81j
141 Result := threadItem.Count;
142 tipAllResCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83T
\81[
\83o
\81j
143 Result := threadItem.AllResCount;
144 tipNewResCount: // : Integer //
\83X
\83\8c\83b
\83h
\90V
\92\85\90\94
145 Result := threadItem.NewResCount;
146 tipSize: // : Integer //
\83X
\83\8c\83b
\83h
\83T
\83C
\83Y
147 Result := threadItem.Size;
148 tipRound: // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
149 Result := DWORD( threadItem.Round );
150 tipRoundName: // : string //
\8f\84\89ñ
\96¼
151 Result := DWORD( CreateResultString( threadItem.RoundName ) );
152 tipIsLogFile: // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
153 Result := DWORD( threadItem.IsLogFile );
154 tipKokomade: // : Integer //
\83R
\83R
\82Ü
\82Å
\93Ç
\82ñ
\82¾
\94Ô
\8d\86
155 Result := threadItem.Kokomade;
156 tipNewReceive: // : Integer //
\83R
\83R
\82©
\82ç
\90V
\8bK
\8eó
\90M
157 Result := threadItem.NewReceive;
158 tipNewArrival: // : Boolean //
\90V
\92\85
159 Result := DWORD( threadItem.NewArrival );
160 tipUnRead: // : Boolean //
\96¢
\93Ç
\83t
\83\89\83O
161 Result := DWORD( threadItem.UnRead );
162 tipScrollTop: // : Integer //
\83X
\83N
\83\8d\81[
\83\8b\88Ê
\92u
163 Result := threadItem.ScrollTop;
164 tipDownloadHost: // : string //
\8d¡
\82Ì
\83z
\83X
\83g
\82Æ
\88á
\82¤
\8fê
\8d\87\82Ì
\83z
\83X
\83g
165 Result := DWORD( CreateResultString( threadItem.DownloadHost ) );
166 tipAgeSage: // : TThreadAgeSage //
\83A
\83C
\83e
\83\80\82Ì
\8fã
\82°
\89º
\82°
167 Result := DWORD( threadItem.AgeSage );
168 tipURL: // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
169 Result := DWORD( CreateResultString( threadItem.URL ) );
170 tipFilePath: //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
171 Result := DWORD( CreateResultString( threadItem.FilePath ) );
173 Result := threadItem.JumpAddress;
179 // *************************************************************************
180 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\90Ý
\92è
\82·
\82é
181 // *************************************************************************
182 procedure ThreadItemSetLong(
184 propertyID : TThreadItemProperty;
188 threadItem : TThreadItem;
191 threadItem := TThreadItem( instance );
193 tipContext: // : DWORD //
\8e©
\97R
\82É
\90Ý
\92è
\82µ
\82Ä
\82¢
\82¢
\92l
194 threadItem.Context := param;
195 tipNo: // : Integer //
\94Ô
\8d\86
196 threadItem.No := param;
197 tipFileName: // : string //
\83X
\83\8c\83b
\83h
\83t
\83@
\83C
\83\8b\96¼
198 threadItem.FileName := string( PChar( param ) );
199 tipTitle: // : string //
\83X
\83\8c\83b
\83h
\83^
\83C
\83g
\83\8b
200 threadItem.Title := string( PChar( param ) );
201 tipCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83\8d\81[
\83J
\83\8b\81j
202 threadItem.Count := param;
203 tipAllResCount: // : Integer //
\83X
\83\8c\83b
\83h
\83J
\83E
\83\93\83g
\81i
\83T
\81[
\83o
\81j
204 threadItem.AllResCount := param;
205 tipNewResCount: // : Integer //
\83X
\83\8c\83b
\83h
\90V
\92\85\90\94
206 threadItem.NewResCount := param;
207 tipSize: // : Integer //
\83X
\83\8c\83b
\83h
\83T
\83C
\83Y
208 threadItem.Size := param;
209 tipRound: // : Boolean //
\8f\84\89ñ
\83t
\83\89\83O
210 threadItem.Round := Boolean( param );
211 tipRoundName: // : string //
\8f\84\89ñ
\96¼
212 //threadItem.RoundName := string( PChar( param ) );
213 threadItem.RoundName := PChar( param );
214 tipIsLogFile: // : Boolean //
\83\8d\83O
\91¶
\8dÝ
\83t
\83\89\83O
215 threadItem.IsLogFile := Boolean( param );
216 tipKokomade: // : Integer //
\83R
\83R
\82Ü
\82Å
\93Ç
\82ñ
\82¾
\94Ô
\8d\86
217 threadItem.Kokomade := param;
218 tipNewReceive: // : Integer //
\83R
\83R
\82©
\82ç
\90V
\8bK
\8eó
\90M
219 threadItem.NewReceive := param;
220 tipNewArrival: // : Boolean //
\90V
\92\85
221 threadItem.NewArrival := Boolean( param );
222 tipUnRead: // : Boolean //
\96¢
\93Ç
\83t
\83\89\83O
223 threadItem.UnRead := Boolean( param );
224 tipScrollTop: // : Integer //
\83X
\83N
\83\8d\81[
\83\8b\88Ê
\92u
225 threadItem.ScrollTop := param;
226 tipDownloadHost: // : string //
\8d¡
\82Ì
\83z
\83X
\83g
\82Æ
\88á
\82¤
\8fê
\8d\87\82Ì
\83z
\83X
\83g
227 threadItem.DownloadHost := string( PChar( param ) );
228 tipAgeSage: // : TThreadAgeSage //
\83A
\83C
\83e
\83\80\82Ì
\8fã
\82°
\89º
\82°
229 threadItem.AgeSage := TGikoAgeSage( param );
230 tipURL: // : string //
\83X
\83\8c\83b
\83h
\82ð
\83u
\83\89\83E
\83U
\82Å
\95\
\8e¦
\82·
\82é
\8dÛ
\82Ì URL
231 threadItem.URL := string( PChar( param ) );
232 //tipFilePath: // : string //
\82±
\82Ì
\83X
\83\8c\82ª
\95Û
\91¶
\82³
\82ê
\82Ä
\82¢
\82é
\83p
\83X
233 // threadItem.FilePath := string( PChar( param ) );
235 threadItem.JumpAddress := param;
240 // *************************************************************************
241 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\8eæ
\93¾
\82·
\82é
242 // *************************************************************************
243 function ThreadItemGetDouble(
245 propertyID : TThreadItemProperty
248 threadItem : TThreadItem;
251 threadItem := TThreadItem( instance );
253 tipRoundDate: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
254 Result := threadItem.RoundDate;
255 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
256 Result := threadItem.LastModified;
263 // *************************************************************************
264 // TThreadItem
\83N
\83\89\83X
\82Ì
\83v
\83\8d\83p
\83e
\83B
\82ð
\90Ý
\92è
\82·
\82é
265 // *************************************************************************
266 procedure ThreadItemSetDouble(
268 propertyID : TThreadItemProperty;
272 threadItem : TThreadItem;
275 threadItem := TThreadItem( instance );
277 tipRoundDate: // : TDateTime //
\83X
\83\8c\83b
\83h
\82ð
\8eæ
\93¾
\82µ
\82½
\93ú
\8e\9e\81i
\8f\84\89ñ
\93ú
\8e\9e\81j
278 threadItem.RoundDate := param;
279 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
280 threadItem.LastModified := param;
285 // *************************************************************************
286 // 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é
287 // *************************************************************************
288 function ThreadItemDat2HTML(
289 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
290 inDatRes : PChar; //
\96¼
\91O<>
\83\81\81[
\83\8b<>
\93ú
\95tID<>
\96{
\95¶<>
\82Å
\8d\
\90¬
\82³
\82ê
\82½
\83e
\83L
\83X
\83g
291 inResNo : DWORD; //
\83\8c\83X
\94Ô
\8d\86
292 inIsNew : Boolean //
\90V
\92\85\83\8c\83X
\82È
\82ç True
293 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
295 threadItem : TThreadItem;
298 resLink : TResLinkRec;
301 threadItem := TThreadItem( inInstance );
302 //
\88ø
\90\94\82ð
\95ª
\89ð
303 THTMLCreate.DivideStrLine( string( inDatRes ) , @res);
304 if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin
305 res.FBody := THTMLCreate.DeleteLink(res.FBody);
306 resLink.FBbs := threadItem.ParentBoard.BBSID;
307 resLink.FKey := ChangeFileExt( threadItem.FileName, '' );
308 HTMLCreater.AddAnchorTag( @res );
309 HTMLCreater.ConvRes( @res, @resLink );
311 no := IntToStr( inResNo );
314 if GikoSys.Setting.UseSkin then begin
317 Result := CreateResultString( HTMLCreater.SkinedRes(
318 HTMLCreater.LoadFromSkin(
319 GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.Size
323 Result := CreateResultString( HTMLCreater.SkinedRes(
324 HTMLCreater.LoadFromSkin(
325 GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.Size
328 end else if GikoSys.Setting.UseCSS then begin
330 if res.FName = '' then
331 res.FName := ' ';
332 if res.FMailTo = '' 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 + '<span class="name"><b>' + res.FName + '</b></span> '
337 + '<span class="date_label">
\93\8a\8de
\93ú
\81F</span> '
338 + '<span class="date">' + res.FDateTime+ '</span></div>'
339 + '<div class="mes">' + res.FBody + ' </div>' )
340 else if GikoSys.Setting.ShowMail then
341 Result := CreateResultString( '<a name="' + no + '"></a>'
342 + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
343 + '<span class="name_label">
\96¼
\91O
\81F </span>'
344 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
345 + '<b>' + res.FName + '</b></a><span class="mail"> [' + res.FMailTo + ']</span>'
346 + '<span class="date_label">
\93\8a\8de
\93ú
\81F</span>'
347 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
348 + '<div class="mes">' + res.FBody + ' </div>' )
350 Result := CreateResultString( '<a name="' + no + '"></a>'
351 + '<div class="header"><span class="no"><a href="menu:' + no + '">' + no + '</a></span>'
352 + '<span class="name_label">
\96¼
\91O
\81F </span>'
353 + '<a class="name_mail" href="mailto:' + res.FMailTo + '">'
354 + '<b>' + res.FName + '</b></a>'
355 + '<span class="date_label">
\93\8a\8de
\93ú
\81F</span>'
356 + '<span class="date"> ' + res.FDateTime+ '</span></div>'
357 + '<div class="mes">' + res.FBody + ' </div>' );
359 //
\83f
\83t
\83H
\83\8b\83g
360 if res.FMailTo = '' then
361 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>' )
362 else if GikoSys.Setting.ShowMail then
363 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>' )
365 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>' );
376 // *************************************************************************
377 // TThreadItem
\83N
\83\89\83X
\82ð
\8c³
\82É
\83X
\83\8c\83b
\83h
\82Ì
\83w
\83b
\83_
\82ð
\8eæ
\93¾
\82·
\82é
378 // *************************************************************************
379 function ThreadItemGetHeader(
380 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
381 inOptionalHeader : PChar //
\92Ç
\89Á
\82Ì
\83w
\83b
\83_
382 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
384 threadItem : TThreadItem;
386 optionalHeader : string;
390 Writeln('ExternalBoardManager.ThreadItemGetHeader');
392 threadItem := TThreadItem( inInstance );
393 optionalHeader := string( inOptionalHeader );
396 if GikoSys.Setting.UseSkin then begin
398 skinHeader := HTMLCreater.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.Size );
399 if Length( optionalHeader ) > 0 then
401 StringReplace( skinHeader, '</head>', optionalHeader + '</head><a name="top"></a>', [] );
402 end else if GikoSys.Setting.UseCSS then begin
406 '<title>' + threadItem.Title + '</title>' +
407 '<link rel="stylesheet" href="'+ GikoSys.Setting.GetStyleSheetDir + GikoSys.Setting.CSSFileName +'" type="text/css">' +
411 '<a name="top"></a>' +
412 '<div class="title">' + threadItem.Title + '</div>';
414 //
\83f
\83t
\83H
\83\8b\83g
417 '<title>' + threadItem.Title + '</title>' +
420 '<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">' +
421 '<a name="top"></a>' +
422 '<font size=+1 color="#FF0000">' + threadItem.Title + '</font>' +
428 Result := CreateResultString( skinHeader );
432 // *************************************************************************
433 // TThreadItem
\83N
\83\89\83X
\82ð
\8c³
\82É
\83X
\83\8c\83b
\83h
\82Ì
\83t
\83b
\83^
\82ð
\8eæ
\93¾
\82·
\82é
434 // *************************************************************************
435 function ThreadItemGetFooter(
436 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
437 inOptionalFooter : PChar //
\92Ç
\89Á
\82Ì
\83t
\83b
\83^
438 ) : PChar; stdcall; //
\90®
\8c`
\82³
\82ê
\82½ HTML
440 threadItem : TThreadItem;
442 optionalFooter : string;
446 Writeln('ExternalBoardManager.ThreadItemGetFooter');
448 threadItem := TThreadItem( inInstance );
449 optionalFooter := string( inOptionalFooter );
452 if GikoSys.Setting.UseSkin then begin
454 skinFooter := HTMLCreater.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.Size );
455 if Length( optionalFooter ) > 0 then
457 StringReplace( skinFooter, '</body>', optionalFooter + '</body>', [] );
458 end else if GikoSys.Setting.UseCSS then begin
463 '<a name="last"></a>' +
466 //
\83f
\83t
\83H
\83\8b\83g
471 '<a name="last"></a>' +
477 Result := CreateResultString( skinFooter );
481 // *************************************************************************
482 //
\83X
\83\8c\83b
\83h
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\90i
\8ds
\82µ
\82½
483 // *************************************************************************
484 procedure ThreadItemWork(
485 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
486 inWorkCount : Integer //
\8c»
\8dÝ
\82Ì
\90i
\95à
\8fó
\8bµ(
\83J
\83E
\83\93\83g)
490 if Assigned( OnWork ) then
491 OnWork( TObject( inInstance ), wmRead, inWorkCount );
495 // *************************************************************************
496 //
\83X
\83\8c\83b
\83h
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8en
\82Ü
\82Á
\82½
497 // *************************************************************************
498 procedure ThreadItemWorkBegin(
499 inInstance : DWORD; // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
500 inWorkCountMax : Integer //
\92Ê
\90M
\82Ì
\8fI
\82í
\82è
\82ð
\8e¦
\82·
\83J
\83E
\83\93\83g
504 if Assigned( OnWorkBegin ) then
505 OnWorkBegin( TObject( inInstance ), wmRead, inWorkCountMax );
509 // *************************************************************************
510 //
\83X
\83\8c\83b
\83h
\82Ì
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\8fI
\82í
\82Á
\82½
511 // *************************************************************************
512 procedure ThreadItemWorkEnd(
513 inInstance : DWORD // ThreadItem
\82Ì
\83C
\83\93\83X
\83^
\83\93\83X
517 if Assigned( OnWorkEnd ) then
518 OnWorkEnd( TObject( inInstance ), wmRead );