FKey : string;
end;
+ TBufferedWebBrowser = class(TStringList)
+ private
+ //! \8f\91\82«\8d\9e\82Þ\83u\83\89\83E\83U
+ FBrowser: TWebBrowser;
+ //! \89½\8ds\82Ü\82Å\82½\82ß\82é\82©\82Ì\83T\83C\83Y
+ FBuffSize: Integer;
+ //! \83u\83\89\83E\83U\82ÌIHTMLDocument2\83C\83\93\83^\83t\83F\81[\83X\82ð\95Û\8e\9d\82·\82é open\82©\82çclose\82Ì\8aÔ\82Å
+ FBrowserDoc: Variant;
+ public
+ constructor Create(Browser: TWebBrowser; BuffSize: Integer);
+ destructor Destory;
+ procedure Open;
+ procedure Close;
+ procedure Flush;
+ function Add(const S: string): Integer; override;
+ end;
THTMLCreate = class(TObject)
private
{ Private \90é\8c¾ }
constructor Create;
function AddBeProfileLink(AID : string; ANum: Integer):string ;
- procedure CreateUsePluginHTML(html:TStringList; ThreadItem: TThreadItem; var sTitle: string);
- procedure CreateUseSKINHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList);
- procedure CreateUseCSSHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
- procedure CreateDefaultHTML (html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
+ procedure CreateUsePluginHTML(html:TBufferedWebBrowser; ThreadItem: TThreadItem; var sTitle: string);
+ procedure CreateUseSKINHTML(html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList);
+ procedure CreateUseCSSHTML(html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
+ procedure CreateDefaultHTML (html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
procedure ConvertResAnchor(PRes: PResRec);
procedure separateNumber(var st: String; var et: String; const Text, Separator: String);
function checkComma(const s : String; var j : Integer; var No : String) : boolean;
function SkinedRes(const skin: string; PRes: PResRec; const No: string): string;
procedure ConvRes( PRes : PResRec; PResLink : PResLinkRec; DatToHTML: boolean = false); overload;
function ConvRes(const Body, Bbs, Key, ParamBBS, ParamKey, ParamStart, ParamTo, ParamNoFirst, ParamTrue : string; DatToHTML: boolean = false): string; overload;
- procedure CreateHTML2(doc: IDispatch; ThreadItem: TThreadItem; var sTitle: string);
+ procedure CreateHTML2(Browser: TWebBrowser; ThreadItem: TThreadItem; var sTitle: string);
procedure CreateHTML3(var html: TStringList; ThreadItem: TThreadItem; var sTitle: string);
//\83\8c\83X\83|\83b\83v\83A\83b\83v\82Ì\8dì\90¬
procedure SetResPopupText(Hint :TResPopup; threadItem: TThreadItem; StNum, ToNum: Integer; Title, First: Boolean);
if pos = nil then
b := Length(REF_MARK[idx2])
else
- b := pos - pp + 1;
+ b := pos - (pp + idx) + 1;
len := Length(PRes.FBody);
- SetLength(PRes.FBody, len + idx + b);
+ SetLength(PRes.FBody, len + idx + b );
Move(pp^, PRes.FBody[len + 1], idx + b);
Delete(s, 1, idx + b);
end else begin
end;
//Plugin\82ð\97\98\97p\82·\82éBoard\82Ì\83X\83\8c\83b\83h\82ÌHTML\82ð\8dì\90¬\82µ\82Ädoc\82É\8f\91\82«\8d\9e\82Þ
-procedure THTMLCreate.CreateUsePluginHTML(html:TStringList; ThreadItem: TThreadItem; var sTitle: string);
+procedure THTMLCreate.CreateUsePluginHTML(html:TBufferedWebBrowser; ThreadItem: TThreadItem; var sTitle: string);
var
i: integer;
NewReceiveNo: Integer;
NewReceiveNo := ThreadItem.NewReceive;
// \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
UserOptionalStyle := GikoSys.SetUserOptionalStyle;
- try
-// doc.open;
- // \83w\83b\83_
- html.add(boardPlugIn.GetHeader( DWORD( threadItem ),
- '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ));
- html.Add('<p id="idSearch"></p>');
-
- for i := 0 to threadItem.Count - 1 do begin
- // 1 \82Í\95K\82¸\95\\8e¦
- if i <> 0 then begin
- // \95\\8e¦\94Í\88Í\82ð\8cÀ\92è
- case GikoSys.ResRange of
- Ord( grrKoko ):
- if ThreadItem.Kokomade > (i + 1) then
- Continue;
- Ord( grrNew ):
- if NewReceiveNo > (i + 1) then
- Continue;
- 10..65535:
- if (threadItem.Count - i) > GikoSys.ResRange then
- Continue;
- end;
+ html.add(boardPlugIn.GetHeader( DWORD( threadItem ),
+ '<style type="text/css">body {' + UserOptionalStyle + '}</style>' ));
+ html.Add('<p id="idSearch"></p>');
+ html.Flush;
+
+ for i := 0 to threadItem.Count - 1 do begin
+ // 1 \82Í\95K\82¸\95\\8e¦
+ if i <> 0 then begin
+ // \95\\8e¦\94Í\88Í\82ð\8cÀ\92è
+ case GikoSys.ResRange of
+ Ord( grrKoko ):
+ if ThreadItem.Kokomade > (i + 1) then
+ Continue;
+ Ord( grrNew ):
+ if NewReceiveNo > (i + 1) then
+ Continue;
+ 10..65535:
+ if (threadItem.Count - i) > GikoSys.ResRange then
+ Continue;
end;
+ end;
- // \90V\92\85\83}\81[\83N
- if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
- try
- if GikoSys.Setting.UseSkin then begin
- if FileExists( GikoSys.GetSkinNewmarkFileName ) then
- html.Add( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
- else
- html.Add( '<a name="new"></a>');
- end else if GikoSys.Setting.UseCSS then begin
- html.Add('<a name="new"></a><div class="new">\90V\92\85\83\8c\83X <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
- end else begin
- html.Add('</dl>');
- html.Add('<a name="new"></a>');
- html.Add('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>\90V\92\85\83\8c\83X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
- html.Add('<dl>');
- end;
- except
- html.Add( '<a name="new"></a>');
+ // \90V\92\85\83}\81[\83N
+ if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
+ try
+ if GikoSys.Setting.UseSkin then begin
+ if FileExists( GikoSys.GetSkinNewmarkFileName ) then
+ html.Add( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
+ else
+ html.Add( '<a name="new"></a>');
+ end else if GikoSys.Setting.UseCSS then begin
+ html.Add('<a name="new"></a><div class="new">\90V\92\85\83\8c\83X <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
+ end else begin
+ html.Add('</dl>');
+ html.Add('<a name="new"></a>');
+ html.Add('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>\90V\92\85\83\8c\83X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
+ html.Add('<dl>');
end;
+ except
+ html.Add( '<a name="new"></a>');
end;
+ end;
- // \83\8c\83X
- html.Add( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ));
+ // \83\8c\83X
+ html.Add( boardPlugIn.GetRes( DWORD( threadItem ), i + 1 ));
- if ThreadItem.Kokomade = (i + 1) then begin
- // \82±\82±\82Ü\82Å\93Ç\82ñ\82¾
- try
- if GikoSys.Setting.UseSkin then begin
- if FileExists( GikoSys.GetSkinBookmarkFileName ) then
- html.Add( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ))
- else
- html.Add( '<a name="koko"></a>');
- end else if GikoSys.Setting.UseCSS then begin
- html.Add('<a name="koko"></a><div class="koko">\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</div>');
- end else begin
- html.Add('</dl>');
- html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</b></font></td></tr></table>');
- html.Add('<dl>');
- end;
- except
- html.Add('<a name="koko"></a>');
+ if ThreadItem.Kokomade = (i + 1) then begin
+ // \82±\82±\82Ü\82Å\93Ç\82ñ\82¾
+ try
+ if GikoSys.Setting.UseSkin then begin
+ if FileExists( GikoSys.GetSkinBookmarkFileName ) then
+ html.Add( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ))
+ else
+ html.Add( '<a name="koko"></a>');
+ end else if GikoSys.Setting.UseCSS then begin
+ html.Add('<a name="koko"></a><div class="koko">\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</div>');
+ end else begin
+ html.Add('</dl>');
+ html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</b></font></td></tr></table>');
+ html.Add('<dl>');
end;
+ except
+ html.Add('<a name="koko"></a>');
end;
end;
+ end;
- // \83X\83L\83\93(\83t\83b\83^)
- html.Add( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ));
- finally
- //doc.Close;
- end;
+ // \83X\83L\83\93(\83t\83b\83^)
+ html.Add( boardPlugIn.GetFooter( DWORD( threadItem ), '<a name="bottom"></a>' ));
end;
-procedure THTMLCreate.CreateUseSKINHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList);
+procedure THTMLCreate.CreateUseSKINHTML(html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList);
const
KOKO_TAG = '<a name="koko"></a>';
NEW_TAG = '<a name="new"></a>';
ThreadName := ChangeFileExt(ThreadItem.FileName, '');
ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
ResLink.FKey := ThreadName;
- //,
- //doc.open;
+ // \83X\83L\83\93\82Ì\90Ý\92è
try
- //doc.charset := 'Shift_JIS';
-
- // \83X\83L\83\93\82Ì\90Ý\92è
- try
- SkinHeader := LoadFromSkin( GikoSys.GetSkinHeaderFileName, ThreadItem, ThreadItem.Size);
- if Length( UserOptionalStyle ) > 0 then
- SkinHeader := CustomStringReplace( SkinHeader, '</head>',
- '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');
- html.Add( SkinHeader );
- except
- end;
-
- SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size);
- SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size );
-
- html.Add('<p id="idSearch"></p>'#13#10'<a name="top"></a>');
-
- for i := 0 to ReadList.Count - 1 do begin
- // 1 \82Í\95K\82¸\95\\8e¦
- if i <> 0 then begin
- // \95\\8e¦\94Í\88Í\82ð\8cÀ\92è
- case GikoSys.ResRange of
- Ord( grrKoko ):
- if ThreadItem.Kokomade > (i + 1) then
- Continue;
- Ord( grrNew ):
- if NewReceiveNo > (i + 1) then
- Continue;
- 10..65535:
- if (threadItem.Count - i) > GikoSys.ResRange then
- Continue;
- end;
- end;
+ SkinHeader := LoadFromSkin( GikoSys.GetSkinHeaderFileName, ThreadItem, ThreadItem.Size);
+ if Length( UserOptionalStyle ) > 0 then
+ SkinHeader := CustomStringReplace( SkinHeader, '</head>',
+ '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>');
+ html.Add( SkinHeader );
+ except
+ end;
- // \90V\92\85\83}\81[\83N
- if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin
- if FileExists( GikoSys.GetSkinNewmarkFileName ) then
- html.Add( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
- else
- html.Add( NEW_TAG );
+ SkinNewRes := LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, ThreadItem.Size);
+ SkinRes := LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, ThreadItem.Size );
+
+ html.Add('<p id="idSearch"></p>'#13#10'<a name="top"></a>');
+ html.Flush;
+
+ for i := 0 to ReadList.Count - 1 do begin
+ // 1 \82Í\95K\82¸\95\\8e¦
+ if i <> 0 then begin
+ // \95\\8e¦\94Í\88Í\82ð\8cÀ\92è
+ case GikoSys.ResRange of
+ Ord( grrKoko ):
+ if ThreadItem.Kokomade > (i + 1) then
+ Continue;
+ Ord( grrNew ):
+ if NewReceiveNo > (i + 1) then
+ Continue;
+ 10..65535:
+ if (threadItem.Count - i) > GikoSys.ResRange then
+ Continue;
end;
+ end;
- if (Trim(ReadList[i]) <> '') then begin
- DivideStrLine(ReadList[i], @Res);
- AddAnchorTag(@Res);
- ConvRes(@Res, @ResLink);
- Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
+ // \90V\92\85\83}\81[\83N
+ if (NewReceiveNo = i + 1) or ((NewReceiveNo = 0) and (i = 0)) then begin
+ if FileExists( GikoSys.GetSkinNewmarkFileName ) then
+ html.Add( LoadFromSkin( GikoSys.GetSkinNewmarkFileName, ThreadItem, ThreadItem.Size ))
+ else
+ html.Add( NEW_TAG );
+ end;
- if NewReceiveNo <= (i + 1) then
- // \90V\92\85\83\8c\83X
- html.Add(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1)))
- else
- // \92Ê\8fí\82Ì\83\8c\83X
- html.Add(SkinedRes(SkinRes, @Res, IntToStr(i + 1)));
- end;
+ if (Trim(ReadList[i]) <> '') then begin
+ DivideStrLine(ReadList[i], @Res);
+ AddAnchorTag(@Res);
+ ConvRes(@Res, @ResLink);
+ Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
- if ThreadItem.Kokomade = (i + 1) then begin
- // \82±\82±\82Ü\82Å\93Ç\82ñ\82¾
- if FileExists( GikoSys.GetSkinBookmarkFileName ) then
- html.Add( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ))
- else
- html.Add( KOKO_TAG );
- end;
+ if NewReceiveNo <= (i + 1) then
+ // \90V\92\85\83\8c\83X
+ html.Add(SkinedRes(SkinNewRes, @Res, IntToStr(i + 1)))
+ else
+ // \92Ê\8fí\82Ì\83\8c\83X
+ html.Add(SkinedRes(SkinRes, @Res, IntToStr(i + 1)));
end;
- html.Add('<a name="bottom"></a>');
- // \83X\83L\83\93(\83t\83b\83^)
- html.Add( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) );
- finally
- //doc.close;
+ if ThreadItem.Kokomade = (i + 1) then begin
+ // \82±\82±\82Ü\82Å\93Ç\82ñ\82¾
+ if FileExists( GikoSys.GetSkinBookmarkFileName ) then
+ html.Add( LoadFromSkin( GikoSys.GetSkinBookmarkFileName, ThreadItem, ThreadItem.Size ))
+ else
+ html.Add( KOKO_TAG );
+ end;
end;
+
+ html.Add('<a name="bottom"></a>');
+ // \83X\83L\83\93(\83t\83b\83^)
+ html.Add( LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, ThreadItem.Size ) );
end;
-procedure THTMLCreate.CreateUseCSSHTML(html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
+procedure THTMLCreate.CreateUseCSSHTML(html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
const
FORMAT_NOMAIL = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'
- + '<span class="name_label">\96¼\91O\81F</span> <span class="name"><b>%s</b></span>'
- + '<span class="date_label">\93\8a\8de\93ú\81F</span> <span class="date">%s</span></div>'
+ + '<span class="name_label"> \96¼\91O\81F </span> <span class="name"><b>%s</b></span>'
+ + '<span class="date_label"> \93\8a\8de\93ú\81F</span> <span class="date">%s</span></div>'
+ '<div class="mes">%s</div>';
FORMAT_SHOWMAIL = '<a name="%s"></a><div class="header"><span class="no"><a href="menu:%s">%s</a></span>'
ThreadName :String;
ResLink :TResLinkRec;
begin
- //doc.open;
- try
- //doc.charset := 'Shift_JIS';
- NewReceiveNo := ThreadItem.NewReceive;
- ThreadName := ChangeFileExt(ThreadItem.FileName, '');
- ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
- ResLink.FKey := ThreadName;
- // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
- UserOptionalStyle := GikoSys.SetUserOptionalStyle;
- CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
- if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
- //CSS\8eg\97p
- html.Add('<html><head>');
- html.Add('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
- html.Add('<title>' + sTitle + '</title>');
- html.Add('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">');
- if Length( UserOptionalStyle ) > 0 then
- html.Add('<style type="text/css">body {' + UserOptionalStyle + '}</style>');
- html.Add('</head>'#13#10'<body>');
- html.Add('<a name="top"></a>'#13#10'<p id="idSearch"></p>');
- html.Add('<div class="title">' + sTitle + '</div>');
- for i := 0 to ReadList.Count - 1 do begin
- // 1 \82Í\95K\82¸\95\\8e¦
- if i <> 0 then begin
- // \95\\8e¦\94Í\88Í\82ð\8cÀ\92è
- case GikoSys.ResRange of
- Ord( grrKoko ):
- if ThreadItem.Kokomade > (i + 1) then
- Continue;
- Ord( grrNew ):
- if NewReceiveNo > (i + 1) then
- Continue;
- 10..65535:
- if (threadItem.Count - i) > GikoSys.ResRange then
- Continue;
- end;
- end;
-
- if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
- html.Add('<a name="new"></a><div class="new">\90V\92\85\83\8c\83X <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
- end;
-
- if (Trim(ReadList[i]) <> '') then begin
- No := IntToStr(i + 1);
- DivideStrLine(ReadList[i], @Res);
- AddAnchorTag(@Res);
- ConvRes(@Res, @ResLink);
- Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
- if Res.FMailTo = '' then
- html.Add(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody]))
- else if GikoSys.Setting.ShowMail then
- html.Add(Format(FORMAT_SHOWMAIL, [No, No, No, Res.FMailTo, Res.FName, Res.FMailTo, Res.FDateTime, Res.FBody]))
- else
- html.Add(Format(FORMAT_NOSHOW, [No, No, No, Res.FMailTo, Res.FName, Res.FDateTime, Res.FBody]));
- end;
-
- if ThreadItem.Kokomade = (i + 1) then begin
- html.Add('<a name="koko"></a><div class="koko">\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</div>');
- end;
-
- end;
-
- html.Add('<a name="bottom"></a>');
- html.Add('<a name="last"></a>');
- html.Add('</body></html>');
- end;
- finally
- //doc.Close;
- end;
-end;
-
-procedure THTMLCreate.CreateDefaultHTML (html:TStringList; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
-var
- i: integer;
- No: string;
- NewReceiveNo: Integer;
- Res: TResRec;
- ThreadName: String;
- ResLink : TResLinkRec;
-begin
-// doc.open;
- try
-// doc.charset := 'Shift_JIS';
- NewReceiveNo := ThreadItem.NewReceive;
- ThreadName := ChangeFileExt(ThreadItem.FileName, '');
- ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
- ResLink.FKey := ThreadName;
+ NewReceiveNo := ThreadItem.NewReceive;
+ ThreadName := ChangeFileExt(ThreadItem.FileName, '');
+ ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
+ ResLink.FKey := ThreadName;
+ // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
+ UserOptionalStyle := GikoSys.SetUserOptionalStyle;
+ CSSFileName := GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName;
+ if GikoSys.Setting.UseCSS and FileExists(CSSFileName) then begin
+ //CSS\8eg\97p
html.Add('<html><head>');
html.Add('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
- html.Add('<title>' + sTitle + '</title></head>');
- html.Add('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">');
- html.Add('<a name="top"></a>');
- html.Add('<font size=+1 color="#FF0000">' + sTitle + '</font>');
- html.Add('<dl>');
- html.Add('<p id="idSearch"></p>');
+ html.Add('<title>' + sTitle + '</title>');
+ html.Add('<link rel="stylesheet" href="'+CSSFileName+'" type="text/css">');
+ if Length( UserOptionalStyle ) > 0 then
+ html.Add('<style type="text/css">body {' + UserOptionalStyle + '}</style>');
+ html.Add('</head>'#13#10'<body>');
+ html.Add('<a name="top"></a>'#13#10'<p id="idSearch"></p>');
+ html.Add('<div class="title">' + sTitle + '</div>');
+ html.Flush;
for i := 0 to ReadList.Count - 1 do begin
// 1 \82Í\95K\82¸\95\\8e¦
if i <> 0 then begin
end;
if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
- html.Add('</dl>');
- html.Add('<a name="new"></a>');
- html.Add('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>\90V\92\85\83\8c\83X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
- html.Add('<dl>');
+ html.Add('<a name="new"></a><div class="new">\90V\92\85\83\8c\83X <span class="newdate">' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</span></div>');
end;
if (Trim(ReadList[i]) <> '') then begin
ConvRes(@Res, @ResLink);
Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
if Res.FMailTo = '' then
- html.Add('<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 <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
+ html.Add(Format(FORMAT_NOMAIL, [No, No, No, Res.FName, Res.FDateTime, Res.FBody]))
else if GikoSys.Setting.ShowMail then
- html.Add('<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 <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
+ html.Add(Format(FORMAT_SHOWMAIL, [No, No, No, Res.FMailTo, Res.FName, Res.FMailTo, Res.FDateTime, Res.FBody]))
else
- html.Add('<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 <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10);
+ html.Add(Format(FORMAT_NOSHOW, [No, No, No, Res.FMailTo, Res.FName, Res.FDateTime, Res.FBody]));
end;
+
if ThreadItem.Kokomade = (i + 1) then begin
- html.Add('</dl>');
- html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</b></font></td></tr></table>');
- html.Add('<dl>');
+ html.Add('<a name="koko"></a><div class="koko">\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</div>');
end;
+
end;
- html.Add('</dl>'#13#10'<a name="bottom"></a>'#13#10'</body></html>');
- finally
- //doc.Close;
+
+ html.Add('<a name="bottom"></a>');
+ html.Add('<a name="last"></a>');
+ html.Add('</body></html>');
end;
end;
-procedure THTMLCreate.CreateHTML2(doc: IDispatch; ThreadItem: TThreadItem; var sTitle: string);
+procedure THTMLCreate.CreateDefaultHTML (html:TBufferedWebBrowser; ThreadItem: TThreadItem; ReadList: TStringList; sTitle: string );
+var
+ i: integer;
+ No: string;
+ NewReceiveNo: Integer;
+ Res: TResRec;
+ ThreadName: String;
+ ResLink : TResLinkRec;
+begin
+ NewReceiveNo := ThreadItem.NewReceive;
+ ThreadName := ChangeFileExt(ThreadItem.FileName, '');
+ ResLink.FBbs := ThreadItem.ParentBoard.BBSID;
+ ResLink.FKey := ThreadName;
+ html.Add('<html><head>');
+ html.Add('<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">');
+ html.Add('<title>' + sTitle + '</title></head>');
+ html.Add('<body TEXT="#000000" BGCOLOR="#EFEFEF" link="#0000FF" alink="#FF0000" vlink="#660099">');
+ html.Add('<a name="top"></a>');
+ html.Add('<font size=+1 color="#FF0000">' + sTitle + '</font>');
+ html.Add('<dl>');
+ html.Add('<p id="idSearch"></p>');
+ html.Flush;
+ for i := 0 to ReadList.Count - 1 do begin
+ // 1 \82Í\95K\82¸\95\\8e¦
+ if i <> 0 then begin
+ // \95\\8e¦\94Í\88Í\82ð\8cÀ\92è
+ case GikoSys.ResRange of
+ Ord( grrKoko ):
+ if ThreadItem.Kokomade > (i + 1) then
+ Continue;
+ Ord( grrNew ):
+ if NewReceiveNo > (i + 1) then
+ Continue;
+ 10..65535:
+ if (threadItem.Count - i) > GikoSys.ResRange then
+ Continue;
+ end;
+ end;
+
+ if (NewReceiveNo = (i + 1)) or ((NewReceiveNo = 0) and (i = 0)) then begin
+ html.Add('</dl>');
+ html.Add('<a name="new"></a>');
+ html.Add('<table width="100%" bgcolor="#3333CC" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#6666FF" valign="middle"><font size="-1" color="#ffffff"><b>\90V\92\85\83\8c\83X ' + FormatDateTime('yyyy/mm/dd(ddd) hh:mm', ThreadItem.RoundDate) + '</b></font></td></tr></table>');
+ html.Add('<dl>');
+ end;
+
+ if (Trim(ReadList[i]) <> '') then begin
+ No := IntToStr(i + 1);
+ DivideStrLine(ReadList[i], @Res);
+ AddAnchorTag(@Res);
+ ConvRes(@Res, @ResLink);
+ Res.FDateTime := AddBeProfileLink(Res.FDateTime, i + 1);
+ if Res.FMailTo = '' then
+ html.Add('<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 <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
+ else if GikoSys.Setting.ShowMail then
+ html.Add('<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 <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10)
+ else
+ html.Add('<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 <span class="date">' + Res.FDateTime+ '</span><br><dd>' + Res.Fbody + ' <br><br><br>'#13#10);
+ end;
+ if ThreadItem.Kokomade = (i + 1) then begin
+ html.Add('</dl>');
+ html.Add('<a name="koko"></a><table width="100%" bgcolor="#55AA55" cellpadding="0" cellspacing="1"><tr><td align="center" bgcolor="#77CC77" valign="middle"><font size="-1" color="#ffffff"><b>\83R\83R\82Ü\82Å\93Ç\82ñ\82¾</b></font></td></tr></table>');
+ html.Add('<dl>');
+ end;
+ end;
+ html.Add('</dl>'#13#10'<a name="bottom"></a>'#13#10'</body></html>');
+end;
+
+procedure THTMLCreate.CreateHTML2(Browser: TWebBrowser; ThreadItem: TThreadItem; var sTitle: string);
var
ReadList: TStringList;
CSSFileName: string;
FileName: string;
Res: TResRec;
- body : TStringList;
- mStream : TMemoryStream;
+ body : TBufferedWebBrowser;
{$IFDEF DEBUG}
st, rt: Cardinal;
{$ENDIF}
st := GetTickCount;
{$ENDIF}
if ThreadItem <> nil then begin
- body := TStringList.Create;
+ body := TBufferedWebBrowser.Create(Browser, 100);
try
- body.BeginUpdate;
+ body.Open;
if ThreadItem.ParentBoard.IsBoardPlugInAvailable then begin
CreateUsePluginHTML(body, ThreadItem, sTitle);
end else begin
ReadList.Free;
end;
end;
- body.EndUpdate;
- //WebBrowser\82É\8f\91\82«\8d\9e\82Ý
- mStream := TMemoryStream.Create;
- try
- body.SaveToStream(mStream);
- mStream.Seek(soFromBeginning, 0);
- (doc as IPersistStreamInit).Load(TStreamAdapter.Create(mStream));
- finally
- mStream.Free;
- end;
finally
+ body.Close;
body.Free;
end;
end;
end;
end;
-
+constructor TBufferedWebBrowser.Create(Browser: TWebBrowser; BuffSize: Integer);
+begin
+ inherited Create;
+ Self.Sorted := False;
+ if (Browser = nil) then
+ Raise Exception.Create('Browser is NULL');
+ FBrowser := Browser;
+
+ // \83o\83b\83t\83@\82·\82é\8ds\90\94\82ð
+ if (BuffSize < 0) then begin
+ FBuffSize := 100;
+ end else begin
+ FBuffSize := BuffSize;
+ end;
+ Self.Capacity := FBuffSize + 10;
+end;
+procedure TBufferedWebBrowser.Open;
+begin
+ FBrowserDoc := Idispatch( olevariant(FBrowser.ControlInterface).Document);
+ FBrowserDoc.open;
+ FBrowserDoc.charset := 'Shift_JIS';
+end;
+procedure TBufferedWebBrowser.Close;
+begin
+ Self.Flush;
+ try
+ FBrowserDoc.Close;
+ except
+ end;
+ FBrowser := nil;
+end;
+function TBufferedWebBrowser.Add(const S: string): Integer;
+begin
+ Result := inherited Add(TrimRight(s));
+ if (Self.Count > FBuffSize) then begin
+ FBrowserDoc.Write(Self.Text);
+ Self.Clear;
+ end;
+end;
+procedure TBufferedWebBrowser.Flush ;
+begin
+ if (Self.Count > 0) then begin
+ FBrowserDoc.Write(Self.Text);
+ Self.Clear;
+ end;
+end;
+destructor TBufferedWebBrowser.Destory;
+begin
+ try
+ if (FBrowserDoc <> 0) then begin
+ FBrowserDoc.close;
+ FBrowserDoc := 0;
+ end;
+ except
+ end;
+ inherited;
+end;
initialization
HTMLCreater := THTMLCreate.Create;