SHDocVw_TLB,
MSHTML_TLB,
{$IFEND}
- BoardGroup;
+ BoardGroup, BrowserRecord;
type
TOptionDialog = class(TForm)
WriteProxyCheck: TCheckBox;
WriteProxyAddressEdit: TEdit;
WritePortEdit: TEdit;
- WriteProxyUserIDEdit: TEdit;
- WriteProxyPasswordEdit: TEdit;
+ WriteProxyUserIDEdit: TEdit;
+ WriteProxyPasswordEdit: TEdit;
Font1Sheet: TTabSheet;
Bevel1: TBevel;
Bevel2: TBevel;
Label19: TLabel;
- Bevel5: TBevel;
+ Bevel5: TBevel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
OpenMailerCheckBox: TCheckBox;
GroupBox6: TGroupBox;
LogDeleteMessageCheckBox: TCheckBox;
- ResAnchorGroupBox: TGroupBox;
- ResAnchorCheckBox: TCheckBox;
TabSheet1: TTabSheet;
- PopupPositionRadioGroup: TRadioGroup;
TabAddRadioGroup: TRadioGroup;
GroupBox8: TGroupBox;
Label14: TLabel;
MaxRecordCountEdit: TEdit;
Label18: TLabel;
UnFocusedBoldCheckBox: TCheckBox;
+ IgnoreKanaCheckBox: TCheckBox;
+ UseKatjuTypeSkinCheckBox: TCheckBox;
+ GroupBox20: TGroupBox;
+ AutoSortCheckBox: TCheckBox;
+ Label24: TLabel;
+ GroupBox21: TGroupBox;
+ StoredTaskTrayCB: TCheckBox;
+ GroupBox22: TGroupBox;
+ LoopBrowserTabsCB: TCheckBox;
+ GroupBox23: TGroupBox;
+ IgnoreContextCheckBox: TCheckBox;
+ GroupBox24: TGroupBox;
+ gppRightTopRB: TRadioButton;
+ gppTopRB: TRadioButton;
+ gppLeftTopRB: TRadioButton;
+ gppLeftRB: TRadioButton;
+ gppRightRB: TRadioButton;
+ gppLeftBottomRB: TRadioButton;
+ gppBottomRB: TRadioButton;
+ gppRighBottomRB: TRadioButton;
+ ResAnchorCheckBox: TCheckBox;
+ IgnoreLimitResCountCheckBox: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ApplyButtonClick(Sender: TObject);
procedure SetAbonpropertys;
procedure CSSSetContent(Content: string);
procedure CSSPreview;
+ //! CSS\83v\83\8c\83r\83\85\81[\97pHTMLBody\90¶\90¬
+ function CreatePreviewBody(Res: array of TResRec): string;
+ //! CSS/SKIN\83v\83\8c\83r\83\85\81[\97pStyle\95¶\8e\9a\97ñ\8eæ\93¾
+ function GetPreviewUserStyle(): string;
public
{ Public \90é\8c¾ }
end;
DEFAULT_TABFONT_NAME: string = '\82l\82r \82o\83S\83V\83b\83N';
DEFAULT_TABFONT_SIZE: Integer = 9;
URL_TORA3: WideString = 'http://2ch.tora3.net/';
+ DEFAULT_CSS_FILENAME = 'default.css';
{$R *.DFM}
FClose := False;
Exit;
end;
- SetAbonpropertys;
+ SetAbonpropertys;
SaveSetting;
SettingApply;
EditorMemo.Color := GikoSys.Setting.EditorBackColor;
//CSS\95\\8e¦
CSSCheckBox.Checked := GikoSys.Setting.UseCSS;
+ //\82©\82¿\82ã\83X\83L\83\93\8eg\97p
+ UseKatjuTypeSkinCheckBox.Checked := GikoSys.Setting.UseKatjushaType;
if FCSSFont <> nil then
FCSSFont.Free;
FCSSFont := TFont.Create;
FileList.Sort;
for i := 0 to FileList.Count - 1 do begin
//s := ExtractFileName(FileList[i]);
- if LowerCase(FileList[i]) = 'default.css' then
+ if LowerCase(FileList[i]) = DEFAULT_CSS_FILENAME then
Item := CSSListView.Items.Insert(0)
else
Item := CSSListView.Items.Add;
FCSSStrings.Clear;
FCSSStrings := TStringList.Create;
try
- //GikoSys.GetDirectoryList(GikoSys.GetSkinDir, '*', FileList, False);
GikoSys.GetDirectoryList(GikoSys.GetSkinDir, '*', FCSSStrings, False);
Idx := Length(GikoSys.GetSkinDir);
- //FileList.Sort;
FCSSStrings.Sort;
- //for i := 0 to FileList.Count - 1 do begin
for i := 0 to FCSSStrings.Count - 1 do begin
- //s := ExtractFileName(FileList[i]);
Item := CSSListView.Items.Add;
- {Item.Data := PChar( FileList[i] );
- Item.Caption := Copy( FileList[i], Idx + 1, Length(FileList[i]) );
- if LowerCase(FileList[i]) = LowerCase(GikoSys.Setting.CSSFileName) then
- Item.Selected := True;
- }
Item.Data := PChar( FCSSStrings[i] );
Item.Caption := Copy( FCSSStrings[i], Idx + 1, Length(FCSSStrings[i]) );
if LowerCase(FCSSStrings[i]) = LowerCase(GikoSys.Setting.CSSFileName) then
Item.Selected := True;
end;
finally
- // Item.Data \82É\83|\83C\83\93\83^\93Ë\82Á\8d\9e\82ñ\82Å\82é\82©\82ç\8aJ\95ú\82Å\82«\82È\82¢\82æ\82§\81`
- //FileList.Free;
end;
if (CSSListView.ItemIndex = -1) and (CSSListView.Items.Count > 0) then
Ord( grrAll ): ResRangeHoldComboBox.ItemIndex := 0;
Ord( grrKoko ): ResRangeHoldComboBox.ItemIndex := 2;
Ord( grrNew ): ResRangeHoldComboBox.ItemIndex := 3;
- 100: ResRangeHoldComboBox.ItemIndex := 1;
+ 10..65535: ResRangeHoldComboBox.ItemIndex := 1;
end;
ResRangeHoldComboBox.Enabled := GikoSys.Setting.ResRangeHold;
//\83^\83u\92Ç\89Á\88Ê\92u
//\83\8d\83O\8dí\8f\9c\8e\9e\83\81\83b\83Z\81[\83W
LogDeleteMessageCheckBox.Checked := GikoSys.Setting.DeleteMsg;
+ //\93¯ID\83\8c\83X\83A\83\93\83J\81[\95\\8e¦\82Ì\90§\8cÀ\90\94\89z\82¦\83\81\83b\83Z\81[\83W
+ IgnoreLimitResCountCheckBox.Checked := GikoSys.Setting.LimitResCountMessage;
//\8fI\97¹\8e\9e\8am\94F\83_\83C\83A\83\8d\83O
ShowDialogForEndCheckBox.Checked := GikoSys.Setting.ShowDialogForEnd;
BrowserMaxCombo.ItemIndex := Ord( GikoSys.Setting.BrowserAutoMaximize );
//\83|\83b\83v\83A\83b\83v\88Ê\92u
case GikoSys.Setting.PopupPosition of
- gppRightTop: PopupPositionRadioGroup.ItemIndex := 0;
- gppRight: PopupPositionRadioGroup.ItemIndex := 1;
- gppRightBottom: PopupPositionRadioGroup.ItemIndex := 2;
- gppTop: PopupPositionRadioGroup.ItemIndex := 3;
- gppCenter: PopupPositionRadioGroup.ItemIndex := 4;
- gppBottom: PopupPositionRadioGroup.ItemIndex := 5;
- gppLeftTop: PopupPositionRadioGroup.ItemIndex := 6;
- gppLeft: PopupPositionRadioGroup.ItemIndex := 7;
- gppLeftBottom: PopupPositionRadioGroup.ItemIndex := 8;
+ gppRightTop: gppRightTopRB.Checked := True;
+ gppRight: gppRightRB.Checked := True;
+ gppRightBottom: gppRighBottomRB.Checked := True;
+ gppTop: gppTopRB.Checked := True;
+ gppCenter: gppTopRB.Checked := True; // \93Ç\82Ý\8d\9e\82Ý\82Å\95Ï\8a·\82µ\82Ä\82é\82Í\82¸
+ gppBottom: gppBottomRB.Checked := True;
+ gppLeftTop: gppLeftTopRB.Checked := True;
+ gppLeft: gppLeftRB.Checked := True;
+ gppLeftBottom: gppLeftBottomRB.Checked := True;
end;
//\94ñ\83A\83N\83e\83B\83u\8e\9e\83|\83b\83v\83A\83b\83v\95\\8e¦
else
DatOchiSortCombo.ItemIndex := 0;
end;
-
- //\82 \82Ú\81`\82ñ
- RloCheckBox.Checked := GikoSys.Setting.AbonDeleterlo;
- ReplaceulCheckBox.Checked := GikoSys.Setting.AbonReplaceul;
- PopUpAbonCheckBox.Checked := GikoSys.Setting.PopUpAbon;
- ShowNGLineCheckBox.Checked := GikoSys.Setting.ShowNGLinesNum;
- AddResAnchorCheckBox.Checked := GikoSys.Setting.AddResAnchor;
+ AutoSortCheckBox.Checked := GikoSys.Setting.AutoSortThreadList;
+
+ //\82 \82Ú\81`\82ñ
+ RloCheckBox.Checked := GikoSys.Setting.AbonDeleterlo;
+ ReplaceulCheckBox.Checked := GikoSys.Setting.AbonReplaceul;
+ PopUpAbonCheckBox.Checked := GikoSys.Setting.PopUpAbon;
+ ShowNGLineCheckBox.Checked := GikoSys.Setting.ShowNGLinesNum;
+ AddResAnchorCheckBox.Checked := GikoSys.Setting.AddResAnchor;
DeleteSyriaCheckBox.Checked := GikoSys.Setting.DeleteSyria;
+ IgnoreKanaCheckBox.Checked := GikoSys.Setting.IgnoreKana;
{$IFDEF SPAM_FILTER_ENABLED}
// \83X\83p\83\80\83t\83B\83\8b\83^\82Ì\90Ý\92è\82ð\95\\8e¦\82·\82é
SpamFilterGroupBox.Visible := True;
BeAutoLoginCheckBox.Checked := GikoSys.Setting.BeAutoLogin;
//\97\9a\97ð\82Ì\8dÅ\91å\95Û\91¶\90\94
MaxRecordCountEdit.Text := IntToStr(GikoSys.Setting.MaxRecordCount);
+ // \8dÅ\8f¬\89»\8e\9e\82É\83^\83X\83N\83g\83\8c\83C\82É\8ai\94[\82·\82é\82©
+ StoredTaskTrayCB.Checked := GikoSys.Setting.StoredTaskTray;
+ // \83u\83\89\83E\83U\83^\83u\82Ì\88Ú\93®\82Å\83\8b\81[\83v\82ð\8b\96\89Â\82·\82é\82©
+ LoopBrowserTabsCB.Checked := GikoSys.Setting.LoopBrowserTabs;
+ //
+ IgnoreContextCheckBox.Checked := GikoSys.Setting.GestureIgnoreContext;
end;
procedure TOptionDialog.SaveSetting;
//CSS\95\\8e¦
if GikoSys.Setting.UseCSS <> CSSCheckBox.Checked then FRepaintThread := true;
GikoSys.Setting.UseCSS := CSSCheckBox.Checked;
+ GikoSys.Setting.UseKatjushaType := UseKatjuTypeSkinCheckBox.Checked;
//CSS\83t\83@\83C\83\8b\96¼
tmp := GikoSys.Setting.CSSFileName;
- GikoSys.Setting.CSSFileName := 'default.css';
+ GikoSys.Setting.CSSFileName := DEFAULT_CSS_FILENAME;
if CSSListView.Items.Count > 0 then begin
try
if CSSListView.Items[CSSListView.ItemIndex].Data <> nil then
GikoSys.Setting.ResRangeHold := ResRangeHoldCheckBox.Checked;
case ResRangeHoldComboBox.ItemIndex of
0: GikoSys.Setting.ResRange := Ord( grrAll );
- 1: GikoSys.Setting.ResRange := 100;
+ 1: GikoSys.Setting.ResRange := GikoSys.Setting.ResRangeExCount;
2: GikoSys.Setting.ResRange := Ord( grrKoko );
3: GikoSys.Setting.ResRange := Ord( grrNew );
end;
GikoSys.Setting.OpenMailer := OpenMailerCheckBox.Checked;
GikoSys.Setting.DeleteMsg := LogDeleteMessageCheckBox.Checked;
+ GikoSys.Setting.LimitResCountMessage := IgnoreLimitResCountCheckBox.Checked;
+
//\8fI\97¹\8e\9e\8am\94F\83_\83C\83A\83\8d\83O
GikoSys.Setting.ShowDialogForEnd := ShowDialogForEndCheckBox.Checked;
//AllTabClose
// \83u\83\89\83E\83U\8dÅ\91å\89»
GikoSys.Setting.BrowserAutoMaximize := TGikoBrowserAutoMaximize( BrowserMaxCombo.ItemIndex );
//\83|\83b\83v\83A\83b\83v\88Ê\92u
- case PopupPositionRadioGroup.ItemIndex of
- 0: GikoSys.Setting.PopupPosition := gppRightTop;
- 1: GikoSys.Setting.PopupPosition := gppRight;
- 2: GikoSys.Setting.PopupPosition := gppRightBottom;
- 3: GikoSys.Setting.PopupPosition := gppTop;
- 4: GikoSys.Setting.PopupPosition := gppCenter;
- 5: GikoSys.Setting.PopupPosition := gppBottom;
- 6: GikoSys.Setting.PopupPosition := gppLeftTop;
- 7: GikoSys.Setting.PopupPosition := gppLeft;
- 8: GikoSys.Setting.PopupPosition := gppLeftBottom;
- end;
-
+ if (gppRightTopRB.Checked) then GikoSys.Setting.PopupPosition := gppRightTop;
+ if (gppRightRB.Checked) then GikoSys.Setting.PopupPosition := gppRight;
+ if (gppRighBottomRB.Checked) then GikoSys.Setting.PopupPosition := gppRightBottom;
+ if (gppTopRB.Checked) then GikoSys.Setting.PopupPosition := gppTop;
+ if (gppBottomRB.Checked) then GikoSys.Setting.PopupPosition := gppBottom;
+ if (gppLeftTopRB.Checked) then GikoSys.Setting.PopupPosition := gppLeftTop;
+ if (gppLeftRB.Checked) then GikoSys.Setting.PopupPosition := gppLeft;
+ if (gppLeftBottomRB.Checked) then GikoSys.Setting.PopupPosition := gppLeftBottom;
//\94ñ\83A\83N\83e\83B\83u\8e\9e\83|\83b\83v\83A\83b\83v\95\\8e¦
GikoSys.Setting.UnActivePopup := UnActivePopupCheckBox.Checked;
//\83\8c\83X\83|\83b\83v\83A\83b\83v\83{\81[\83\8b\83h\95\\8e¦
GikoSys.Setting.DatOchiSortIndex := Ord( gbcLastModified );{gbcLastModified}
end;
end;
+ GikoSys.Setting.AutoSortThreadList := AutoSortCheckBox.Checked;
GikoSys.Setting.WriteSystemSettingFile;
GikoSys.Setting.WriteBoardURLSettingFile;
GikoSys.Setting.PopUpAbon := PopUpAbonCheckBox.Checked;
GikoSys.Setting.ShowNGLinesNum := ShowNGLineCheckBox.Checked;
GikoSys.Setting.AddResAnchor := AddResAnchorCheckBox.Checked;
- GikoSys.Setting.DeleteSyria := DeleteSyriaCheckBox.Checked;
+ GikoSys.Setting.DeleteSyria := DeleteSyriaCheckBox.Checked;
+ GikoSys.Setting.IgnoreKana := IgnoreKanaCheckBox.Checked;
+ GikoSys.FAbon.IgnoreKana := GikoSys.Setting.IgnoreKana;
// \8eg\97p\82·\82é\83X\83p\83\80\83t\83B\83\8b\83^
if GikoSys.Setting.SpamFilterAlgorithm <> TGikoSpamFilterAlgorithm(
SpamFilterAlgorithmComboBox.ItemIndex ) then begin
GikoSys.Setting.BeAutoLogin := BeAutoLoginCheckBox.Checked;
//\97\9a\97ð\82Ì\8dÅ\91å\95Û\91¶\90\94
GikoSys.Setting.MaxRecordCount := Max(StrToInt64Def(MaxRecordCountEdit.Text,100),1);
+ GikoSys.Setting.StoredTaskTray := StoredTaskTrayCB.Checked;
+ GikoSys.Setting.LoopBrowserTabs := LoopBrowserTabsCB.Checked;
+
+ GikoSys.Setting.GestureIgnoreContext := IgnoreContextCheckBox.Checked;
end;
procedure TOptionDialog.SettingApply;
GikoForm.TreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
GikoForm.TreeView.Color := GikoSys.Setting.CabinetBackColor;
- {GikoForm.TreeView.Font.Style := [];
- if GikoSys.Setting.CabinetFontBold then
- GikoForm.TreeView.Font.Style := [fsBold];
- if GikoSys.Setting.CabinetFontItalic then
- GikoForm.TreeView.Font.Style := GikoForm.TreeView.Font.Style + [fsItalic];
- }
- {GikoForm.FavoriteTreeView.Font.Name := GikoSys.Setting.CabinetFontName;
- GikoForm.FavoriteTreeView.Font.Size := GikoSys.Setting.CabinetFontSize;
- GikoForm.FavoriteTreeView.Font.Color := GikoSys.Setting.CabinetFontColor;
- }
GikoForm.FavoriteTreeView.Font.Assign(GikoForm.TreeView.Font);
GikoForm.FavoriteTreeView.Color := GikoSys.Setting.CabinetBackColor;
function TOptionDialog.CheckFolder: Boolean;
begin
if Trim(LogFolderEdit.Text) = '' then
- LogFolderEdit.Text := ExtractFilePath(Application.ExeName) + 'Log';
+ LogFolderEdit.Text := GikoSys.GetAppDir + 'Log';
if DirectoryExists(LogFolderEdit.Text) then begin
Result := True;
sndPlaySound(nil, SND_ASYNC);
if OpenDialog.Execute then begin
SoundFileEdit.Text := OpenDialog.FileName;
+ // \83A\83v\83\8a\94z\89º\82Ì\83t\83@\83C\83\8b\82Ì\8fê\8d\87\91\8a\91Î\83p\83X\82É\95Ï\8a·\82·\82é\81B
+ if (AnsiPos(GikoSys.Setting.GetAppDir,SoundFileEdit.Text) = 1) then begin
+ // .\ \82ª\82Â\82©\82È\82¢\82Ì\82Å\81A.\\82ð\92Ç\89Á
+ SoundFileEdit.Text := '.\' + ExtractRelativePath(
+ GikoSys.Setting.GetAppDir,
+ SoundFileEdit.Text);
+
+ end;
end;
end;
procedure TOptionDialog.SoundPlayButtonClick(Sender: TObject);
+var
+ s : String;
begin
- if not FileExists(SoundFileEdit.Text) then begin
+ SetCurrentDir(GikoSys.Setting.GetAppDir);
+ s := ExpandFileName(SoundFileEdit.Text);
+ if not FileExists(s) then begin
MsgBox(Handle, '\91¶\8dÝ\82µ\82È\82¢\83t\83@\83C\83\8b\82Å\82·', '\83G\83\89\81[', MB_ICONSTOP or MB_OK);
SoundFileEdit.Text := '';
Exit;
end;
- if not sndPlaySound(PChar(SoundFileEdit.Text), SND_ASYNC or SND_NOSTOP) then begin
+ if not sndPlaySound(PChar(s), SND_ASYNC or SND_NOSTOP) then begin
sndPlaySound(nil, SND_ASYNC);
end;
end;
Item := SoundListView.Selected;
if Item = nil then Exit;
- if FileExists(SoundFileEdit.Text) then
+ SetCurrentDir(GikoSys.Setting.GetAppDir);
+ if FileExists(ExpandFileName(SoundFileEdit.Text)) then
Item.SubItems[0] := SoundFileEdit.Text;
if Trim(SoundFileEdit.Text) = '' then
Item.SubItems[0] := '';
GikoSys.FAbon.AbonPopupRes := PopUpAbonCheckBox.Checked;
GikoSys.FAbon.ReturnNGwordLineNum := ShowNGLineCheckBox.Checked;
GikoSys.FAbon.SetNGResAnchor := AddResAnchorCheckBox.Checked;
- GikoSys.FAbon.DeleteSyria := DeleteSyriaCheckBox.Checked;
+ GikoSys.FAbon.DeleteSyria := DeleteSyriaCheckBox.Checked;
end;
procedure TOptionDialog.CSSFontButtonClick(Sender: TObject);
begin
procedure TOptionDialog.CSSSetContent(Content: string);
var
- doc : Variant;
+ doc : OleVariant;
begin
if CSSBrowser.Document <> nil then begin
- doc := CSSBrowser.Document;
+ doc := CSSBrowser.OleObject.Document;
doc.open;
- doc.Clear;
+ doc.Clear;
doc.charset := 'Shift_JIS';
doc.Write(Content);
doc.Close;
ThreadItem: TThreadItem;
html: string;
Res: array [0..1] of TResRec;
- UserOptionalStyle: string;
- i: Integer;
fileName: string;
begin
fileName := GikoSys.Setting.CSSFileName;
- GikoSys.Setting.CSSFileName := 'default.css';
+ GikoSys.Setting.CSSFileName := DEFAULT_CSS_FILENAME;
if CSSListView.Items.Count > 0 then begin
try
if CSSListView.ItemIndex >= 0 then begin
GikoSys.Setting.CSSFileName := string( CSSListView.Items[CSSListView.ItemIndex].data )
else
GikoSys.Setting.CSSFileName := CSSListView.Items[CSSListView.ItemIndex].Caption + '.css';
- end;
+ end;
except
end;
end;
Res[1].FDateTime := 'ID:Sample';
Res[1].FBody := '\83I\83}\83G\83\82\83i\81[';
- // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
- if CSSFontCheckBox.Checked then begin
- i := ColorToRGB( FCSSFont.Color );
- i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
-
- UserOptionalStyle := UserOptionalStyle +
- 'font-family:"' + FCSSFont.Name + '";' +
- 'font-size:' + IntToStr( FCSSFont.Size ) + 'pt;' +
- 'color:#' + IntToHex( i, 6 ) + ';';
- if fsBold in FCSSFont.Style then
- UserOptionalStyle := UserOptionalStyle + 'font-weight:bold;'
- else
- UserOptionalStyle := UserOptionalStyle + 'font-weight:normal;';
- if fsItalic in FCSSFont.Style then
- UserOptionalStyle := UserOptionalStyle + 'font-style:italic;'
- else
- UserOptionalStyle := UserOptionalStyle + 'font-style:normal;';
- end;
- if CSSBackColorCheckBox.Checked then begin
- i := ColorToRGB( FCSSBackColor );
- i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
-
- UserOptionalStyle := UserOptionalStyle +
- 'background-color:#' + IntToHex( i, 6 ) + ';';
- end;
if FileExists( GikoSys.GetSkinHeaderFileName ) then begin
html :=
HTMLCreater.LoadFromSkin( GikoSys.GetSkinHeaderFileName, ThreadItem, 0 ) +
'<a name="top"></a>' +
- HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, 0 ), Res[0], '1' ) +
- HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, 0 ), Res[1], '2' ) +
+ HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinResFileName, ThreadItem, 0 ), @Res[0], '1' ) +
+ HTMLCreater.SkinedRes( HTMLCreater.LoadFromSkin( GikoSys.GetSkinNewResFileName, ThreadItem, 0 ), @Res[1], '2' ) +
'<a name="bottom"></a>' +
HTMLCreater.LoadFromSkin( GikoSys.GetSkinFooterFileName, ThreadItem, 0 );
html := StringReplace( html, '</head>',
- '<style type="text/css">body {' + UserOptionalStyle + '}</style></head>', [rfReplaceAll] );
+ '<style type="text/css">body {' + GetPreviewUserStyle + '}</style></head>', [rfReplaceAll] );
end else begin
html :=
- '<html><head>' +
- '<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' +
+ '<html><head><meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">' +
'<title>' + ThreadItem.Title + '</title>' +
'<link rel="stylesheet" href="' + GikoSys.GetStyleSheetDir + GikoSys.Setting.CSSFileName + '" type="text/css">' +
- '<style type="text/css">body {' + UserOptionalStyle + '}</style>' +
- '</head><body>' +
- '<div class="title">' + ThreadItem.Title + '</div>';
-
- for i := 0 to High( Res ) do
- begin
- html := html +
- '<div class="header"><span class="no">' + IntToStr( i + 1 ) + '</span>' +
- '<span class="name_label"> \96¼\91O\81F </span>' +
- '<a class="name_mail" href="mailto:' + Res[i].FMailTo + '">' +
- '<b>' + Res[i].FName + '</b></a><span class="mail"> [' + Res[i].FMailTo + ']</span>' +
- '<span class="date_label"> \93\8a\8de\93ú\81F</span>' +
- '<span class="date"> ' + Res[i].FDateTime+ '</span></div>' +
- '<div class="mes">' + Res[i].FBody + ' </div>';
- end;
-
- html := html + '</body></html>';
+ '<style type="text/css">body {' + GetPreviewUserStyle + '}</style>' +
+ '</head><body><div class="title">' + ThreadItem.Title + '</div>';
+
+ html := html + CreatePreviewBody(Res) + '</body></html>';
end;
try
end;
end;
+function TOptionDialog.CreatePreviewBody(Res: array of TResRec): string;
+var
+ i : Integer;
+begin
+ Result := '';
+ for i := 0 to High( Res ) do
+ begin
+ Result := Result +
+ '<div class="header"><span class="no">' + IntToStr( i + 1 ) + '</span>' +
+ '<span class="name_label"> \96¼\91O\81F </span>' +
+ '<a class="name_mail" href="mailto:' + Res[i].FMailTo + '">' +
+ '<b>' + Res[i].FName + '</b></a><span class="mail"> [' + Res[i].FMailTo + ']</span>' +
+ '<span class="date_label"> \93\8a\8de\93ú\81F</span>' +
+ '<span class="date"> ' + Res[i].FDateTime+ '</span></div>' +
+ '<div class="mes">' + Res[i].FBody + ' </div>';
+ end;
+end;
+
+function TOptionDialog.GetPreviewUserStyle(): string;
+var
+ i : Integer;
+
+begin
+ Result := '';
+ // \83t\83H\83\93\83g\82â\83T\83C\83Y\82Ì\90Ý\92è
+ if CSSFontCheckBox.Checked then begin
+ i := ColorToRGB( FCSSFont.Color );
+ i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
+ Result := Result +
+ 'font-family:"' + FCSSFont.Name + '";' +
+ 'font-size:' + IntToStr( FCSSFont.Size ) + 'pt;' +
+ 'color:#' + IntToHex( i, 6 ) + ';';
+ if fsBold in FCSSFont.Style then
+ Result := Result + 'font-weight:bold;'
+ else
+ Result := Result + 'font-weight:normal;';
+ if fsItalic in FCSSFont.Style then
+ Result := Result + 'font-style:italic;'
+ else
+ Result := Result + 'font-style:normal;';
+ end;
+ if CSSBackColorCheckBox.Checked then begin
+ i := ColorToRGB( FCSSBackColor );
+ i := (i shr 16) or (i and $ff00) or ((i and $ff) shl 16);
+
+ Result := Result +
+ 'background-color:#' + IntToHex( i, 6 ) + ';';
+ end;
+
+end;
procedure TOptionDialog.CSSListViewChange(Sender: TObject; Item: TListItem;
Change: TItemChange);
begin