OSDN Git Service

・コメント強化。
[gikonavigoeson/gikonavi.git] / res / ExternalBoardPlugIn / BoardItem.pas
1 unit BoardItem;
2
3 {
4         ExternalBoardPlugIn BoardItem
5         \94Â\8fî\95ñ\82ð\95Û\8e\9d\82·\82é TBoardItem \83N\83\89\83X
6 }
7
8 interface
9
10 uses
11         Windows, SysUtils,
12         PlugInMain, ThreadItem;
13
14 type
15         // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\90Ý\92è\81^\8eæ\93¾ ID
16         TBoardItemProperty = (
17                 bipContext,                                                     // : DWORD                              // \8e©\97R\82É\90Ý\92è\82µ\82Ä\82¢\82¢\92l
18                 bipItems,                                                               // : TThreadItem        // \94Â\82É\8cq\82ª\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h
19                 bipNo,                                                                  // : Integer                    // \94Ô\8d\86
20                 bipTitle,                                                               // : string                             // \94Â\83^\83C\83g\83\8b
21                 bipRoundDate,                                           // : TDateTime          // \94Â\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
22                 bipLastModified,                                // : TDateTime          // \94Â\82ª\8dX\90V\82³\82ê\82Ä\82¢\82é\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81j
23                 bipLastGetTime,                                 // : TDateTime          // \83X\83\8c\83b\83h\82Ü\82½\82Í\83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\8cã\82É\8dX\90V\82µ\82½\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81E\8f\91\82«\8d\9e\82Ý\8e\9e\82É\8eg\97p\82·\82é\81j
24                 bipRound,                                                               // : Boolean                    // \8f\84\89ñ\97\\96ñ
25                 bipRoundName,                                           // : string                             // \8f\84\89ñ\96¼
26                 bipIsLogFile,                                           // : Boolean                    // \83\8d\83O\91\8dÝ\83t\83\89\83O
27                 bipUnRead,                                                      // : Integer                    // \83X\83\8c\83b\83h\96¢\93Ç\90\94
28                 bipURL,                                                                 // : string                             // \94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
29                 bipFilePath                                                     // : string                             // \82±\82Ì\94Â\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
30         );
31
32         // *************************************************************************
33         // \8ae\83X\83\8c\82Ì\8fî\95ñ\82ð\95Ô\8bp
34         // *************************************************************************
35         TBoardItemEnumThreadCallBack = function(
36                 inInstance      : DWORD;        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
37                 inURL                           : PChar;        // \83X\83\8c\83b\83h\82Ì URL
38                 inTitle                 : PChar;        // \83X\83\8c\83^\83C
39                 inCount                 : DWORD         // \83\8c\83X\82Ì\90\94
40         ) : Boolean; stdcall;           // \97ñ\8b\93\82ð\91±\82¯\82é\82È\82ç True
41
42
43
44         // =========================================================================
45         // TBoardItem \83N\83\89\83X\82É\8aÖ\82·\82é API
46         // =========================================================================
47
48         // *************************************************************************
49         // BoardItemGetItems
50         // TBoardItem \83N\83\89\83X\82É\8cq\82ª\82ê\82Ä\82¢\82é TThreadItem \83N\83\89\83X\82ð\8eæ\93¾\82·\82é
51         // *************************************************************************
52         TBoardItemGetItems = function(
53                 inInstance      : DWORD;        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
54                 inIndex                 : Integer       // \8eæ\93¾\82·\82é TThreadItem \82Ì\83C\83\93\83f\83b\83N\83X
55         ) : DWORD; stdcall;                     // TThreadItem \82Ì\83C\83\93\83X\83^\83\93\83X
56
57         // *************************************************************************
58         // BoardItemGetLong
59         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
60         // *************************************************************************
61         TBoardItemGetLong = function(
62                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
63                 inPropertyID    : TBoardItemProperty    // \8eæ\93¾\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
64         ) : DWORD; stdcall;                                                                             // \96ß\82è\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
65
66         // *************************************************************************
67         // BoardItemSetLong
68         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é
69         // *************************************************************************
70         TBoardItemSetLong = procedure(
71                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
72                 inPropertyID    : TBoardItemProperty;   // \90Ý\92è\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
73                 inParam : DWORD                                                                                 // \90Ý\92è\82·\82é\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
74         ); stdcall;
75
76         // *************************************************************************
77         // BoardItemGetDouble
78         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\8eæ\93¾\82·\82é
79         // *************************************************************************
80         TBoardItemGetDouble = function(
81                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
82         inPropertyID    : TBoardItemProperty    // \8eæ\93¾\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
83         ) : Double; stdcall;                                                                    // \96ß\82è\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
84
85         // *************************************************************************
86         // BoardItemSetDouble
87         // TBoardItem \83N\83\89\83X\82Ì\83v\83\8d\83p\83e\83B\82ð\90Ý\92è\82·\82é
88         // *************************************************************************
89         TBoardItemSetDouble = procedure(
90                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
91                 inPropertyID    : TBoardItemProperty;   // \90Ý\92è\82·\82é\83v\83\8d\83p\83e\83B\82Ì\8eí\97Þ
92                 inParam                         : Double                                                        // \90Ý\92è\82·\82é\92l(\88Ó\96¡\82Í inPropertyID \82É\82æ\82Á\82Ä\88Ù\82È\82é)
93         ); stdcall;
94
95         // *************************************************************************
96         // \94Â\82ª\95Û\97L\82·\82é\83X\83\8c\88ê\97\97\82Ì\97ñ\8b\93\8f\88\97\9d\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\94C\82¹\82é
97         // *************************************************************************
98         TBoardItemEnumThread = procedure(
99                 inInstance              : DWORD;                                                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
100                 inCallBack              : TBoardItemEnumThreadCallBack; // \83X\83\8c\82Ì\8fî\95ñ\82ð\95Ô\8bp\82·\82é\83\8b\81[\83`\83\93
101                 inSubjectText   : PChar                                                         // \83t\83@\83C\83\8b\96¼,\83X\83\8c\83^\83C(\83\8c\83X\90\94\82Å\8d\\90¬\82³\82ê\82é\89ü\8ds\8bæ\90Ø\82è\83e\83L\83X\83g
102         ); stdcall;
103
104         // *************************************************************************
105         // BoardItemWork
106         // \83_\83E\83\93\83\8d\81[\83h\82Ì\90i\95à\8fó\8bµ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
107         // *************************************************************************
108         TBoardItemWork = procedure(
109                 inInstance      : DWORD;                        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
110                 inWorkCount     : DWORD                         // \8c»\8dÝ\82Ì\90i\95à\8fó\8bµ(\83J\83E\83\93\83g)
111         ); stdcall;
112
113         // *************************************************************************
114         // BoardItemWorkBegin
115         // \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
116         // *************************************************************************
117         TBoardItemWorkBegin = procedure(
118                 inInstance                      : DWORD;        // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
119                 inWorkCountMax  : DWORD         // \92Ê\90M\82Ì\8fI\82í\82è\82ð\8e¦\82·\83J\83E\83\93\83g
120         ); stdcall;
121
122         // *************************************************************************
123         // BoardItemWorkEnd
124         // \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
125         // *************************************************************************
126         TBoardItemWorkEnd = procedure(
127                 inInstance      : DWORD                         // TBoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
128         ); stdcall;
129
130
131
132         // =========================================================================
133         // TBoardItem \83N\83\89\83X\82É\8aÖ\82·\82é\83C\83x\83\93\83g
134         // =========================================================================
135
136         // *************************************************************************
137         // TBoardItem \82ª\90\90¬\82³\82ê\82½
138         // *************************************************************************
139         TBoardItemOnCreateEvent = procedure(
140                 instance : DWORD
141         );
142
143         // *************************************************************************
144         // TBoardItem \82ª\94j\8aü\82³\82ê\82½
145         // *************************************************************************
146         TBoardItemOnDisposeEvent = procedure(
147                 instance : DWORD
148         );
149
150         // *************************************************************************
151         // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
152         // *************************************************************************
153         TBoardItemOnDownloadEvent = function : TDownloadState of object;
154
155         // *************************************************************************
156         // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
157         // *************************************************************************
158         TBoardItemOnCreateThreadEvent = function(
159                 inSubject       : string;                                       // \83X\83\8c\83^\83C
160                 inName          : string;                                       // \96¼\91O(\83n\83\93\83h\83\8b)
161                 inMail          : string;                                       // \83\81\81[\83\8b\83A\83h\83\8c\83X
162                 inMessage       : string                                        // \96{\95
163         ) : TDownloadState of object;   // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
164
165         // *************************************************************************
166         // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
167         // *************************************************************************
168         TBoardItemOnEnumThreadEvent = procedure(
169                 inCallBack : TBoardItemEnumThreadCallBack
170         ) of object;
171
172         // *************************************************************************
173         // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
174         // *************************************************************************
175         TBoardItemOnFileName2ThreadURLEvent = function(
176                 inFileName : string
177         ) : string of object;
178
179
180         // =========================================================================
181         // TBoardItem \83N\83\89\83X
182         // =========================================================================
183         TBoardItem = class(TObject)
184         private
185                 // \83N\83\89\83X\82Ì\83C\83\93\83X\83^\83\93\83X
186                 FInstance                                                       : DWORD;
187
188                 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
189                 FOnDownload                                             : TBoardItemOnDownloadEvent;
190                 // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
191                 FOnCreateThread                         : TBoardItemOnCreateThreadEvent;
192                 // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
193                 FOnEnumThread                                   : TBoardItemOnEnumThreadEvent;
194                 // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
195                 FOnFileName2ThreadURL   : TBoardItemOnFileName2ThreadURLEvent;
196
197         public
198                 // \83R\83\93\83X\83g\83\89\83N\83^
199                 constructor Create( inInstance : DWORD );
200
201                 // \94Â\82ª\95Û\97L\82·\82é\83X\83\8c\88ê\97\97\82Ì\97ñ\8b\93\8f\88\97\9d\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\94C\82¹\82é
202                 procedure       EnumThread( inCallBack : TBoardItemEnumThreadCallBack; inSubjectText : string );
203                 // \83_\83E\83\93\83\8d\81[\83h\82Ì\90i\95à\8fó\8bµ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
204                 procedure       Work( inWorkCount : Integer );
205                 // \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
206                 procedure       WorkBegin( inWorkCountMax : Integer );
207                 // \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
208                 procedure       WorkEnd;
209
210         private
211                 // ===== \83v\83\8d\83p\83e\83B\82Ì\8aÇ\97\9d\82ð\93\9d\8a\87\82·\82é\83\89\83b\83p
212                 function        GetLong( propertyID : TBoardItemProperty ) : DWORD;
213                 procedure       SetLong( propertyID : TBoardItemProperty; param : DWORD );
214                 function        GetDouble( propertyID : TBoardItemProperty ) : Double;
215                 procedure       SetDouble( propertyID : TBoardItemProperty; param : Double );
216
217                 // ===== \83v\83\8d\83p\83e\83B\82Ì\8eæ\93¾\81^\90Ý\92è\82ð\96\96\92[\82É\92ñ\8b\9f\82·\82é\83\89\83b\83p
218                 function        GetItems( index : Integer ) : TThreadItem;
219                 function        GetNo : Integer;
220                 procedure       SetNo( param : Integer );
221                 function        GetTitle : string;
222                 procedure       SetTitle( param : string );
223                 function        GetRoundDate : TDateTime;
224                 procedure       SetRoundDate( param : TDateTime );
225                 function        GetLastModified : TDateTime;
226                 procedure       SetLastModified( param : TDateTime );
227                 function        GetLastGetTime : TDateTime;
228                 procedure       SetLastGetTime( param : TDateTime );
229                 function        GetRound : Boolean;
230                 procedure       SetRound( param : Boolean );
231                 function        GetRoundName : string;
232                 procedure       SetRoundName( param : string );
233                 function        GetIsLogFile : Boolean;
234                 procedure       SetIsLogFile( param : Boolean );
235                 function        GetUnRead : Integer;
236                 procedure       SetUnRead( param : Integer );
237                 function        GetURL : string;
238                 procedure       SetURL( param : string );
239                 function        GetFilePath : string;
240                 procedure       SetFilePath( param : string );
241
242         protected
243                 property        Instance                        : DWORD                                         read FInstance;
244
245         public
246                 // ===== \83C\83x\83\93\83g
247                 property        OnDownload                      : TBoardItemOnDownloadEvent                     read FOnDownload write FOnDownload;
248                 property        OnCreateThread  : TBoardItemOnCreateThreadEvent read FOnCreateThread write FOnCreateThread;
249                 property        OnEnumThread            : TBoardItemOnEnumThreadEvent           read FOnEnumThread write FOnEnumThread;
250                 property        OnFileName2ThreadURL    : TBoardItemOnFileName2ThreadURLEvent   read FOnFileName2ThreadURL write FOnFileName2ThreadURL;
251
252                 // ===== ThreadItem \82É\8eæ\93¾\81^\90Ý\92è\89Â\94\\82È\83v\83\8d\83p\83e\83B
253                 // \94Â\82É\8cq\82ª\82ê\82Ä\82¢\82é\83X\83\8c\83b\83h
254                 property        Items[index : Integer] : TThreadItem    read GetItems;
255                 // \94Ô\8d\86
256                 property        No                                              : Integer                                       read GetNo write SetNo;
257                 // \94Â\83^\83C\83g\83\8b
258                 property        Title                                   : string                                        read GetTitle write SetTitle;
259                 // \94Â\82ð\8eæ\93¾\82µ\82½\93ú\8e\9e\81i\8f\84\89ñ\93ú\8e\9e\81j
260                 property        RoundDate                       : TDateTime                             read GetRoundDate write SetRoundDate;
261                 // \94Â\82ª\8dX\90V\82³\82ê\82Ä\82¢\82é\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81j
262                 property        LastModified    : TDateTime                             read GetLastModified write SetLastModified;
263                 // \83X\83\8c\83b\83h\82Ü\82½\82Í\83X\83\8c\83b\83h\88ê\97\97\82ð\8dÅ\8cã\82É\8dX\90V\82µ\82½\93ú\8e\9e\81i\83T\81[\83o\91¤\93ú\8e\9e\81E\8f\91\82«\8d\9e\82Ý\8e\9e\82É\8eg\97p\82·\82é\81j
264                 property        LastGetTime             : TDateTime                             read GetLastGetTime write SetLastGetTime;
265                 // \8f\84\89ñ\83t\83\89\83O
266                 property        Round                                   : Boolean                                       read GetRound write SetRound;
267                 // \8f\84\89ñ\96¼
268                 property        RoundName                       : string                                        read GetRoundName write SetRoundName;
269                 // \83\8d\83O\91\8dÝ\83t\83\89\83O
270                 property        IsLogFile                       : Boolean                                       read GetIsLogFile write SetIsLogFile;
271                 // \83X\83\8c\83b\83h\96¢\93Ç\90\94
272                 property        UnRead                          : Integer                                       read GetUnRead write SetUnRead;
273                 // \94Â\82ð\83u\83\89\83E\83U\82Å\95\\8e¦\82·\82é\8dÛ\82Ì URL
274                 property        URL                                             : string                                        read GetURL write SetURL;
275                 // \82±\82Ì\94Â\82ª\95Û\91\82³\82ê\82Ä\82¢\82é\83p\83X
276                 property        FilePath                        : string                                        read GetFilePath write SetFilePath;
277         end;
278
279 var
280         // ===== API \82Ì\83A\83h\83\8c\83X
281         BoardItemGetItems               : TBoardItemGetItems;
282         BoardItemGetLong                : TBoardItemGetLong;
283         BoardItemSetLong                : TBoardItemSetLong;
284         BoardItemGetDouble      : TBoardItemGetDouble;
285         BoardItemSetDouble      : TBoardItemSetDouble;
286         BoardItemEnumThread     : TBoardItemEnumThread;
287         BoardItemWork                           : TBoardItemWork;
288         BoardItemWorkBegin      : TBoardItemWorkBegin;
289         BoardItemWorkEnd                : TBoardItemWorkEnd;
290         // ===== \83C\83x\83\93\83g\83n\83\93\83h\83\89
291         BoardItemOnCreate               : TBoardItemOnCreateEvent;
292         BoardItemOnDispose      : TBoardItemOnDisposeEvent;
293
294 // ===== TBoardItem \83N\83\89\83X\82ð\8aÇ\97\9d\82·\82é\8aÖ\90\94
295 procedure LoadInternalBoardItemAPI(
296         inModule : HMODULE
297 );
298 procedure BoardItemOnCreateOfTBoardItem(
299         inInstance : DWORD
300 );
301 procedure BoardItemOnDisposeOfTBoardItem(
302         inInstance : DWORD
303 );
304
305 implementation
306
307 // *************************************************************************
308 // TBoardItem \82Ì\83R\83\93\83X\83g\83\89\83N\83^
309 // *************************************************************************
310 constructor TBoardItem.Create(
311         inInstance : DWORD                                                                                      // \83C\83\93\83X\83^\83\93\83X
312 );
313 begin
314
315         inherited Create;
316         FInstance                                               := inInstance;
317         OnDownload                                              := nil;
318         OnCreateThread                          := nil;
319         OnEnumThread                                    := nil;
320         OnFileName2ThreadURL    := nil;
321
322 end;
323
324 // *************************************************************************
325 // \94Â\82ª\95Û\97L\82·\82é\83X\83\8c\88ê\97\97\82Ì\97ñ\8b\93\8f\88\97\9d\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\94C\82¹\82é
326 // *************************************************************************
327 procedure       TBoardItem.EnumThread(
328         inCallBack              : TBoardItemEnumThreadCallBack;
329         inSubjectText   : string        // \83t\83@\83C\83\8b\96¼<>\83X\83\8c\83^\83\82Å\8d\\90¬\82³\82ê\82½\89ü\8ds\8bæ\90Ø\82è\83e\83L\83X\83g
330 );
331 begin
332
333         BoardItemEnumThread( FInstance, inCallBack, PChar( inSubjectText ) );
334
335 end;
336
337 // *************************************************************************
338 // \83_\83E\83\93\83\8d\81[\83h\82Ì\90i\95à\8fó\8bµ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
339 // *************************************************************************
340 procedure       TBoardItem.Work(
341         inWorkCount : Integer                   // \8c»\8dÝ\82Ì\90i\95à\8fó\8bµ(\83J\83E\83\93\83g)
342 );
343 begin
344
345         BoardItemWork( FInstance, inWorkCount );
346
347 end;
348
349 // *************************************************************************
350 // \83_\83E\83\93\83\8d\81[\83h\82ª\8en\82Ü\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
351 // *************************************************************************
352 procedure       TBoardItem.WorkBegin(
353         inWorkCountMax : Integer        // \92Ê\90M\82Ì\8fI\82í\82è\82ð\8e¦\82·\83J\83E\83\93\83g
354 );
355 begin
356
357         BoardItemWorkBegin( FInstance, inWorkCountMax );
358
359 end;
360
361 // *************************************************************************
362 // \83_\83E\83\93\83\8d\81[\83h\82ª\8fI\82í\82Á\82½\82±\82Æ\82ð\83v\83\8d\83O\83\89\83\80\96{\91Ì\82É\93`\82¦\82é
363 // *************************************************************************
364 procedure       TBoardItem.WorkEnd;
365 begin
366
367         BoardItemWorkEnd( FInstance );
368
369 end;
370
371
372
373 // =========================================================================
374 // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\82Ì\8aÇ\97\9d\82ð\93\9d\8a\87\82·\82é\83\89\83b\83p
375 // =========================================================================
376 function        TBoardItem.GetLong( propertyID : TBoardItemProperty ) : DWORD;
377 begin
378         Result := BoardItemGetLong( FInstance, propertyID );
379 end;
380
381 procedure       TBoardItem.SetLong( propertyID : TBoardItemProperty; param : DWORD );
382 begin
383         BoardItemSetLong( FInstance, propertyID, param );
384 end;
385
386 function        TBoardItem.GetDouble( propertyID : TBoardItemProperty ) : Double;
387 begin
388         Result := BoardItemGetDouble( FInstance, propertyID );
389 end;
390
391 procedure       TBoardItem.SetDouble( propertyID : TBoardItemProperty; param : Double );
392 begin
393         BoardItemSetDouble( FInstance, propertyID, param );
394 end;
395
396
397
398 // =========================================================================
399 // \81«\82±\82±\82©\82ç\81«
400 // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\82Ì\8eæ\93¾\81^\90Ý\92è\82ð\96\96\92[\82É\92ñ\8b\9f\82·\82é\83\89\83b\83p
401 // =========================================================================
402 function        TBoardItem.GetItems(
403         index : Integer
404 ) : TThreadItem;
405 var
406         tmp : DWORD;
407 begin
408         tmp                     := BoardItemGetItems( FInstance, index );
409         Result  := TThreadItem( ThreadItemGetLong( tmp, tipContext ) );
410 end;
411
412 function        TBoardItem.GetNo : Integer;
413 begin
414         Result := GetLong( bipNo );
415 end;
416
417 procedure       TBoardItem.SetNo( param : Integer );
418 begin
419         SetLong( bipNo, param );
420 end;
421
422 function        TBoardItem.GetTitle : string;
423 var
424         tmp : PChar;
425 begin
426         tmp                     := PChar( GetLong( bipTitle ) );
427         Result  := string( tmp );
428         DisposeResultString( tmp );
429 end;
430
431 procedure       TBoardItem.SetTitle( param : string );
432 begin
433         SetLong( bipTitle, DWORD( PChar( param ) ) );
434 end;
435
436 function        TBoardItem.GetRoundDate : TDateTime;
437 begin
438         Result := GetDouble( bipRoundDate );
439 end;
440
441 procedure       TBoardItem.SetRoundDate( param : TDateTime );
442 begin
443         SetDouble( bipRoundDate, param );
444 end;
445
446 function        TBoardItem.GetLastModified : TDateTime;
447 begin
448         Result := GetDouble( bipLastModified );
449 end;
450
451 procedure       TBoardItem.SetLastModified( param : TDateTime );
452 begin
453         SetDouble( bipLastModified, param );
454 end;
455
456 function        TBoardItem.GetLastGetTime : TDateTime;
457 begin
458         Result := GetDouble( bipLastGetTime );
459 end;
460
461 procedure       TBoardItem.SetLastGetTime( param : TDateTime );
462 begin
463         SetDouble( bipLastGetTime, param );
464 end;
465
466 function        TBoardItem.GetRound : Boolean;
467 begin
468         Result := Boolean( GetLong( bipRound ) );
469 end;
470
471 procedure       TBoardItem.SetRound( param : Boolean );
472 begin
473         SetLong( bipRound, DWORD( param ) );
474 end;
475
476 function        TBoardItem.GetRoundName : string;
477 var
478         tmp : PChar;
479 begin
480         tmp                     := PChar( GetLong( bipRoundName ) );
481         Result  := string( tmp );
482         DisposeResultString( tmp );
483 end;
484
485 procedure       TBoardItem.SetRoundName( param : string );
486 begin
487         SetLong( bipRoundName, DWORD( PChar( param ) ) );
488 end;
489
490 function        TBoardItem.GetIsLogFile : Boolean;
491 begin
492         Result := Boolean( GetLong( bipIsLogFile ) );
493 end;
494
495 procedure       TBoardItem.SetIsLogFile( param : Boolean );
496 begin
497         SetLong( bipIsLogFile, DWORD( param ) );
498 end;
499
500 function        TBoardItem.GetUnRead : Integer;
501 begin
502         Result := GetLong( bipUnRead );
503 end;
504
505 procedure       TBoardItem.SetUnRead( param : Integer );
506 begin
507         SetLong( bipUnRead, param );
508 end;
509
510 function        TBoardItem.GetURL : string;
511 var
512         tmp : PChar;
513 begin
514         tmp                     := PChar( GetLong( bipURL ) );
515         Result  := string( tmp );
516         DisposeResultString( tmp );
517 end;
518
519 procedure       TBoardItem.SetURL( param : string );
520 begin
521         SetLong( bipURL, DWORD( PChar( param ) ) );
522 end;
523
524 function        TBoardItem.GetFilePath : string;
525 var
526         tmp : PChar;
527 begin
528         tmp                     := PChar( GetLong( bipFilePath ) );
529         Result  := string( tmp );
530         DisposeResultString( tmp );
531 end;
532
533 procedure       TBoardItem.SetFilePath( param : string );
534 begin
535         SetLong( bipFilePath, DWORD( PChar( param ) ) );
536 end;
537 // =========================================================================
538 // TBoardItem \82Ì\83v\83\8d\83p\83e\83B\82Ì\8eæ\93¾\81^\90Ý\92è\82ð\96\96\92[\82É\92ñ\8b\9f\82·\82é\83\89\83b\83p
539 // \81ª\82±\82±\82Ü\82Å\81ª
540 // =========================================================================
541
542
543
544
545 // =========================================================================
546 // TBoardItem \83N\83\89\83X\82ð\8aÇ\97\9d\82·\82é\8aÖ\90\94
547 // =========================================================================
548
549 // *************************************************************************
550 // TBoardItem \82ª\90\90¬\82³\82ê\82½\8fê\8d\87\82Ì\83f\83t\83H\83\8b\83g\82Ì\8f\88\92u(TBoardItem \82ð\90\90¬\82·\82é)
551 // *************************************************************************
552 procedure BoardItemOnCreateOfTBoardItem(
553         inInstance : DWORD
554 );
555 var
556         boardItem : TBoardItem;
557 begin
558
559         boardItem := TBoardItem.Create( inInstance );
560         boardItemSetLong( inInstance, bipContext, DWORD( BoardItem ) );
561
562 end;
563
564 // *************************************************************************
565 // TBoardItem \82ª\94j\8aü\82³\82ê\82½\8fê\8d\87\82Ì\83f\83t\83H\83\8b\83g\82Ì\8f\88\92u(TBoardItem \82ð\94j\8aü\82·\82é)
566 // *************************************************************************
567 procedure BoardItemOnDisposeOfTBoardItem(
568         inInstance : DWORD
569 );
570 var
571         boardItem : TBoardItem;
572 begin
573
574         boardItem := TBoardItem( BoardItemGetLong( inInstance, bipContext ) );
575         boardItem.Free;
576
577 end;
578
579 // *************************************************************************
580 // PlugInSDK \82Ì TBoardItem \82É\8aÖ\82·\82é API \82ð\8f\89\8aú\89»
581 // *************************************************************************
582 procedure LoadInternalBoardItemAPI(
583         inModule : HMODULE
584 );
585 begin
586
587         // ===== \83C\83\93\83X\83^\83\93\83X\82Ì\83f\83t\83H\83\8b\83g\82Ì\8eæ\82è\88µ\82¢\82ð TBoardItem \82É\82·\82é
588         BoardItemOnCreate       := BoardItemOnCreateOfTBoardItem;
589         BoardItemOnDispose      := BoardItemOnDisposeOfTBoardItem;
590
591         // ===== TBoardItem \83v\83\8d\83p\83e\83B\8eæ\93¾\90Ý\92è\8aÖ\90\94
592         BoardItemGetItems := GetProcAddress( inModule, 'BoardItemGetItems' );
593         if not Assigned( BoardItemGetItems ) then
594                 System.ExitCode := 1;
595         BoardItemGetLong := GetProcAddress( inModule, 'BoardItemGetLong' );
596         if not Assigned( BoardItemGetLong ) then
597                 System.ExitCode := 1;
598         BoardItemSetLong := GetProcAddress( inModule, 'BoardItemSetLong' );
599         if not Assigned( BoardItemSetLong ) then
600                 System.ExitCode := 1;
601         BoardItemGetDouble := GetProcAddress( inModule, 'BoardItemGetDouble' );
602         if not Assigned( BoardItemGetDouble ) then
603                 System.ExitCode := 1;
604         BoardItemSetDouble := GetProcAddress( inModule, 'BoardItemSetDouble' );
605         if not Assigned( BoardItemSetDouble ) then
606                 System.ExitCode := 1;
607         BoardItemEnumThread := GetProcAddress( inModule, 'BoardItemEnumThread' );
608         if not Assigned( BoardItemEnumThread ) then
609                 System.ExitCode := 1;
610         BoardItemWork := GetProcAddress( inModule, 'BoardItemWork' );
611         if not Assigned( BoardItemWork ) then
612                 System.ExitCode := 1;
613         BoardItemWorkBegin := GetProcAddress( inModule, 'BoardItemWorkBegin' );
614         if not Assigned( BoardItemWorkBegin ) then
615                 System.ExitCode := 1;
616         BoardItemWorkEnd := GetProcAddress( inModule, 'BoardItemWorkEnd' );
617         if not Assigned( BoardItemWorkEnd ) then
618                 System.ExitCode := 1;
619
620 end;
621
622
623
624 // =========================================================================
625 // TBoardItem \83N\83\89\83X\82É\8aÖ\82·\82é\83C\83x\83\93\83g
626 // =========================================================================
627
628 // *************************************************************************
629 // TBoardItem \82ª\90\90¬\82³\82ê\82½
630 // *************************************************************************
631 procedure BoardItemCreate(
632         inInstance : DWORD
633 ); stdcall;
634 begin
635
636         try
637                 BoardItemOnCreate( inInstance );
638         except end;
639
640 end;
641
642 // *************************************************************************
643 // TBoardItem \82ª\94j\8aü\82³\82ê\82½
644 // *************************************************************************
645 procedure BoardItemDispose(
646         inInstance : DWORD
647 ); stdcall;
648 begin
649
650         try
651                 BoardItemOnDispose( inInstance );
652         except end;
653
654 end;
655
656 // *************************************************************************
657 // \83_\83E\83\93\83\8d\81[\83h\82ð\8ew\8e¦\82³\82ê\82½
658 // *************************************************************************
659 function BoardItemOnDownload(
660         inInstance      : DWORD                                 // \83C\83\93\83X\83^\83\93\83X
661 ) : TDownloadState; stdcall;    // \83_\83E\83\93\83\8d\81[\83h\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
662 var
663         context                 : Pointer;
664         boardItem       : TBoardItem;
665 begin
666
667         try
668                 repeat
669                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
670                         if not Assigned( context ) then
671                                 Break;
672
673                         if not (TObject( context ) is TBoardItem) then
674                                 Break;
675
676                         boardItem := TBoardItem( context );
677                         if not Assigned( boardItem.OnDownload ) then
678                                 Break;
679
680                         Result := boardItem.OnDownload;
681                         Exit;
682                 until True;
683         except end;
684
685         Result := dsError;
686
687 end;
688
689 // *************************************************************************
690 // \83X\83\8c\97§\82Ä\82ð\8ew\8e¦\82³\82ê\82½
691 // *************************************************************************
692 function        BoardItemOnCreateThread(
693         inInstance      : DWORD;                                // BoardItem \82Ì\83C\83\93\83X\83^\83\93\83X
694         inSubject               : PChar;                                // \83X\83\8c\83^\83C
695         inName                  : PChar;                                // \96¼\91O(\83n\83\93\83h\83\8b)
696         inMail                  : PChar;                                // \83\81\81[\83\8b\83A\83h\83\8c\83X
697         inMessage               : PChar                                 // \96{\95
698 ) : TDownloadState; stdcall;    // \8f\91\82«\8d\9e\82Ý\82ª\90¬\8c÷\82µ\82½\82©\82Ç\82¤\82©
699 var
700         context                 : Pointer;
701         boardItem               : TBoardItem;
702 begin
703
704         try
705                 repeat
706                         context := Pointer( ThreadItemGetLong( inInstance, tipContext ) );
707                         if not Assigned( context ) then
708                                 Break;
709
710                         if not (TObject( context ) is TBoardItem) then
711                                 Break;
712
713                         boardItem := TBoardItem( context );
714                         if not Assigned( boardItem.OnCreateThread ) then
715                                 Break;
716
717                         Result := boardItem.OnCreateThread( string( inSubject ), string( inName ), string( inMail ), string( inMessage ) );
718                         Exit;
719                 until True;
720         except end;
721
722         Result := dsError;
723
724 end;
725
726 // *************************************************************************
727 // \82±\82Ì\94Â\82É\82¢\82­\82Â\82Ì\83X\83\8c\82ª\82 \82é\82©\97v\8b\81\82³\82ê\82½
728 // *************************************************************************
729 procedure BoardItemOnEnumThread(
730         inInstance      : DWORD;                                                                                                // \83C\83\93\83X\83^\83\93\83X
731         inCallBack      : TBoardItemEnumThreadCallBack  // \95Ô\8bp\82·\82×\82«\83R\81[\83\8b\83o\83b\83N
732 ); stdcall;
733 var
734         context                 : Pointer;
735         boardItem       : TBoardItem;
736 begin
737
738         try
739                 repeat
740                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
741                         if not Assigned( context ) then
742                                 Break;
743
744                         if not Assigned( inCallBack ) then
745                                 Break;
746
747                         if not (TObject( context ) is TBoardItem) then
748                                 Break;
749
750                         boardItem := TBoardItem( context );
751                         if not Assigned( boardItem.OnEnumThread ) then
752                                 Break;
753
754                         boardItem.OnEnumThread( inCallBack );
755                         Exit;
756                 until True;
757         except end;
758
759 end;
760
761 // *************************************************************************
762 // \83t\83@\83C\83\8b\96¼\82©\82ç\83X\83\8c\83b\83h\82Ì URL \82ð\97v\8b\81\82³\82ê\82½
763 // *************************************************************************
764 function BoardItemOnFileName2ThreadURL(
765         inInstance      : DWORD;                                                                                                // \83C\83\93\83X\83^\83\93\83X
766         inFileName      : PChar                                                                                                 // \8c³\82É\82È\82é\83t\83@\83C\83\8b\96¼
767 ) : PChar; stdcall;
768 var
769         context                 : Pointer;
770         boardItem               : TBoardItem;
771 begin
772
773         try
774                 repeat
775                         context := Pointer( BoardItemGetLong( inInstance, bipContext ) );
776                         if not Assigned( context ) then
777                                 Break;
778
779                         if not (TObject( context ) is TBoardItem) then
780                                 Break;
781
782                         boardItem := TBoardItem( context );
783                         if not Assigned( boardItem.OnFileName2ThreadURL ) then
784                                 Break;
785
786                         Result := CreateResultString( boardItem.OnFileName2ThreadURL( string( inFileName ) ) );
787                         Exit;
788                 until True;
789         except end;
790
791         Result := nil;
792
793 end;
794
795 exports
796         BoardItemCreate,
797         BoardItemDispose,
798         BoardItemOnDownload,
799         BoardItemOnCreateThread,
800         BoardItemOnEnumThread,
801         BoardItemOnFileName2ThreadURL;
802
803 end.