Develop and Download Open Source Software

Browse CVS Repository

Annotation of /gikonavigoeson/gikonavi/ExternalThreadItem.pas

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


Revision 1.17 - (hide 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 yoffy 1.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 yoffy 1.2 // 譖ク縺崎セシ縺ソ繧呈欠遉コ
60     // *************************************************************************
61     TThreadItemOnWrite = function(
62     inInstance : DWORD; // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
63     inName : PChar; // 蜷榊燕(繝上Φ繝峨Ν)
64     inMail : PChar; // 繝。繝シ繝ォ繧「繝峨Ξ繧ケ
65     inMessage : PChar // 譛ャ譁?/span>
66     ) : TDownloadState; stdcall; // 譖ク縺崎セシ縺ソ縺梧?蜉溘@縺溘°縺ゥ縺?°
67    
68     // *************************************************************************
69 yoffy 1.1 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k html 繧定ヲ∵ア?/span>
70     // *************************************************************************
71     TThreadItemOnGetRes = function(
72     inInstance : DWORD; // 繧、繝ウ繧ケ繧ソ繝ウ繧ケ
73     inNo : DWORD // 陦ィ遉コ縺吶k繝ャ繧ケ逡ェ蜿キ
74     ) : PChar; stdcall; // 陦ィ遉コ縺吶k HTML
75    
76     // *************************************************************************
77 h677 1.9 // 繝ャ繧ケ逡ェ蜿キ n 縺ォ蟇セ縺吶k Dat 繧定ヲ∵ア?/span>
78     // *************************************************************************
79     TThreadItemOnGetDat = function(
80     inInstance : DWORD; // 繧、繝ウ繧ケ繧ソ繝ウ繧ケ
81     inNo : DWORD // 陦ィ遉コ縺吶k繝ャ繧ケ逡ェ蜿キ
82     ) : PChar; stdcall; // ?偵■繧?s縺ュ繧句ス「蠑上?Dat
83    
84     // *************************************************************************
85 yoffy 1.1 // 繧ケ繝ャ繝?ラ縺ョ繝倥ャ繝? 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 yoffy 1.2 // *************************************************************************
101     // 縺薙? ThreadItem 縺悟ア槭☆繧区攸縺ョ URL 繧定ヲ∵ア?/span>
102     // *************************************************************************
103     TThreadItemOnGetBoardURL = function(
104     inInstance : DWORD // ThreadItem 縺ョ繧、繝ウ繧ケ繧ソ繝ウ繧ケ
105     ) : PChar; stdcall; // 譚ソ縺ョ URL
106 yoffy 1.1
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 h677 1.15 uses ExternalBoardManager, GikoSystem, BoardGroup, HTMLCreate, MojuUtils;
117 yoffy 1.1
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 h677 1.13 //threadItem.RoundName := string( PChar( param ) );
210     threadItem.RoundName := PChar( param );
211 yoffy 1.1 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 h677 1.13 //tipFilePath: // : string // 縺薙?繧ケ繝ャ縺御ソ晏ュ倥&繧後※縺?k繝代せ
230     // threadItem.FilePath := string( PChar( param ) );
231 yoffy 1.1 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 h677 1.17 DivideStrLine( string( inDatRes ) , @res);
298 h677 1.6 if AnsiCompareStr( string( inDatRes ) , '' ) <> 0 then begin
299 h677 1.13 res.FBody := GikoSys.DeleteLink(res.FBody);
300 h677 1.16 res.FBody := HTMLCreater.AddAnchorTag( res.FBody );
301 h677 1.17 res.FBody := HTMLCreater.ConvRes( res.FBody, threadItem.ParentBoard.BBSID, ChangeFileExt( threadItem.FileName, '' ));
302 h677 1.8
303 h677 1.6 no := IntToStr( inResNo );
304 yoffy 1.1
305 h677 1.6 try
306     if GikoSys.Setting.UseSkin then begin
307     // 繧ケ繧ュ繝ウ
308     if inIsNew then
309 h677 1.14 Result := CreateResultString( HTMLCreater.SkinedRes(
310     HTMLCreater.LoadFromSkin(
311 h677 1.11 GikoSys.Setting.GetSkinNewResFileName, threadItem, threadItem.Size
312 h677 1.17 ), @res, no
313 h677 1.6 ) )
314     else
315 h677 1.14 Result := CreateResultString( HTMLCreater.SkinedRes(
316     HTMLCreater.LoadFromSkin(
317 h677 1.11 GikoSys.Setting.GetSkinResFileName, threadItem, threadItem.Size
318 h677 1.17 ), @res, no
319 h677 1.6 ) );
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 yoffy 1.1
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 h677 1.14 skinHeader := HTMLCreater.LoadFromSkin( GikoSys.Setting.GetSkinHeaderFileName, threadItem, threadItem.Size );
391 yoffy 1.1 if Length( optionalHeader ) > 0 then
392     skinHeader :=
393 yoffy 1.3 StringReplace( skinHeader, '</head>', optionalHeader + '</head><a name="top"></a>', [] );
394 yoffy 1.1 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 yoffy 1.3 '<a name="top"></a>' +
404 yoffy 1.1 '<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 yoffy 1.3 '<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 yoffy 1.1 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 yoffy 1.3 // 繧ケ繧ュ繝ウ
446 h677 1.14 skinFooter := HTMLCreater.LoadFromSkin( GikoSys.Setting.GetSkinFooterFileName, threadItem, threadItem.Size );
447 yoffy 1.1 if Length( optionalFooter ) > 0 then
448     skinFooter :=
449     StringReplace( skinFooter, '</body>', optionalFooter + '</body>', [] );
450 yoffy 1.3 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 yoffy 1.1 end else begin
458 yoffy 1.3 // 繝?ヵ繧ゥ繝ォ繝?/span>
459     skinFooter :=
460     '</dl>' +
461     optionalFooter +
462     '</body></html>' +
463     '<a name="last"></a>' +
464     '</body></html>';
465 yoffy 1.1 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