6 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
7 Dialogs, StdCtrls, ComCtrls, ExtCtrls, ToolWin, Menus, OleCtrls, Registry,
15 ActiveX, {HTTPApp,} YofUtils, IniFiles, StrUtils,
16 GikoSystem, GikoUtil, ImgList, Clipbrd, BoardGroup,
17 IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdComponent,
18 IdTCPConnection, IdTCPClient, IdHTTP, ActnList, StdActns, IdIntercept,
19 IdLogBase, IdLogDebug, IdException, DateUtils, bmRegExp,
20 Gesture, AppEvnts, SambaTimer;
23 // TSetLayeredWindowAttributes = function(wnd: HWND; crKey: DWORD; bAlpha: BYTE; dwFlag: DWORD): Boolean; stdcall;
24 //
\8f\91\82«
\8d\9e\82Ý
\96ß
\82è
\92l
\83^
\83C
\83v
25 TGikoResultType = (grtOK, grtCookie, grtCheck, grtError);
27 TEditorForm = class(TForm)
30 PostMessage: TMenuItem;
31 SaveMessage: TMenuItem;
34 StatusBar: TStatusBar;
35 EditorPage: TPageControl;
37 PreviewTab: TTabSheet;
45 ToolBarImageList: TImageList;
46 HotToobarImageList: TImageList;
47 NameBasePanel: TPanel;
50 NameComboBox: TComboBox;
51 MailComboBox: TComboBox;
53 SendToolButton: TToolButton;
54 OutBoxToolButton: TToolButton;
55 ToolButton5: TToolButton;
56 UndoToolButton: TToolButton;
57 CutToolButton: TToolButton;
58 CopyToolButton: TToolButton;
59 PasteToolButton: TToolButton;
60 ToolButton3: TToolButton;
61 TransToolButton: TToolButton;
62 TopToolButton: TToolButton;
64 IdAntiFreeze: TIdAntiFreeze;
65 ToolButton1: TToolButton;
66 ToolButton2: TToolButton;
67 ActionList: TActionList;
81 SageCheckBox: TCheckBox;
82 IdLogDebug: TIdLogDebug;
85 KotehanCheckBox: TCheckBox;
89 SelectAllAction: TAction;
91 SelectAll1: TMenuItem;
92 QuotePasteAction: TAction;
93 QuotePasteMenuItem: TMenuItem;
95 SpaceToNBSPAction: TAction;
96 AmpToCharRefAction: TAction;
97 SpaceTabnbsp1: TMenuItem;
99 BoardInformationTab: TTabSheet;
100 BoardtopTab: TTabSheet;
101 TitlePictureBrowser: TWebBrowser;
103 BoardInformationMemo: TMemo;
104 GetSETTINGTXTAction: TAction;
106 SETTINGTXT2: TMenuItem;
107 GetTitlePictureAction: TAction;
109 GetHeadTXTAction: TAction;
111 RocalRuleTab: TTabSheet;
112 WebBrowser1: TWebBrowser;
113 CalcCapacityAction: TAction;
116 LocalRule: TMenuItem;
119 LocalRuleBrowse: TMenuItem;
120 ToolButton4: TToolButton;
121 ToolButton6: TToolButton;
122 SaveNameMailAction: TAction;
123 ToolButton7: TToolButton;
124 BeLogInOutEAction: TAction;
125 UpdateSambaAction: TAction;
128 InputAssistAction: TAction;
129 InputAssistPopupMenu: TPopupMenu;
131 ApplicationEvents1: TApplicationEvents;
132 ToolButton8: TToolButton;
133 ToolButton9: TToolButton;
134 ShowInputAssistForm: TAction;
135 ReleaseCookieAction: TAction;
137 ContinueModeAction: TAction;
138 ToolButton10: TToolButton;
139 ToolButton11: TToolButton;
140 OpenSendTargetAction: TAction;
141 ReloadTargetAction: TAction;
146 procedure EditorPageChange(Sender: TObject);
147 procedure FormCreate(Sender: TObject);
148 procedure BrowserStatusTextChange(Sender: TObject;
149 const Text: WideString);
150 procedure FormClose(Sender: TObject; var Action: TCloseAction);
151 procedure FormDestroy(Sender: TObject);
152 procedure SendActionExecute(Sender: TObject);
153 procedure SaveActionExecute(Sender: TObject);
154 procedure AbortActionExecute(Sender: TObject);
155 procedure CloseActionExecute(Sender: TObject);
156 procedure UndoActionExecute(Sender: TObject);
157 procedure CutActionExecute(Sender: TObject);
158 procedure CopyActionExecute(Sender: TObject);
159 procedure PasteActionExecute(Sender: TObject);
160 procedure SendActionUpdate(Sender: TObject);
161 procedure SaveActionUpdate(Sender: TObject);
162 procedure CloseActionUpdate(Sender: TObject);
163 procedure UndoActionUpdate(Sender: TObject);
164 procedure CutActionUpdate(Sender: TObject);
165 procedure CopyActionUpdate(Sender: TObject);
166 procedure PasteActionUpdate(Sender: TObject);
167 procedure TopActionExecute(Sender: TObject);
168 procedure TopActionUpdate(Sender: TObject);
169 procedure SageCheckBoxClick(Sender: TObject);
170 procedure MailComboBoxChange(Sender: TObject);
171 procedure TransActionExecute(Sender: TObject);
172 procedure TransActionUpdate(Sender: TObject);
173 procedure IdLogDebugReceive(ASender: TIdConnectionIntercept;
175 procedure IdLogDebugSend(ASender: TIdConnectionIntercept;
177 procedure SelectAllActionExecute(Sender: TObject);
178 procedure StatusBarResize(Sender: TObject);
179 procedure FormActivate(Sender: TObject);
180 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
181 procedure QuotePasteActionExecute(Sender: TObject);
182 procedure SpaceToNBSPActionExecute(Sender: TObject);
183 procedure AmpToCharRefActionExecute(Sender: TObject);
184 procedure BoardTopClick(Sender: TObject);
185 procedure GetSETTINGTXTActionExecute(Sender: TObject);
186 procedure GetTitlePictureActionUpdate(Sender: TObject);
187 procedure GetTitlePictureActionExecute(Sender: TObject);
188 procedure GetHeadTXTActionExecute(Sender: TObject);
189 procedure CalcCapacityActionExecute(Sender: TObject);
190 procedure LocalRuleClick(Sender: TObject);
191 procedure FormDeactivate(Sender: TObject);
192 procedure LocalRuleBrowseClick(Sender: TObject);
193 procedure SaveNameMailActionExecute(Sender: TObject);
194 procedure BeLogInOutEActionExecute(Sender: TObject);
195 procedure BeLogInOutEActionUpdate(Sender: TObject);
196 procedure UpdateSambaActionUpdate(Sender: TObject);
197 procedure UpdateSambaActionExecute(Sender: TObject);
198 procedure InputAssistActionExecute(Sender: TObject);
199 procedure ApplicationEvents1Message(var Msg: tagMSG;
200 var Handled: Boolean);
201 procedure ShowInputAssistFormExecute(Sender: TObject);
202 procedure ReleaseCookieActionExecute(Sender: TObject);
203 procedure GetSETTINGTXTActionUpdate(Sender: TObject);
204 procedure GetHeadTXTActionUpdate(Sender: TObject);
205 procedure ContinueModeActionExecute(Sender: TObject);
206 procedure ContinueModeActionUpdate(Sender: TObject);
207 procedure OpenSendTargetActionExecute(Sender: TObject);
208 procedure ReloadTargetActionExecute(Sender: TObject);
210 FThreadItem: TThreadItem;
212 FNameComboEdit: THandle;
213 FMailComboEdit: THandle;
216 FStatusCode: Integer;
217 FDebugStrReceive: string;
218 FDebugStrSend: string;
220 FInputAssistKey: String; ///<
\93ü
\97Í
\83A
\83V
\83X
\83g
\82Ì
\83L
\81[
221 FResistWords: TStringList; ///<
\93ü
\97Í
\83A
\83V
\83X
\83g
\82Ì
\8e«
\8f\91\82©
\82ç
\82Ì
\8c\9f\8dõ
\8c\8b\89Ê
222 FSambaTimer: TSambaTimer; ///< Samba
\91Î
\8dô
\82Ì
\83^
\83C
\83}
\81[
224 function Check: Boolean;
225 procedure SetNameList(sName, sMail: string);
226 procedure Send(const ACOOKIE: string; const SPID: string; const PON: string; FirstWriting: Boolean);
227 function GetActiveControlHandle: THandle;
228 procedure GetSendData(Source: TStringStream);
229 procedure SaveSendFile;
230 procedure SetContent(Content: string; ABrowser: TWebBrowser);
231 function GetResultType(ResponseText: string): TGikoResultType;
232 ///
\96{
\95¶
\82Ì
\8eæ
\93¾
233 function GetBody : string;
234 //IdHttp
\82Ì
\8f\89\8aú
\89»
235 procedure InitIdHTTP(http: TIdHTTP);
236 procedure ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
237 function GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
238 procedure ShowTitlePicture();
239 function GetFusianaName(body: TStringList; ABoard: TBoard): String;
240 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8aJ
\8en
241 procedure OnGestureStart(Sender: TObject);
242 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\92\86
243 procedure OnGestureMove(Sender: TObject);
244 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8fI
\97¹
245 procedure OnGestureEnd(Sender: TObject);
246 //HEAD.TXT
\8e©
\93®
\95\
\8e¦
247 procedure ShowBoardHead(ABoard: TBoard; AMemo: TMemo);
248 //LocalFusianaTrapAlart
249 function LFusianaGet(const s: String): Boolean;
250 // Cookie
\82Ì
\8eæ
\93¾
251 procedure GetCookie(Rawtext: String; ABoard: TBoard);
252 //!
\93ü
\97Í
\83A
\83V
\83X
\83g
\82Ì
\83|
\83b
\83v
\83A
\83b
\83v
\83\81\83j
\83\85\81[
\82Ì
\83N
\83\8a\83b
\83N
\83C
\83x
\83\93\83g
253 procedure InputAssistMenuClick(Sender: TObject);
254 //! TMemo
\82Ì
\83J
\81[
\83\
\83\8b\88Ê
\92u
\82É
\95¶
\8e\9a\97ñ
\91}
\93ü
255 procedure InsertText(Memo: TMemo; Text: String);
256 //!
\91\97\90M
\92\86\8e~
257 procedure CancelSend(ABoard: TBoard; ASysMenu: HMENU);
258 //! Samba
\83^
\83C
\83}
\81[
\83C
\83x
\83\93\83g
259 procedure SambaTimer(Sender: TObject);
260 //!
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82Æ
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
261 procedure SetWindowRect;
262 //!
\8ag
\92£
\83^
\83u
\90Ý
\92è
263 procedure SetExtraTab;
265 function GetBoard : TBoard;
266 //! URL
\82Ì
\83f
\81[
\83^
\82ðstream
\82É
\8eæ
\82è
\8d\9e\82Þ
267 procedure GetWebData(const URL: string; const RefURL: string;
268 Modified: TDateTime; stream: TStream);
269 //! GikoForm
\82É
\90V
\92\85\83\81\83b
\83Z
\81[
\83W
\82ð
\92Ç
\89Á
\82·
\82é
270 procedure AddFormMessageNew(icon: TGikoMessageIcon);
271 //!
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
272 function isLocalFusianaTrap: Boolean;
273 //!
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
274 function isRemoteFusianaTrap: Boolean;
275 //! Header
\95¶
\8e\9a\97ñ
\8eæ
\93¾
276 function getHeaderStr(const ACOOKIE: string; const SPID : string;
277 const PON : string; Board : TBoard) : string;
278 //! fusiana
\8cx
\8d\90\83_
\83C
\83A
\83\8d\83O
279 function FusianaMsgBox: Integer;
280 //! sent.ini
\83t
\83@
\83C
\83\8b\82Ì
\90¶
\90¬
281 function CreateSentIniFile: TMemIniFile;
283 procedure CreateParams(var Params: TCreateParams); override;
287 procedure SetThreadItem(Item: TThreadItem);
288 procedure SetBoard(Item: TBoard);
289 procedure UpdateSambaStatus;
290 property BBSID: string read FBBSID write FBBSID;
296 Giko, ItemDownload, MojuUtils, IdGlobal, GikoMessage, Imm,
297 InputAssistDataModule, InputAssist, HTMLCreate;
299 CAPTION_NAME_NEW: string = '
\83M
\83R
\83i
\83r
\83X
\83\8c\97§
\82Ä
\83G
\83f
\83B
\83^';
300 CAPTION_NAME_RES: string = '
\83M
\83R
\83i
\83r
\83\8c\83X
\83G
\83f
\83B
\83^';
302 //
\83G
\83f
\83B
\83b
\83g
\83E
\83B
\83\93\83h
\83E
\82ð
\89E
\89º
\82É
\82¸
\82ç
\82µ
\82Ä
\8aJ
\82
\88Ú
\93®
\97Ê
306 //DAX
\82³
\82ñ±Ø¶ÞÄ!(
\81L
\81¤
\81M)
307 READCGI_ERR = '-ERR';
308 READCGI_INCR = '-INCR';
310 READCGI_PARTIAL = '+PARTIAL';
311 READCGI_ERR_FOUND_KAKO = '-ERR
\89ß
\8b\8e\83\8d\83O
\91q
\8cÉ
\82Å
\94
\8c©';
312 READCGI_ERR_NOT_HTML = '-ERR html
\89»
\91Ò
\82¿';
313 READCGI_ERR_NOT_FOUND = '-ERR
\82»
\82ñ
\82È
\94Âor
\83X
\83\8c\83b
\83h
\82È
\82¢
\82Å
\82·
\81B';
314 READCGI_ERR_ABONE = '-ERR
\82Ç
\82±
\82©
\82Å
\82 \82Ú
\81[
\82ñ
\82ª
\82 \82Á
\82½
\82Ý
\82½
\82¢
\82Å
\82·
\81B';
315 READCGI_ERR_TIMEOUT = '-ERR
\8ew
\92è
\8e\9e\8aÔ
\82ª
\89ß
\82¬
\82Ü
\82µ
\82½
\81B';
316 READCGI_ERR_CANTUSE = '-ERR
\82à
\82¤
\81@
\82Â
\82©
\82¦
\82Ü
\82¹
\82ñ';
317 RES2CH_TRUE = '<!-- 2ch_X:true -->';
318 RES2CH_FALSE = '<!-- 2ch_X:false -->';
319 RES2CH_ERROR = '<!-- 2ch_X:error -->';
320 RES2CH_CHECK = '<!-- 2ch_X:check -->';
321 RES2CH_COOKIE = '<!-- 2ch_X:cookie -->';
325 StartPos, EndPos: Integer;
330 {constructor TEditorForm.Create(AOwner: TComponent; Item: TBoard);
332 inherited Create(AOwner);
335 procedure TEditorForm.CreateParams(var Params: TCreateParams);
338 if FormStyle in [fsNormal, fsStayOnTop] then
339 if BorderStyle in [bsSingle, bsSizeable] then begin
340 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
341 Params.WndParent := 0;
345 {procedure TEditorForm.CreateParams(var Params: TCreateParams);
347 inherited CreateParams(Params);
348 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
351 procedure TEditorForm.FormCreate(Sender: TObject);
354 FSambaTimer := TSambaTimer.Create(Self);
355 FSambaTimer.Interval := 0;
356 Browser.Navigate('about:blank');
357 TitlePictureBrowser.Navigate('about:blank');
361 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\90Ý
\92è
364 EditorPage.ActivePage := EditorTab;
365 FNameComboEdit := GetWindow(NameComboBox.Handle, GW_CHILD);
366 FMailComboEdit := GetWindow(MailComboBox.Handle, GW_CHILD);
367 NameComboBox.Items.Assign(GikoSys.Setting.NameList);
368 MailComboBox.Items.Assign(GikoSys.Setting.MailList);
370 //
\94¼
\93§
\96¾
\97\98\97p
\89Â
\94\
\90Ý
\92è
371 TransAction.Enabled := GikoSys.CanUser32DLL;
373 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\83X
\83e
\83C
\8fó
\91Ô
374 if GikoSys.Setting.EditWindowStay then begin //
\83X
\83e
\83C
\8fó
\91Ô
375 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
376 TopAction.Checked := true;
377 TopToolButton.Down := true;
378 end else begin //
\83X
\83e
\83C
\82µ
\82È
\82¢
379 SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
380 TopAction.Checked := false;
381 TopToolButton.Down := false;
384 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\94¼
\93§
\96¾
\8fó
\91Ô
385 if(GikoSys.Setting.EditWindowTranslucent) and (TransAction.Enabled) then begin //
\94¼
\93§
\96¾
\81i
\83g
\83\89\83\93\83X
\83\8b\81[
\83Z
\83\93\83g
\81j
\8fó
\91Ô
387 TransAction.Checked := true;
388 TransToolButton.Down := true;
389 end else begin //
\95s
\93§
\96¾
391 TransAction.Checked := false;
392 TransToolButton.Down := false;
394 //
\94¼
\93§
\96¾
\8fó
\91Ô
\82Ì
\95Û
\91¶
395 GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;
397 SpaceToNBSPAction.Checked := GikoSys.Setting.SpaceToNBSP;
398 AmpToCharRefAction.Checked := GikoSys.Setting.AmpToCharRef;
399 //
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\81{
\94Â
\83g
\83b
\83v
\89æ
\91\9c\82Ì
\83^
\83u
\82Ì
\90Ý
\92è
402 //
\83L
\81[
\90Ý
\92è
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
403 GikoSys.LoadKeySetting(ActionList, GikoSys.GetEditorKeyFileName);
404 SaveNameMailAction.Checked := True;
406 procedure TEditorForm.SetBoard(Item: TBoard);
409 Caption := CAPTION_NAME_NEW + ' - [' + Item.Title + ']';
410 NameComboBox.Text := FBoard.KotehanName;
411 MailComboBox.Text := FBoard.KotehanMail;
412 SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
413 TitlePanel.Visible := True;
415 if (FSambaTimer.SetBoard(FBoard) >= 0) then begin
418 FSambaTimer.OnTimer := SambaTimer;
421 ShowBoardInformation(FBoard, BoardInformationMemo);
425 procedure TEditorForm.SetThreadItem(Item: TThreadItem);
428 Caption := CAPTION_NAME_RES + ' - [' + FThreadItem.Title + ']';
429 NameComboBox.Text := FThreadItem.ParentBoard.KotehanName;
430 MailComboBox.Text := FThreadItem.ParentBoard.KotehanMail;
431 SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
432 TitlePanel.Visible := False;
434 if (FSambaTimer.SetBoard(FThreadItem.ParentBoard) >= 0) then begin
437 FSambaTimer.OnTimer := SambaTimer;
440 ShowBoardInformation(FThreadItem.ParentBoard, BoardInformationMemo);
444 function TEditorForm.GetBody : string;
453 body := BodyEdit.Text;
454 if AmpToCharRefAction.Checked then
455 // &
\82Ì
\92u
\8a·
\82Í
\88ê
\94Ô
\8dÅ
\8f\89\82É
\82â
\82é
\82±
\82Æ
456 body := CustomStringReplace( body, '&', '&' );
457 if SpaceToNBSPAction.Checked then begin
459 tail := p + Length( body );
461 while p < tail do begin
468 tmp := tmp + ' ';
469 until (len mod TAB_LENGTH) = 0;
474 tmp := tmp + p^; Inc( p );
480 tmp := tmp + ' ';
486 //
\8eÀ
\91Ì
\8eQ
\8fÆ
\82Í 1
\95¶
\8e\9a\95ª
491 while p < tail do begin
492 if p^ in ['a'..'z', 'A'..'Z', '0'..'9', '#'] then begin
494 end else if p^ = ';' then begin
506 if p^ in kYofKanji then begin
507 tmp := tmp + p^; Inc( p );
508 tmp := tmp + p^; Inc( p );
511 tmp := tmp + p^; Inc( p );
523 procedure TEditorForm.SetFont;
525 BodyEdit.Font.Name := GikoSys.Setting.EditorFontName;
526 BodyEdit.Font.Size := GikoSys.Setting.EditorFontSize;
527 BodyEdit.Font.Color := GikoSys.Setting.EditorFontColor;
528 BodyEdit.Color := GikoSys.Setting.EditorBackColor;
531 procedure TEditorForm.Preview;
540 if FThreadItem = nil then begin
542 Title := THTMLCreate.RepHtml(TitleEdit.Text);
544 No := IntToStr(FThreadItem.Count + 1);
545 Title := THTMLCreate.RepHtml(FThreadItem.Title);
549 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
550 Mail := THTMLCreate.RepHtml(MailComboBox.Text);
551 Body := THTMLCreate.RepHtml(Body);
552 Body := CustomStringReplace(Body, #13#10, '<br>', False);
555 if Trim(Namae) = '' then
556 Namae := '
\96¼
\96³
\82µ
\82³
\82ñ';
558 s := THTMLCreate.CreatePreviewHTML(Title, No, Mail, Namae, Body);
560 SetContent(s, Browser);
563 procedure TEditorForm.EditorPageChange(Sender: TObject);
568 tmpBoard := GetBoard;
570 if tmpBoard = nil then Exit;
572 if EditorPage.ActivePage = PreviewTab then begin
574 end else if EditorPage.ActivePage = RocalRuleTab then begin
575 if not FileExists(tmpBoard.GETHEADTXTFileName) then begin
576 LocalEdit.Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\96¢
\8eæ
\93¾';
579 ShowBoardHead(tmpBoard, LocalEdit);
581 Browser.Navigate('about:blank');
585 procedure TEditorForm.BrowserStatusTextChange(Sender: TObject;
586 const Text: WideString);
588 if EditorPage.ActivePage = PreviewTab then begin
589 StatusBar.Panels[0].Text := Text;
591 StatusBar.Panels[0].Text := '';
595 function TEditorForm.Check: Boolean;
597 REQUIRED: string = '
\82ª
\93ü
\97Í
\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B';
598 ERROR: string = '
\83G
\83\89\81[';
608 if (not GikoSys.Setting.UseMachineTime) and
609 ((Board.LastGetTime = 0) or
610 (Board.LastGetTime = ZERO_DATE)) then begin
611 Msg := '
\83T
\81[
\83o
\82Ì
\8e\9e\8d\8f\82ª
\95ª
\82©
\82ç
\82È
\82¢
\82½
\82ß
\81A
\91\97\90M
\8fo
\97\88\82Ü
\82¹
\82ñ'#13#10
612 + '
\83X
\83\8c\83b
\83h
\82ð
\8dX
\90V
\81i
\8eæ
\93¾
\81j
\8cã
\81A15
\95b
\91Ò
\82Á
\82Ä
\82©
\82ç
\91\97\90M
\82µ
\82Ä
\82
\82¾
\82³
\82¢';
613 MsgBox(Handle, Msg, ERROR, MB_OK or MB_ICONSTOP);
615 end else if BodyEdit.Text = '' then begin
616 Msg := '
\96{
\95¶' + REQUIRED;
617 MsgBox(Handle, Msg, ERROR, MB_OK or MB_ICONSTOP);
619 end else if (FBoard <> nil) and (Trim(TitleEdit.Text) = '') then begin
620 Msg := '
\83^
\83C
\83g
\83\8b' + REQUIRED;
621 MsgBox(Handle, Msg, ERROR, MB_OK or MB_ICONSTOP);
624 if (not GikoSys.Dolib.Connected) and (AnsiPos('
\81\9c', NameComboBox.Text) <> 0) then begin
625 Msg := '
\83\8d\83O
\83C
\83\93\82µ
\82Ä
\82¢
\82È
\82¢
\82Ì
\82Å
\81\9c\82Ì
\8b@
\94\
\82Í
\97\98\97p
\8fo
\97\88\82Ü
\82¹
\82ñ
\81B'#13#10
626 + '
\82±
\82Ì
\82Ü
\82Ü
\91\97\90M
\82µ
\82Ä
\82à
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
627 rc := MsgBox(Handle, Msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION);
628 Result := (rc = IDYES);
633 procedure TEditorForm.FormClose(Sender: TObject; var Action: TCloseAction);
638 procedure TEditorForm.FormDestroy(Sender: TObject);
640 wp: TWindowPlacement;
644 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95Û
\91¶
645 wp.length := sizeof(wp);
646 GetWindowPlacement(Handle, @wp);
648 GikoSys.Setting.EditWindowTop := wp.rcNormalPosition.Top;
649 GikoSys.Setting.EditWindowLeft := wp.rcNormalPosition.Left;
650 GikoSys.Setting.EditWindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
651 GikoSys.Setting.EditWindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
652 GikoSys.Setting.EditWindowMax := WindowState = wsMaximized;
653 //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop; //
\83X
\83e
\83C
\8fó
\91Ô
\82Ì
\95Û
\91¶
654 GikoSys.Setting.EditWindowTranslucent := TransAction.Checked; //
\94¼
\93§
\96¾
\8fó
\91Ô
\82Ì
\95Û
\91¶
658 procedure TEditorForm.SetNameList(sName, sMail: string);
660 if SaveNameMailAction.Checked then begin
661 if Trim(sName) <> '' then begin
662 if GikoSys.Setting.NameList.IndexOf(sName) = -1 then
663 GikoSys.Setting.NameList.Insert(0, sName);
665 if Trim(sMail) <> '' then begin
666 if GikoSys.Setting.MailList.IndexOf(sMail) = -1 then
667 GikoSys.Setting.MailList.Insert(0, sMail);
672 function TEditorForm.GetActiveControlHandle: THandle;
674 if EditorPage.ActivePage = EditorTab then begin
675 if ActiveControl = NameComboBox then
676 Result := FNameComboEdit
677 else if ActiveControl = MailComboBox then
678 Result := FMailComboEdit
679 else if ActiveControl = BodyEdit then
680 Result := BodyEdit.Handle
681 else if ActiveControl = TitleEdit then
682 Result := TitleEdit.Handle
685 end else if Editorpage.ActivePage = BoardInformationTab then begin
686 if ActiveControl = BoardInformationMemo then
687 Result := BoardInformationMemo.Handle
690 end else if Editorpage.ActivePage = RocalRuleTab then begin
691 if ActiveCOntrol = LocalEdit then
692 Result := LocalEdit.Handle
699 procedure TEditorForm.SetContent(Content: string; ABrowser: TWebBrowser);
703 if ABrowser.ControlInterface.Document <> nil then begin
704 doc := ABrowser.OleObject.Document;
707 doc.charset := 'Shift_JIS';
712 procedure TEditorForm.InitIdHTTP(http: TIdHTTP);
715 http.ProxyParams.BasicAuthentication := False;
716 if GikoSys.Setting.WriteProxy then begin
717 http.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
718 http.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
719 http.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
720 http.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
721 if GikoSys.Setting.ReadProxyUserID <> '' then
722 http.ProxyParams.BasicAuthentication := True;
724 http.ProxyParams.ProxyServer := '';
725 http.ProxyParams.ProxyPort := 80;
726 http.ProxyParams.ProxyUsername := '';
727 http.ProxyParams.ProxyPassword := '';
729 Indy.Request.UserAgent := GikoSys.GetUserAgent;
730 Indy.Request.AcceptEncoding := '';
732 //!
\91\97\90M
\92\86\8e~
\82Ì
\82½
\82ß
\82Ì
\83\81\83j
\83\85\81[
\82Ì
\8dÄ
\90¶
733 procedure TEditorForm.CancelSend(ABoard: TBoard; ASysMenu: HMENU);
738 EnableMenuItem(ASysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
742 procedure TEditorForm.Send( const ACOOKIE: string; const SPID: string;
743 const PON: string; FirstWriting: Boolean);
745 TextStream: TStringStream;
746 Source: TStringStream;
747 ResponseText: string;
749 State: TGikoDownloadState;
750 ResultType: TGikoResultType;
754 {Protocol,Host, Path, Document, Port, Bookmark : String;}
762 if FThreadItem = nil then begin
763 URL := FBoard.GetSendURL;
764 Indy.Request.Referer := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
766 URL := FThreadItem.GetSendURL;
767 Indy.Request.Referer := FThreadItem.URL;
770 sysMenu := GetSystemMenu( Handle, false );
771 EnableMenuItem( sysMenu, SC_CLOSE, MF_GRAYED );
773 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
776 Indy.Request.CustomHeaders.Clear;
777 // Indy.Request.CacheControl := 'no-cache';
778 Indy.Request.CustomHeaders.Add('Pragma: no-cache');
779 Indy.Request.AcceptLanguage := 'ja';
780 Indy.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
781 Indy.Request.ContentType := 'application/x-www-form-urlencoded';
782 Indy.Request.CustomHeaders.Add(getHeaderStr(ACOOKIE, SPID, PON, Board));
783 TextStream := TStringStream.Create('');
784 Source := TStringStream.Create('');
787 FDebugStrReceive := '';
790 if (FirstWriting) then begin
791 //
\83t
\83V
\83A
\83i
\83g
\83\89\83b
\83v
\8cx
\8d\90(LocalMode) by
\92è
\8aú
\95Ö
792 if (isLocalFusianaTrap) then begin
793 CancelSend( Board, SysMenu );
796 //
\83t
\83V
\83A
\83i
\83g
\83\89\83b
\83v
\8cx
\8d\90(Remote)
797 if (isRemoteFusianaTrap) then begin
798 CancelSend( Board, SysMenu );
804 IdAntiFreeze.Active := True;
806 Indy.Post(URL, Source, TextStream);
808 IdAntiFreeze.Active := False;
810 ResponseText := TextStream.DataString;
812 ResultType := GetResultType(ResponseText);
815 if ResultType = grtOK then begin
816 if (GikoSys.Setting.UseSamba) and (FSambaTimer.Enabled) then
818 FSambaTimer.WriteSambaTime(Now());
820 State := gdsComplete;
821 end else if ResultType = grtCookie then begin
822 //
\83\8b\81[
\83v
\96h
\8e~
823 if not FirstWriting then
824 raise Exception.Create('');
826 MsgResult := MsgBox( Handle,
827 '
\81E
\93\8a\8de
\82³
\82ê
\82½
\93à
\97e
\82Í
\83R
\83s
\81[
\81A
\95Û
\91¶
\81A
\88ø
\97p
\81A
\93]
\8dÚ
\93\99\82³
\82ê
\82é
\8fê
\8d\87\82ª
\82 \82è
\82Ü
\82·
\81B' + #13#10 +
828 '
\81E
\93\8a\8de
\82É
\8aÖ
\82µ
\82Ä
\94
\90¶
\82·
\82é
\90Ó
\94C
\82Í
\91S
\82Ä
\93\8a\8de
\8eÒ
\82É
\8bA
\82µ
\82Ü
\82·
\81B' + #13#10#13#10 +
829 '
\91S
\90Ó
\94C
\82ð
\95\89\82¤
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ä
\8f\91\82«
\8d\9e\82Ý
\82Ü
\82·
\82©
\81H',
831 MB_YESNO or MB_ICONQUESTION);
833 if MsgResult = IDYES then begin
834 GetCookie(Indy.Response.RawHeaders.Text, Board);
836 if (Board.SPID = '') and (Board.PON = '') and (Board.Cookie = '') then
837 raise Exception.Create('');
839 //
\82à
\82¤
\88ê
\89ñ
\82±
\82Ì
\83\81\83\
\83b
\83h
840 Send(Board.Cookie, Board.SPID, Board.PON, False);
843 CancelSend( Board, SysMenu );
846 end else if ResultType = grtCheck then begin
847 //
\83\8b\81[
\83v
\96h
\8e~
848 if not FirstWriting then
849 raise Exception.Create('');
851 MsgResult := MsgBox( Handle,
852 '
\8f\91\82«
\8d\9e\82Ý
\82É
\8aÖ
\82µ
\82Ä
\82Í
\97l
\81X
\82È
\83\8d\83O
\8fî
\95ñ
\82ª
\8bL
\98^
\82³
\82ê
\82Ä
\82¢
\82Ü
\82·
\81B' + #13#10 +
853 '
\93\8a\8de
\82É
\8aÖ
\82µ
\82Ä
\94
\90¶
\82·
\82é
\90Ó
\94C
\82Í
\91S
\82Ä
\93\8a\8de
\8eÒ
\82É
\8bA
\82µ
\82Ü
\82·
\81B' + #13#10 +
854 '
\8cö
\8f\98\97Ç
\91
\82É
\94½
\82µ
\82½
\82è
\81A
\91¼
\90l
\82É
\96À
\98f
\82ð
\82©
\82¯
\82é
\8f\91\82«
\8d\9e\82Ý
\82Í
\8dT
\82¦
\82Ä
\89º
\82³
\82¢
\81B' + #13#10 +
855 '
\93\8a\8de
\82³
\82ê
\82½
\93à
\97e
\82Í
\83R
\83s
\81[
\81E
\95Û
\91¶
\81E
\88ø
\97p
\81E
\93]
\8dÚ
\93\99\82³
\82ê
\82é
\8fê
\8d\87\82ª
\82 \82è
\82Ü
\82·
\81B' + #13#10 +
857 '
\91S
\90Ó
\94C
\82ð
\95\89\82¤
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ä
\8f\91\82«
\8d\9e\82Ý
\82Ü
\82·
\82©
\81H',
859 MB_YESNO or MB_ICONQUESTION);
861 if MsgResult = IDYES then begin
862 GetCookie(Indy.Response.RawHeaders.Text, Board);
864 if (Board.SPID = '') and (Board.PON = '') and (Board.Cookie = '') then
865 raise Exception.Create('');
867 Send(Board.Cookie, Board.SPID, Board.PON, False);
870 CancelSend( Board, SysMenu );
874 if (GikoSys.Setting.UseSamba) and (FSambaTimer.Enabled) then
876 FSambaTimer.WriteSambaTime(Now());
880 raise Exception.Create('');
883 on E: EIdConnectException do begin
885 ResponseText := '<html><body>'
886 + '<div>
\90Ú
\91±
\82ª
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½<br>'
887 + '
\89ñ
\90ü
\82â
\83v
\83\8d\83L
\83V
\82Ì
\8fó
\91Ô
\82ð
\92²
\82×
\82Ä
\82
\82¾
\82³
\82¢<br></div>'
888 + '<br><br><div>' + E.Message + '</div>'
891 on E: Exception do begin
894 FDebugStrReceive := AnsiReplaceText(FDebugStrReceive, '<', '<');
895 FDebugStrReceive := AnsiReplaceText(FDebugStrReceive, '>', '>');
896 FDebugStrSend := AnsiReplaceText(FDebugStrSend, '<', '<');
897 FDebugStrSend := AnsiReplaceText(FDebugStrSend, '>', '>');
899 ResponseText := '<html><body>' + TextStream.DataString;
900 ResponseText := AnsiReplaceText(ResponseText, '</body>', '');
901 ResponseText := AnsiReplaceText(ResponseText, '</html>', '');
902 ResponseText := ResponseText + '<hr><div align="left"><pre>';
903 ResponseText := ResponseText + '<b>
\82±
\82±
\82©
\82ç
\83M
\83R
\83i
\83r
\82Ì
\8fî
\95ñ</b>'#13#10;
904 ResponseText := ResponseText + #13#10'
\81\9c\91\97\90M'#13#10;
905 ResponseText := ResponseText + FDebugStrSend;
906 ResponseText := ResponseText + #13#10'
\81\9c\8eó
\90M'#13#10;
907 ResponseText := ResponseText + FDebugStrReceive;
908 ResponseText := ResponseText + '</pre></div></body></html>';
911 FStatusCode := Indy.ResponseCode;
917 //sysMenu := GetSystemMenu( Handle, true );
918 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
922 //
\94ñ
\8cö
\8e®
\83M
\83R
\83i
\83r
\94Â
\82È
\82Ç
\82Ì2ch
\8cÝ
\8a·
\83X
\83N
\83\8a\83v
\83g
\97p
923 //2ch
\88È
\8aO
\82Å
\82©
\82ÂResponceCode
\82ª302Found
\82Å
\8f\91\82«
\8d\9e\82Ý
\8a®
\97¹
924 //if (not Board.Is2ch) and (FStatusCode = 302) then begin
925 if FStatusCode = 302 then begin
926 GikoForm.PlaySound('ResEnd');
928 AddFormMessageNew( gmiOK );
929 if (not ContinueModeAction.Enabled) or (not ContinueModeAction.Checked) then begin
934 if State = gdsComplete then begin
935 GikoForm.PlaySound('ResEnd');
937 AddFormMessageNew( gmiOK );
938 if (not ContinueModeAction.Enabled) or (not ContinueModeAction.Checked) then begin
941 end else if State = gdsError then begin
942 AddFormMessageNew( gmiOK );
943 EditorPage.ActivePage := PreviewTab;
944 SetContent(ResponseText, Browser);
945 end else if State = gdsAbort then begin
946 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiSAD);
949 function TEditorForm.GetResultType(ResponseText: string): TGikoResultType;
951 if AnsiPos('
\8f\91\82«
\82±
\82Ý
\82ª
\8fI
\82í
\82è
\82Ü
\82µ
\82½', ResponseText) <> 0 then
953 else if (AnsiPos('
\83N
\83b
\83L
\81[
\82ª
\82È
\82¢
\82©
\8aú
\8cÀ
\90Ø
\82ê
\82Å
\82·', ResponseText) > 0) or
954 (AnsiPos('<title>
\83N
\83b
\83L
\81[
\8am
\94F
\81I</title>', ResponseText) > 0) or
955 (AnsiPos('<title>
\81¡
\83N
\83b
\83L
\81[
\8am
\94F
\81I
\81¡</title>', ResponseText) > 0) or
956 //(AnsiPos('
\83N
\83b
\83L
\81[
\8am
\94F', ResponseText) > 0) or
957 (AnsiPos(RES2CH_COOKIE, ResponseText) > 0) then
959 else if (AnsiPos('<font size=+2 color=#FF0000>
\8f\91\82«
\8d\9e\82Ý
\83`
\83F
\83b
\83N
\81I </font>', ResponseText) > 0) or
960 (AnsiPos('<title>
\81¡
\8f\91\82«
\8d\9e\82Ý
\8am
\94F
\82µ
\82Ü
\82·
\81¡</title>', ResponseText) > 0) or
961 (AnsiPos('<title>
\93\8a\8de
\8am
\94F</title>', ResponseText) > 0) or
962 (AnsiPos('<b>
\8f\91\82«
\82±
\82Ý
\8am
\94F</b>', ResponseText) > 0) or
963 (AnsiPos('="../test/subbbs.cgi">', ResponseText) > 0) or
964 (AnsiPos(RES2CH_FALSE, ResponseText) > 0) then
966 else if (AnsiPos('
\81E
\93\8a\8de
\8eÒ
\82Í
\81A
\8cf
\8e¦
\94Â
\89^
\89c
\8eÒ
\82É
\91Î
\82µ
\82Ä
\81A
\92\98\8dì
\8eÒ
\90l
\8ai
\8c \82ð
\88ê
\90Ø
\8ds
\8eg
\82µ
\82È
\82¢
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ü
\82·
\81B<br>', ResponseText) > 0) or
967 (AnsiPos('
\81i
\92\98\8dì
\8c \96@
\91æ21
\8fð
\82È
\82¢
\82µ
\91æ28
\8fð
\82É
\8bK
\92è
\82³
\82ê
\82é
\8c \97\98\82à
\8aÜ
\82Þ
\81j
\82»
\82Ì
\91¼
\82Ì
\8c \97\98\82É
\82Â
\82«
\81A', ResponseText) > 0) then
974 procedure TEditorForm.GetSendData(Source: TStringStream);
985 if GikoSys.Setting.UseMachineTime then begin
986 if GikoSys.Setting.TimeAdjust then
987 Adjust := Gikosys.Setting.TimeAdjustSec
989 Adjust := GikoSys.Setting.TimeAdjustSec * -1;
990 SendTime := GikoSys.DateTimeToInt(Now) - (9 * 60 * 60) + Adjust
992 if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then
993 SendTime := GikoSys.DateTimeToInt(Now)
995 SendTime := GikoSys.DateTimeToInt(Board.LastGetTime);
1000 SessionID := GikoSys.Dolib.SessionID;
1001 if SessionID <> '' then
1002 s := 'sid=' + HttpEncode(SessionID) + '&'
1005 s := s + 'subject=&'
1006 + 'FROM=' + HttpEncode(NameComboBox.Text) + '&'
1007 + 'mail=' + HttpEncode(MailComboBox.Text) + '&'
1008 + 'MESSAGE=' + HttpEncode(body) + '&'
1009 + 'bbs=' + Board.BBSID + '&'
1010 + 'time=' + IntToStr(SendTime) + '&';
1012 if FThreadItem = nil then begin
1013 s := s + 'subject=' + HttpEncode(TitleEdit.Text) + '&';
1014 s := s + 'submit=' + HttpEncode('
\91S
\90Ó
\94C
\82ð
\95\89\82¤
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ä
\8f\91\82«
\8d\9e\82Þ') + #13#10;
1016 s := s + 'key=' + ChangeFileExt(FThreadItem.FileName, '') + '&';
1017 s := s + 'submit=' + HttpEncode('
\8f\91\82«
\8d\9e\82Þ') + #13#10;
1019 Source.WriteString(s);
1022 procedure TEditorForm.SaveSendFile;
1027 ini := CreateSentIniFile;
1028 if (ini <> nil) then begin
1030 sDate := IntToStr(GikoSys.DateTimeToInt(Now));
1032 ini.WriteString(sDate, 'Name', NameComboBox.Text);
1033 ini.WriteString(sDate, 'EMail', MailComboBox.Text);
1034 ini.WriteString(sDate, 'Body', HttpEncode(BodyEdit.Text));
1035 ini.WriteInteger(sDate, 'Status', FStatusCode);
1036 ini.WriteDateTime(sDate, 'Date', Now);
1037 if FThreadItem = nil then begin
1038 ini.WriteString(sDate, 'Title', MojuUtils.Sanitize(TitleEdit.Text));
1039 //ini.WriteString(sDate, 'BBS', FBoard.BBSID);
1040 ini.WriteString(sDate, 'URL', FBoard.URL);
1041 ini.WriteInteger(sDate, 'NewThread', 1);
1043 ini.WriteString(sDate, 'Title', FThreadItem.Title);
1044 //ini.WriteString(sDate, 'BBS', FThreadItem.ParentBoard.BBSID);
1045 ini.WriteString(sDate, 'URL', FThreadItem.URL);
1046 ini.WriteString(sDate, 'Key', ChangeFileExt(FThreadItem.FileName, ''));
1055 function TEditorForm.CreateSentIniFile: TMemIniFile;
1057 maxSize, fileSize, i: Integer;
1062 maxSize := GikoSys.Setting.SentIniFileSize * 1024 * 1024;
1063 //
\83t
\83@
\83C
\83\8b\83T
\83C
\83Y
\82ª0
\82Ì
\8fê
\8d\87\82Í
\81Asent.ini
\82É
\8f\91\82«
\8d\9e\82Ü
\82È
\82¢
\82Ì
\82Ånil
\82ð
\95Ô
\82·
1064 if (maxSize > 0) then begin
1065 fileSize := GikoSys.GetFileSize(GikoSys.Setting.GetSentFileName);
1066 //
\8dÅ
\91å
\83T
\83C
\83Y
\82ð
\92´
\82¦
\82Ä
\82¢
\82½
\8fê
\8d\87\82Í
\83\8a\83l
\81[
\83\80\82·
\82é
1067 if (fileSize >= maxSize) then begin
1069 //
\8d¡
\82Ì
\8e\9e\8d\8f\82ð
\83t
\83@
\83C
\83\8b\96¼
\82Ì
\8cã
\82ë
\82É
\82Â
\82¯
\82é
1071 // 10
\89ñ
\88È
\8fã
\8e¸
\94s
\82µ
\82½
\82ç
\82 \82«
\82ç
\82ß
\82é
1072 if (i > 10) then break;
1073 DateTimeToString(newName, 'yyhhnnsszzz', Now());
1075 until RenameFile(GikoSys.Setting.GetSentFileName,
1076 GikoSys.Setting.GetSentFileName + '.' + newName);
1078 Result := TMemIniFile.Create(GikoSys.Setting.GetSentFileName);
1081 procedure TEditorForm.SendActionExecute(Sender: TObject);
1083 TITLE_SAMBA : string = 'Samba24
\8cx
\8d\90';
1088 state : TGikoDownloadState;
1095 SendAction.Enabled := False;
1096 Application.ProcessMessages;
1097 if not Check then Exit;
1101 if FThreadItem = nil then begin
1102 rc := GikoUtil.MsgBox(Handle,
1103 '
\81u' + Board.Title + '
\81v
\94Â
\82É
\90V
\82µ
\82¢
\83X
\83\8c\83b
\83h
\97§
\82Ä
\82Ü
\82·'#13#10#13#10
1104 + '
\81E
\94Â
\82Ì
\83\8b\81[
\83\8b\82ð
\8eç
\82Á
\82½
\8f\91\82«
\8d\9e\82Ý
\82Å
\82 \82é
\82±
\82Æ
\82ð
\8am
\94F
\82µ
\82Ü
\82µ
\82½
\82©
\81H'#13#10
1105 + '
\81E
\91¼
\82É
\93¯
\82¶
\82æ
\82¤
\82È
\83X
\83\8c\83b
\83h
\82ª
\96³
\82©
\82Á
\82½
\82±
\82Æ
\82ð
\8am
\94F
\82µ
\82Ü
\82µ
\82½
\82©
\81H'#13#10#13#10
1106 + '
\81u
\82Í
\82¢
\81v
\82ð
\89\9f\82·
\82Æ
\91\97\90M
\82µ
\82Ü
\82·',
1108 MB_ICONQUESTION or MB_YESNO);
1109 if rc <> ID_YES then
1113 SetNameList(NameComboBox.Text, MailComboBox.Text);
1114 if (KotehanCheckBox.Enabled) and (KotehanCheckBox.Checked) then begin
1115 Board.KotehanName := NameComboBox.Text;
1116 Board.KotehanMail := MailComboBox.Text;
1119 if Board.IsBoardPlugInAvailable then begin
1122 if FThreadItem = nil then begin
1123 //
\83X
\83\8c\97§
\82Ä
1124 state := TGikoDownloadState( Board.BoardPlugIn.CreateThread(
1125 DWORD( Board ), TitleEdit.Text, NameComboBox.Text, MailComboBox.Text, body ) );
1127 if state = gdsComplete then begin
1128 GikoForm.PlaySound('ResEnd');
1130 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK);
1133 end else if State = gdsError then begin
1134 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmSureError), nil, gmiNG);
1135 end else if State = gdsAbort then begin
1136 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiNG);
1140 state := TGikoDownloadState( FThreadItem.ParentBoard.BoardPlugIn.WriteThread(
1141 DWORD( FThreadItem ), NameComboBox.Text, MailComboBox.Text, body ) );
1143 if state = gdsComplete then begin
1144 GikoForm.PlaySound('ResEnd');
1146 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK);
1149 end else if State = gdsError then begin
1150 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmResError), nil, gmiOK);
1151 end else if State = gdsAbort then begin
1152 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK);
1156 if not FSambaTimer.Enabled then begin
1157 if CompareDateTime(Board.Expires ,Now) <= 0 then begin
1162 Send(Board.Cookie, Board.SPID, Board.PON, True);
1164 if not FSambaTimer.CheckSambaTime(Now()) then begin
1165 rc := GikoUtil.MsgBox(Handle,
1166 'Samba24
\82Ì
\8bK
\92è
\92l
\96¢
\96\9e\82Ì
\95b
\90\94\82µ
\82©
\8co
\89ß
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B'#13#10
1167 + '
\91\97\90M
\82ð
\92\86\8e~
\82µ
\82Ü
\82·
\82©
\81H' + #13#10
1168 + '(
\81u
\82¢
\82¢
\82¦
\81v
\82¾
\82Æ
\91\97\90M
\82µ
\82Ü
\82·)', TITLE_SAMBA,
1169 MB_YESNO or MB_ICONQUESTION);
1170 if rc = IDYES then begin
1174 if rc = IDNO then begin
1175 rc2 := GikoUtil.MsgBox(Handle,
1176 '
\96{
\93\96\82É
\91\97\90M
\82µ
\82Ü
\82·
\82©
\81H',
1178 MB_YESNO or MB_ICONQUESTION);
1179 if rc2 = IDNO then begin
1185 if CompareDateTime(Board.Expires ,Now) <= 0 then begin
1190 Send(Board.Cookie, Board.SPID, Board.PON, True);
1195 if FSambaTimer.Enabled then begin
1196 FNow := FSambaTimer.Update;
1201 procedure TEditorForm.SaveActionExecute(Sender: TObject);
1206 procedure TEditorForm.CloseActionExecute(Sender: TObject);
1211 procedure TEditorForm.UndoActionExecute(Sender: TObject);
1213 SendMessage(GetActiveControlHandle, WM_UNDO, 0, 0);
1216 procedure TEditorForm.CutActionExecute(Sender: TObject);
1218 SendMessage(GetActiveControlHandle, WM_CUT, 0, 0);
1221 procedure TEditorForm.CopyActionExecute(Sender: TObject);
1223 SendMessage(GetActiveControlHandle, WM_COPY, 0, 0);
1226 procedure TEditorForm.PasteActionExecute(Sender: TObject);
1228 SendMessage(GetActiveControlHandle, WM_PASTE, 0, 0);
1231 procedure TEditorForm.SelectAllActionExecute(Sender: TObject);
1233 SendMessage(GetActiveControlHandle, EM_SETSEL, 0, GetWindowTextLength(GetActiveControlHandle));
1236 procedure TEditorForm.TopActionExecute(Sender: TObject); //
\83E
\83B
\83\93\83h
\83E
\8dÅ
\91O
\96Ê(Stay)
\83{
\83^
\83\93\82Ì
\8f\88\97\9d
1238 if not (fsShowing in Self.FormState) then begin
1239 if TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
1240 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
1241 GikoSys.Setting.EditWindowStay := true;
1242 end else begin //
\83X
\83e
\83C
\8fó
\91Ô
\89ð
\8f\9c
1243 SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
1244 GikoSys.Setting.EditWindowStay := false;
1246 //
\83X
\83e
\83C
\8fó
\91Ô
\82Ì
\95Û
\91¶
1247 //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop;
1251 procedure TEditorForm.AbortActionExecute(Sender: TObject);
1256 procedure TEditorForm.SendActionUpdate(Sender: TObject);
1258 SendAction.Enabled := not FWork;
1261 procedure TEditorForm.SaveActionUpdate(Sender: TObject);
1263 SaveAction.Enabled := False;
1266 procedure TEditorForm.CloseActionUpdate(Sender: TObject);
1268 CloseAction.Enabled := not FWork;
1271 procedure TEditorForm.UndoActionUpdate(Sender: TObject);
1273 UndoAction.Enabled := (GetActiveControlHandle <> 0)
1274 and (SendMessage(GetActiveControlHandle, EM_CANUNDO, 0, 0) <> 0)
1278 procedure TEditorForm.CutActionUpdate(Sender: TObject);
1280 Selection: TSelection;
1283 AHandle := GetActiveControlHandle;
1284 SendMessage(AHandle, EM_GETSEL, Longint(@Selection.StartPos), Longint(@Selection.EndPos));
1285 CutAction.Enabled := (AHandle <> 0)
1286 and ((Selection.EndPos - Selection.StartPos) <> 0)
1290 procedure TEditorForm.CopyActionUpdate(Sender: TObject);
1292 Selection: TSelection;
1295 AHandle := GetActiveControlHandle;
1296 SendMessage(AHandle, EM_GETSEL, Longint(@Selection.StartPos), Longint(@Selection.EndPos));
1297 CopyAction.Enabled := (AHandle <> 0)
1298 and ((Selection.EndPos - Selection.StartPos) <> 0)
1302 procedure TEditorForm.PasteActionUpdate(Sender: TObject);
1304 PasteAction.Enabled := (GetActiveControlHandle <> 0)
1305 and (Clipboard.HasFormat(CF_TEXT))
1309 procedure TEditorForm.TopActionUpdate(Sender: TObject);
1311 TopAction.Enabled := not FWork;
1314 procedure TEditorForm.SageCheckBoxClick(Sender: TObject);
1316 if SageCheckBox.Checked then begin
1317 if AnsiPos('sage', MailComboBox.Text) = 0 then
1318 MailComboBox.Text := 'sage' + MailComboBox.Text;
1320 if AnsiPos('sage', MailComboBox.Text) <> 0 then
1321 MailComboBox.Text := StringReplace(MailComboBox.Text, 'sage', '', [rfReplaceAll]);
1325 procedure TEditorForm.MailComboBoxChange(Sender: TObject);
1327 if AnsiPos('sage', MailComboBox.Text) = 0 then
1328 SageCheckBox.Checked := False
1330 SageCheckBox.Checked := True;
1333 procedure TEditorForm.IdLogDebugReceive(ASender: TIdConnectionIntercept;
1336 StringStream: TStringStream;
1338 StringStream := TStringStream.Create('');
1340 StringStream.CopyFrom(AStream, AStream.Size);
1341 FDebugStrReceive := FDebugStrReceive + StringStream.DataString;
1347 procedure TEditorForm.IdLogDebugSend(ASender: TIdConnectionIntercept;
1350 StringStream: TStringStream;
1352 StringStream := TStringStream.Create('');
1354 StringStream.CopyFrom(AStream, AStream.Size);
1355 FDebugStrSend := FDebugStrSend + StringStream.DataString;
1361 procedure TEditorForm.TransActionExecute(Sender: TObject);
1363 AlphaBlend := TransAction.Checked;
1364 //
\94¼
\93§
\96¾
\8fó
\91Ô
\82Ì
\95Û
\91¶
1365 GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;
1368 procedure TEditorForm.TransActionUpdate(Sender: TObject);
1370 TransAction.Enabled := not FWork;
1372 //StatusBar
\82ÌPanels[0]
\82Ì
\95\9d\82ð
\89Â
\95Ï
\81B
\8ec
\82è
\82ð
\8cÅ
\92è
\82É
\82·
\82é
1373 procedure TEditorForm.StatusBarResize(Sender: TObject);
1375 StatusBar.Panels[0].Width := StatusBar.Width
1376 - StatusBar.Panels[1].Width - StatusBar.Panels[2].Width;
1380 //Form
\82ªActive
\82É
\82È
\82Á
\82½
\82ç
\8dÅ
\8fI
\8f\91\82«
\8d\9e\82Ý
\8e\9e\8aÔ
\82ð
\93Ç
\82Ý
\8d\9e\82Þ
1381 procedure TEditorForm.FormActivate(Sender: TObject);
1383 if ( FSambaTimer.Enabled ) and ( FThreadItem <> nil ) then
1385 FNow := FSambaTimer.Update;
1387 if GikoSys.Setting.GestureEnabled then begin
1388 GikoSys.Setting.Gestures.ClearGesture;
1389 GikoSys.Setting.Gestures.LoadGesture(
1390 GikoSys.Setting.GetGestureFileName, ActionList );
1391 MouseGesture.UnHook;
1392 MouseGesture.OnGestureStart := OnGestureStart;
1393 MouseGesture.OnGestureMove := OnGestureMove;
1394 MouseGesture.OnGestureEnd := OnGestureEnd;
1395 MouseGesture.SetHook( Handle );
1398 procedure TEditorForm.FormCloseQuery(Sender: TObject;
1399 var CanClose: Boolean);
1401 CanClose := not FWork;
1404 procedure TEditorForm.QuotePasteActionExecute(Sender: TObject);
1411 quote := GikoSys.GetOEIndentChar;
1412 s := TStringList.Create;
1414 s.Text := Clipboard.AsText;
1416 for i := s.Count - 1 downto 0 do
1417 s[ i ] := quote + s[ i ];
1419 BodyEdit.SelText := s.Text;
1426 procedure TEditorForm.SpaceToNBSPActionExecute(Sender: TObject);
1428 GikoSys.Setting.SpaceToNBSP := SpaceToNBSPAction.Checked;
1429 if EditorPage.ActivePage = PreviewTab then
1433 procedure TEditorForm.AmpToCharRefActionExecute(Sender: TObject);
1435 GikoSys.Setting.AmpToCharRef := AmpToCharRefAction.Checked;
1436 if EditorPage.ActivePage = PreviewTab then
1440 procedure TEditorForm.BoardTopClick(Sender: TObject);
1444 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
1446 BoardtopTab.TabVisible := BoardTop.Checked;
1447 ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
1455 procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
1457 memStream: TMemoryStream;
1458 URL, RefURL: string;
1459 settingBody: TStringList;
1462 if not FWork then begin
1465 tmpBoard := GetBoard;
1466 if tmpBoard <> nil then begin
1468 RefURL := tmpBoard.URL;
1469 if RefURL[Length(RefURL)] <> '/' then
1470 URL := RefURL + '/' + 'SETTING.TXT'
1472 URL := RefURL + 'SETTING.TXT';
1473 Screen.Cursor := crHourGlass;
1474 memStream := TMemoryStream.Create;
1477 StatusBar.Panels[0].Text := 'SETTING.TXT
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1478 GetWebData(URL, RefURL, tmpBoard.SETTINGTXTTime, memStream);
1479 if( Indy.ResponseCode = 200 ) then begin
1480 settingBody := TStringList.Create;
1482 memStream.Seek(0, soFromBeginning);
1483 settingBody.LoadFromStream(memStream);
1484 settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
1485 tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
1486 tmpBoard.IsSETTINGTXT := true;
1487 tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
1488 tmpBoard.Modified := true;
1492 StatusBar.Panels[0].Text := 'SETTING.TXT
\8eæ
\93¾
\8a®
\97¹(' + IntToStr(Indy.ResponseCode) + ')';
1495 on E: EIdException do begin
1496 if( AnsiPos('304', E.Message) > 0 ) then
1497 StatusBar.Panels[0].Text := 'SETTING.TXT
\8dX
\90V
\96³
\82µ(' + IntToStr(Indy.ResponseCode) + ')'
1499 StatusBar.Panels[0].Text := 'SETTING.TXT
\8eæ
\93¾
\83G
\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
1504 Screen.Cursor := crDefault;
1506 ShowBoardInformation(tmpBoard, BoardInformationMemo);
1512 procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
1517 AMemo.Lines.Add('[SETTING.TXT]');
1518 if ABoard.IsSETTINGTXT then begin
1519 if FileExists(ABoard.GetSETTINGTXTFileName) then begin
1520 AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + '
\8dX
\90V');
1521 body := TStringList.Create;
1523 body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
1524 AMemo.Lines.AddStrings(body);
1529 ABoard.IsSETTINGTXT := false;
1530 ABoard.SETTINGTXTTime := ZERO_DATE;
1531 AMemo.Lines.Add('Local
\82É
\95Û
\91¶
\82³
\82ê
\82½SETTING.TXT
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ');
1532 AMemo.Lines.Add('
\83\81\83j
\83\85\81[
\82æ
\82è
\8dÄ
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
1535 AMemo.Lines.Add('SETTING.TXT
\82ð
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B');
1536 AMemo.Lines.Add('
\83\81\83j
\83\85\81[
\82æ
\82è
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
1539 function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
1540 //BBS_TITLE_PICTURE=
1547 for i := 0 to body.Count - 1 do begin
1548 if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
1549 (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
1551 Delete(tmp, 1, AnsiPos('=', tmp));
1552 if AnsiPos('../', tmp) > 0 then begin
1553 tmp := CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
1561 procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
1563 if FThreadItem = nil then
1564 GetTitlePictureAction.Enabled := FBoard.IsSETTINGTXT
1566 GetTitlePictureAction.Enabled := FThreadItem.ParentBoard.IsSETTINGTXT;
1568 if GetTitlePictureAction.Enabled Then begin
1569 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
1570 GetTitlePictureAction.Enabled := not FWork;
1574 procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
1576 memStream: TMemoryStream;
1583 memStream := TMemoryStream.Create;
1585 tmpBoard := GetBoard;
1587 if (tmpBoard <> nil) and (tmpBoard.TitlePictureURL <> '') then begin
1588 StatusBar.Panels[0].Text := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1589 Screen.Cursor := crHourGlass;
1591 // URL
\82ð
\8ew
\92è
\82µ
\82Ä
\83\81\83\82\83\8a\82É
\93Ç
\82Ý
\8d\9e\82Þ
1592 GetWebData(tmpBoard.TitlePictureURL, tmpBoard.URL,
1593 ZERO_DATE, memStream);
1594 if Indy.ResponseCode = 200 then begin
1595 memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
1597 tmpBoard.Modified := true;
1599 StatusBar.Panels[0].Text := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
1606 Screen.Cursor := crDefault;
1610 \brief URL
\82Ì
\83f
\81[
\83^
\82ðstream
\82É
\93Ç
\82Ý
\8d\9e\82Þ
1611 \param URL
\93Ç
\82Ý
\8d\9e\82Þ
\90æ
1612 \param RefURL referer
\82É
\90Ý
\92è
\82·
\82é
1613 \param Modified Modified
\82É
\90Ý
\92è
\82·
\82é
1614 \param stream
\93Ç
\82Ý
\8d\9e\82ñ
\82¾
\83f
\81[
\83^
\82Ì
\95Û
\91¶
\90æ
1616 procedure TEditorForm.GetWebData(const URL: string; const RefURL: string;
1617 Modified: TDateTime; stream: TStream);
1620 Indy.Request.Referer := RefURL;
1621 Indy.Request.LastModified := Modified;
1623 IdAntiFreeze.Active := True;
1625 Indy.Get(URL, stream);
1627 IdAntiFreeze.Active := False;
1631 procedure TEditorForm.ShowTitlePicture();
1636 tmpBoard := GetBoard;
1638 if FileExists(tmpBoard.GetTitlePictureFileName) then begin
1639 TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
1641 s := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c\96¢
\8eæ
\93¾
\82Å
\82·
\81B<br>
\83\81\83j
\83\85\81[
\82æ
\82è
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B';
1642 SetContent(s, TitlePictureBrowser);
1646 function TEditorForm.GetFusianaName(body: TStringList; ABoard: TBoard): String;
1651 for i := 0 to body.Count - 1 do begin
1652 if (AnsiPos('BBS_NONAME_NAME=', body[i]) > 0) then begin
1654 Delete(tmp, 1, AnsiPos('=', tmp));
1661 procedure TEditorForm.GetHeadTXTActionExecute(Sender: TObject);
1663 URL, RefURL: string;
1664 settingBody: TStringList;
1666 memStream: TMemoryStream;
1668 if not FWork then begin
1671 tmpBoard := GetBoard;
1672 if (tmpBoard <> nil) then begin
1674 RefURL := tmpBoard.URL;
1675 if RefURL[Length(RefURL)] <> '/' then
1676 URL := RefURL + '/' + 'head.txt'
1678 URL := RefURL + 'head.txt';
1680 Screen.Cursor := crHourGlass;
1681 memStream := TMemoryStream.Create;
1683 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b(head.txt)
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1685 GetWebData(URL, RefURL, tmpBoard.HEADTXTTime, memStream);
1686 if( Indy.ResponseCode = 200 ) then begin
1687 settingBody := TStringList.Create;
1689 memStream.Seek(0, soFromBeginning);
1690 settingBody.LoadFromStream(memStream);
1691 settingBody.Insert(0, '<HTML lang="ja"><HEAD>');
1692 settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
1693 settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>');
1694 settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>');
1695 settingBody.Add('</BODY></HTML>');
1696 settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
1697 tmpBoard.HEADTXTTime := Indy.Response.LastModified;
1698 tmpBoard.IsHEADTXT := true;
1699 tmpBoard.Modified := true;
1703 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾
\8a®
\97¹(' + IntToStr(Indy.ResponseCode) + ')';
1706 on E: EIdException do begin
1707 if( AnsiPos('304', E.Message) > 0 ) then
1708 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8dX
\90V
\96³
\82µ(' + IntToStr(Indy.ResponseCode) + ')'
1710 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾
\83G
\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
1715 Screen.Cursor := crDefault;
1717 if tmpBoard.IsHEADTXT then begin
1718 ShowBoardHead(tmpboard, LocalEdit);
1726 procedure TEditorForm.CalcCapacityActionExecute(Sender: TObject);
1732 //
\82Ç
\82¤
\82à
\81A
\89ü
\8ds
\95ª
\82¸
\82ê
\82Ä
\82½
\82Á
\82Û
\82¢
\82¯
\82Ç
\81A
\96{
\93\96\82©
\82æ
\82
\95ª
\82©
\82ç
\82È
\82¢
\81B
1735 if Board.BoardPlugIn <> nil then
1736 body := CustomStringReplace(body, #13#10, '<br>')
1738 body := CustomStringReplace(body, #13#10, ' <br> ');
1739 StatusBar.Panels[0].Text := '
\97e
\97Ê:' + IntToStr(Length(body)) + ' byte';
1742 procedure TEditorForm.LocalRuleClick(Sender: TObject);
1746 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
1748 RocalRuleTab.TabVisible := LocalRule.Checked;
1749 ini.WriteBool('EditorForm', 'LocalRuleTab', RocalRuleTab.TabVisible);
1756 procedure TEditorForm.FormDeactivate(Sender: TObject);
1758 if GikoSys.Setting.GestureEnabled then begin
1759 GikoSys.Setting.Gestures.ClearGesture;
1760 MouseGesture.UnHook;
1761 MouseGesture.OnGestureStart := nil;
1762 MouseGesture.OnGestureMove := nil;
1763 MouseGesture.OnGestureEnd := nil;
1767 procedure TEditorForm.OnGestureStart(Sender: TObject);
1772 procedure TEditorForm.OnGestureMove(Sender: TObject);
1778 s := MouseGesture.GetGestureStr;
1780 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
1781 if Action <> nil then
1782 ActStr := '
\81i' + Action.Caption + '
\81j';
1783 s := '
\83W
\83F
\83X
\83`
\83\83\81[: ' + s + ActStr;
1784 StatusBar.Panels[0].Text := s;
1787 procedure TEditorForm.OnGestureEnd(Sender: TObject);
1792 s := MouseGesture.GetGestureStr;
1794 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
1795 if Action <> nil then
1797 StatusBar.Panels[0].Text := '';
1800 procedure TEditorForm.ShowBoardHead(ABoard: TBoard; AMemo: TMemo);
1805 //http://www.campus.ne.jp/~ishigami/CREATION/TECHNIC/WEBAP-2.htm
1806 WebBrowser1.Navigate(ABoard.GETHEADTXTFileName);
1807 //
\83\8c\83^
\83\8a\83\93\83O
\82ª
\92x
\82·
\82¬
\82ÄTXT
\82É
\88Ú
\82¹
\82È
\82¢
\81B
\82Ê
\82é
\82Ûorz
1808 //
\89º
\82Ì
\82æ
\82¤
\82É
\82¿
\82á
\82ñ
\82Æ
\93Ç
\82Ý
\8d\9e\82Ý
\82ª
\8fI
\82í
\82Á
\82Ä
\82¢
\82é
\82©
\81A
\83`
\83F
\83b
\83N
\82·
\82ê
\82Î
\82¢
\82¢
\82ñ
\82¾
\82æ
\81B
1809 //
\82±
\82ê
\82Å
\82¢
\82¯
\82Ü
\82µ
\82½
\81B
\82 \82è
\82ª
\82Æ
\82¤
\82²
\82´
\82¢
\82Ü
\82µ
\82½
\81B
1810 while (WebBrowser1.ReadyState <> READYSTATE_COMPLETE) and
1811 (WebBrowser1.ReadyState <> READYSTATE_INTERACTIVE) do begin
1812 Application.ProcessMessages;
1816 range := WebBrowser1.OleObject.Document.body.createTextRange;
1817 LocalEdit.Text := range.text;
1822 procedure TEditorForm.LocalRuleBrowseClick(Sender: TObject);
1832 URL := ABoard.GETHEADTXTFileName;
1833 GikoSys.OpenBrowser(URL, gbtAuto);
1836 procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject);
1838 SaveNameMailAction.Checked := not SaveNameMailAction.Checked;
1839 KotehanCheckBox.Enabled := SaveNameMailAction.Checked;
1842 function TEditorForm.LFusianaGet(const s: String): Boolean;
1844 FUSIANA = 'fusianasan';
1848 i := AnsiPos(FUSIANA, s);
1852 procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject);
1854 GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
1857 procedure TEditorForm.BeLogInOutEActionUpdate(Sender: TObject);
1859 if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
1860 if (GikoSys.Setting.BeLogin) then BeLogInOutEAction.Checked := true
1861 else BeLogInOutEAction.Checked := false;
1862 BeLogInOutEAction.Enabled := true
1864 BeLogInOutEAction.Enabled := false;
1867 // Cookie
\82Ì
\8eæ
\93¾
1868 procedure TEditorForm.GetCookie(Rawtext: String; ABoard: TBoard);
1870 COOKIE_MARK = 'Set-Cookie:';
1873 EXPIRES_MARK = 'expires=';
1879 ABoard.Cookie := '';
1880 while (AnsiPos(COOKIE_MARK, Rawtext) > 0 ) do begin
1882 tmp := Copy(Rawtext, AnsiPos(COOKIE_MARK, Rawtext) + Length(COOKIE_MARK), Length(Rawtext));
1883 Delete(Rawtext, 1, AnsiPos('Set-Cookie', Rawtext)+ Length(COOKIE_MARK));
1884 //Cookie
\82ð
\90Ø
\82è
\8fo
\82·
1885 val := Trim(GikoSys.GetTokenIndex(tmp, ';', 0));
1886 if( AnsiPos(VAL_SPID, val) > 0 ) then begin
1887 ABoard.SPID := Copy(val, AnsiPos(VAL_SPID, val) + Length(VAL_SPID), Length(val));
1888 end else if( AnsiPos(VAL_PON, val) > 0 ) then begin
1889 ABoard.PON := Copy(val, AnsiPos(VAL_PON, val) + Length(VAL_PON), Length(val));
1891 ABoard.Cookie := ABoard.Cookie + val + '; ';
1893 //expires
\82ð
\90Ø
\82è
\8fo
\82·
1894 val := Trim(GikoSys.GetTokenIndex(tmp, ';', 1));
1895 if( AnsiPos(EXPIRES_MARK, val) > 0) then begin
1896 Delete(val, 1, AnsiPos(EXPIRES_MARK, val) + Length(EXPIRES_MARK) - 1);
1897 ABoard.Expires := GMTToLocalDateTime(val);
1903 //!
\83T
\83\93\83o
\8dX
\90V
\82Ì
\83A
\83N
\83V
\83\87\83\93\82ÌUpdate
\83C
\83x
\83\93\83g
\81@
\8aÈ
\92P
\82Ì
\82½
\82ß
\83^
\83C
\83}
\81[
\82Æ
\93¯
\82¶
\82É
\82µ
\82Ä
\82¨
\82
1904 procedure TEditorForm.UpdateSambaActionUpdate(Sender: TObject);
1906 UpdateSambaAction.Enabled := FSambaTimer.Enabled;
1909 //!
\83T
\83\93\83o
\8dX
\90V
\83A
\83N
\83V
\83\87\83\93
1910 procedure TEditorForm.UpdateSambaActionExecute(Sender: TObject);
1915 if InputQuery('Samba24
\90Ý
\92è
\92l
\8dX
\90V', '
\90V
\82µ
\82¢
\90Ý
\92è
\92l
\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢', input) then begin
1916 input := ZenToHan(input);
1917 if GikoSys.IsNumeric(input) then begin
1918 FSambaTimer.UpdateSambaSetting(StrToInt(input));
1920 //
\91S
\82Ä
\82Ì
\83t
\83H
\81[
\83\80\82©
\82ç
\81ASamba
\83^
\83C
\83}
\81[
\82ð
\8dX
\90V
\82·
\82é
1921 for i := 0 to Screen.FormCount - 1 do begin
1922 if Screen.Forms[i] is TEditorForm then begin
1923 TEditorForm(Screen.Forms[i]).FSambaTimer.Update;
1924 TEditorForm(Screen.Forms[i]).UpdateSambaStatus;
1928 ShowMessage('
\90\94\92l
\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢');
1929 UpdateSambaActionExecute(Sender);
1934 procedure TEditorForm.UpdateSambaStatus;
1936 if (FSambaTimer.Enabled) then begin
1937 StatusBar.Panels[2].Text
1938 := 'Samba24
\8bK
\92è
\92l' + IntToStr(FSambaTimer.SambaInterval);
1942 procedure TEditorForm.InputAssistActionExecute(Sender: TObject);
1948 TextWidth, ItemWidth, tmpWidth: Integer;
1950 if FInputAssistKey = '' then Exit;
1952 InputAssistPopupMenu.Items.Clear;
1954 if (FResistWords = nil) then begin
1955 FResistWords := TStringList.Create;
1960 if (GetKeyState( VK_SHIFT ) < 0) then begin
1961 //
\83V
\83t
\83g
\82ª
\89\9f\82³
\82ê
\82Ä
\82¢
\82ê
\82Î
\81A
\83L
\81[
\82Å
\8en
\82Ü
\82é
\83J
\83e
\83S
\83\8a
1963 InputAssistDM.GetStartWithCategoryResistWords(
1964 FInputAssistKey, FResistWords);
1966 //
\83V
\83t
\83g
\82ª
\96³
\82¢
\82Ì
\82Å
\81A
\83L
\81[
\82Å
\8en
\82Ü
\82é
\83L
\81[
1968 InputAssistDM.GetStartWithKeyResistWords(
1969 FInputAssistKey, FResistWords);
1971 Bitmap := TBitmap.Create;
1973 Bitmap.Canvas.Font.Assign(BodyEdit.Font);
1974 //
\83}
\81[
\83W
\83\935px
1975 TextWidth := Bitmap.Canvas.TextWidth(FInputAssistKey) + 5;
1977 for i := 0 to count - 1 do begin
1978 item := TMenuItem.Create(nil);
1979 item.Break := mbNone;
1980 item.Caption := FResistWords[i];
1982 item.OnClick := InputAssistMenuClick;
1983 InputAssistPopupMenu.Items.Add(item);
1985 tmpWidth := Bitmap.Canvas.TextWidth(Item.Caption);
1986 if (tmpWidth > ItemWidth) then begin
1987 ItemWidth := tmpWidth;
1994 if (count > 0) then begin
1996 point.X := point.X + Self.Left + (Self.Width - BodyEdit.Width) div 2;
1997 point.Y := point.Y + Self.Top + (Self.Height - Self.ClientHeight);
1999 if Screen.DesktopWidth >
2000 (point.X + TextWidth + ItemWidth) then begin
2001 InputAssistPopupMenu.Popup(
2002 point.X + TextWidth,
2003 point.Y + EditorPage.Top + EditorPage.TabHeight + BodyEdit.Top);
2005 InputAssistPopupMenu.Popup(
2006 point.X - TextWidth - ItemWidth,
2007 point.Y + EditorPage.Top + EditorPage.TabHeight + BodyEdit.Top);
2012 procedure TEditorForm.InputAssistMenuClick(Sender: TObject);
2017 if not (Sender is TMenuItem) then Exit;
2019 if (FResistWords <> nil) then begin
2022 TResistWord(FResistWords.Objects[TMenuItem(Sender).Tag]).GetText;
2026 IMC := ImmGetContext(BodyEdit.Handle); //
\83R
\83\93\83e
\83L
\83X
\83g
\8eæ
\93¾
2028 ImmNotifyIME(IMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
2030 ImmReleaseContext(BodyEdit.Handle, IMC); //
\83R
\83\93\83e
\83L
\83X
\83g
\89ð
\95ú
2034 FInputAssistKey := '';
2036 InsertText(BodyEdit, text);
2039 //! TMemo
\82Ì
\83J
\81[
\83\
\83\8b\88Ê
\92u
\82É
\95¶
\8e\9a\97ñ
\91}
\93ü
2040 procedure TEditorForm.InsertText(Memo: TMemo; Text: String);
2042 line, sel, pos: Integer;
2043 left, right : String;
2045 Memo.Lines.BeginUpdate;
2046 line := SendMessage(Memo.Handle,EM_LINEFROMCHAR,-1,0); //
\8ds
2047 sel := Memo.SelStart;
2048 pos := sel - SendMessage(Memo.Handle, EM_LINEINDEX, -1, 0); //
\8c\85
2049 if (pos > 0) then begin
2050 left := Copy(Memo.Lines[line], 0, pos);
2054 right := Copy(Memo.Lines[line], pos + 1, Length(Memo.Lines[line]));
2055 Memo.Lines.Strings[line] := left + Text + right;
2056 Memo.Lines.EndUpdate;
2057 //
\81@
\83L
\83\83\83\8c\83b
\83g
\82Ì
\88Ê
\92u
\82ð
\8dX
\90V
\82·
\82é
2058 Memo.SelStart := sel + Length(text);
2059 //
\83L
\83\83\83\8c\83b
\83g
\82Ì
\88Ê
\92u
\82Ü
\82Å
\83X
\83N
\83\8d\81[
\83\8b
2060 Memo.Perform(EM_SCROLLCARET, 0, 0);
2064 procedure TEditorForm.ApplicationEvents1Message(var Msg: tagMSG;
2065 var Handled: Boolean);
2072 if (Self.Active) then begin
2074 //
\83L
\81[
\89\9f\89º
\82Ì
\82Ý
\8eó
\82¯
\8eæ
\82é
2077 //
\83^
\83u
\82ª
\81h
\95Ò
\8fW
\81h
\82ÅCtrl
\83L
\81[
\82ª
\89\9f\82³
\82ê
\82Ä
\82¢
\82é
\82Ì
\82ð
\8am
\94F
\82·
\82é
2078 if (EditorPage.ActivePageIndex = 0)
2079 and (GetKeyState( VK_CONTROL ) < 0) then begin
2080 wmMsg.Msg := Msg.message;
2081 wmMsg.CharCode := Word(Msg.wParam);
2082 wmMsg.KeyData := Msg.lParam;
2083 if (wmMsg.CharCode = 229) and (wmMsg.KeyData = 3735553) then begin
2084 IMC := ImmGetContext(BodyEdit.Handle); //
\83R
\83\93\83e
\83L
\83X
\83g
\8eæ
\93¾
2085 Len := ImmGetCompositionString(IMC, GCS_COMPSTR, nil, 0); //
\82Ü
\82¸
\92·
\82³
\82ð
\8eæ
\93¾
2086 if (Len > 0) then begin
2087 SetLength(Str, Len + 1); //Buffer
\82Ì
\83\81\83\82\83\8a\82ð
\90Ý
\92è
2088 ImmGetCompositionString(IMC, GCS_COMPSTR, PChar(Str), Len + 1); //
\82Ü
\82¸
\92·
\82³
\82ð
\8eæ
\93¾
2089 SetLength(Str, Len);
2090 FInputAssistKey := Str;
2091 InputAssistActionExecute(nil);
2094 ImmReleaseContext(BodyEdit.Handle, IMC); //
\83R
\83\93\83e
\83L
\83X
\83g
\89ð
\95ú
2103 procedure TEditorForm.ShowInputAssistFormExecute(Sender: TObject);
2105 form : TInputAssistForm;
2107 form := TInputAssistForm.Create(nil);
2109 if TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
2110 SetWindowPos(form.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2112 form.SetUpFromEditor;
2113 if (form.ShowModal = mrOk) then begin
2114 InsertText(BodyEdit, form.GetInsertText);
2120 //! Cookie
\8fî
\95ñ
\8dí
\8f\9c
2121 procedure TEditorForm.ReleaseCookieActionExecute(Sender: TObject);
2125 //
\83X
\83\8c\83b
\83h
\82ª
\96³
\82¢
\81@
\83X
\83\8c\97§
\82Ä
\82Ì
\82Æ
\82«
\82ÍFBoard
\82ð
\92¼
\90Ú
\8eg
\82¤
2128 //
\83N
\83b
\83L
\81[
\82Ì
\8fî
\95ñ
\82ð
\8eÌ
\82Ä
\82é
2132 // 0
\82É
\8aª
\82«
\96ß
\82·
2135 //!
\94Â
\8fî
\95ñ
\8eæ
\93¾Update
\83C
\83x
\83\93\83g
2136 procedure TEditorForm.GetSETTINGTXTActionUpdate(Sender: TObject);
2138 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
2139 GetSETTINGTXTAction.Enabled := not FWork;
2141 //!
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾Update
\83C
\83x
\83\93\83g
2142 procedure TEditorForm.GetHeadTXTActionUpdate(Sender: TObject);
2144 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
2145 GetSETTINGTXTAction.Enabled := not FWork;
2148 //! Samba
\83^
\83C
\83}
\81[
\83C
\83x
\83\93\83g
2149 procedure TEditorForm.SambaTimer(Sender: TObject);
2152 if FSambaTimer.WriteDeta = ZERO_DATE then
2153 StatusBar.Panels[1].Text := '
\8f\89\8f\91'
2155 FNow := IncMilliSecond(FNow, 500);
2156 StatusBar.Panels[1].Text :=
2157 Format('%8.0f
\95b
\8co
\89ß', [SecondSpan(FNow, FSambaTimer.WriteDeta)]);
2161 \brief
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82Æ
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
2163 procedure TEditorForm.SetWindowRect;
2165 wp: TWindowPlacement;
2167 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\90Ý
\92è
2168 wp.length := sizeof(wp);
2169 wp.rcNormalPosition.Top := GikoSys.Setting.EditWindowTop;
2170 wp.rcNormalPosition.Left := GikoSys.Setting.EditWindowLeft;
2172 wp.rcNormalPosition.Bottom := GikoSys.Setting.EditWindowTop + GikoSys.Setting.EditWindowHeight;
2173 wp.rcNormalPosition.Right := GikoSys.Setting.EditWindowLeft + GikoSys.Setting.EditWindowWidth;
2174 wp.showCmd := SW_HIDE;
2175 SetWindowPlacement(Handle, @wp);
2177 if GikoSys.Setting.EditWindowMax then begin
2178 WindowState := wsMaximized;
2181 //
\83E
\83B
\83\93\83h
\83E
\82ª
\89æ
\96Ê
\8aO
\82È
\82ç
\89æ
\96Ê
\93à
\82É
\88Ú
\93®
\82·
\82é
2182 if (Left + Width) > Screen.Width then begin
2185 if (Top + Height) > Screen.Height then begin
2188 if Left < 0 then begin
2191 if Top < 0 then begin
2195 //
\8c»
\8dÝ
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82ð
\95Û
\91¶
2196 GikoSys.Setting.EditWindowTop := Top + WINDOWMOVE_V; //
\8e\9f\82É
\8aJ
\82
\83E
\83B
\83\93\83h
\83E
\82Í
2197 GikoSys.Setting.EditWindowLeft := Left + WINDOWMOVE_H; //
\81@
\81@
\81@
\89E
\8eÎ
\82ß
\89º
\82É
\82¸
\82ç
\82·
2198 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\95\9d\82Æ
\8d\82\82³
\82ª
\8f¬
\82³
\82·
\82¬
\82¢
\82ê
\82Î
\8c³
\82É
\96ß
\82·
2199 if GikoSys.Setting.EditWindowHeight < 144 then begin
2202 if GikoSys.Setting.EditWindowWidth < 144 then begin
2207 \brief
\8ag
\92£
\83^
\83u
\90Ý
\92è
2209 procedure TEditorForm.SetExtraTab;
2211 SECTION = 'EditorForm';
2215 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
2217 BoardtopTab.TabVisible := ini.Readbool(SECTION, 'BoardTopTab', False);
2218 BoardTop.Checked := BoardtopTab.TabVisible;
2219 RocalRuleTab.TabVisible := ini.ReadBool(SECTION, 'LocalRuleTab', False);
2220 LocalRule.Checked := RocalRuleTab.TabVisible;
2227 \return
\83\8c\83X
\83G
\83f
\83B
\83^
\82ª
\93\8a\8de
\82µ
\82æ
\82¤
\82Æ
\82µ
\82Ä
\82¢
\82é
\94Â
2229 function TEditorForm.GetBoard : TBoard;
2231 //
\83X
\83\8c\83b
\83h
\83A
\83C
\83e
\83\80\82ªnull
\82Ì
\8e\9e\82ÍFBoard
2232 if FThreadItem = nil then begin
2235 Result := FThreadItem.ParentBoard;
2239 \brief GikoForm
\82É
\83\81\83b
\83Z
\81[
\83W
\82ð
\92Ç
\89Á
\82·
\82é
2240 \param icon
\83\81\83b
\83Z
\81[
\83W
\82É
\82Â
\82
\83A
\83C
\83R
\83\93
2242 procedure TEditorForm.AddFormMessageNew(icon: TGikoMessageIcon);
2244 if FThreadItem = nil then begin
2245 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, icon)
2247 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, icon);
2252 \brief
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
2253 \return true:
\91\97\90M
\92\86\8e~ false:
\91\97\90M
2255 function TEditorForm.isLocalFusianaTrap: Boolean;
2260 if GikoSys.Setting.LocalTrapAtt then begin
2261 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
2262 if (LFusianaGet(Namae)) or (Namae = '
\8eR
\8dè
\8fÂ') then begin
2263 if FusianaMsgBox = IDNO then begin
2270 \brief
\83\8a\83\82\81[
\83gfusiana
\83g
\83\89\83b
\83v
2271 \return true:
\91\97\90M
\92\86\8e~ false:
\91\97\90M
2273 function TEditorForm.isRemoteFusianaTrap: Boolean;
2281 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
2282 if (GikoSys.Setting.RemoteTrapAtt) and (Length(Namae) = 0) then begin
2285 if Board = nil then Exit;
2287 if not FileExists(Board.GetSETTINGTXTFileName) then begin
2288 //Setting.txt
\82ª
\82È
\82©
\82Á
\82½
\82ç
\8eæ
\93¾
2289 //
\8eI
\82É
\95\89\89×
\82ª
\82©
\82©
\82è
\82»
\82¤...
2291 GetSETTINGTXTAction.Execute;
2297 if FileExists(Board.GetSETTINGTXTFileName) then begin
2298 body := TStringList.Create;
2300 body.LoadFromFile(Board.GetSETTINGTXTFileName);
2301 Remote := GetFusianaName(body, Board);
2307 if LFusianaGet(Remote) then begin
2308 if FusianaMsgBox = IDNO then begin
2315 \brief Header
\95¶
\8e\9a\97ñ
\8eæ
\93¾
2316 \param ACOOKIE Cookie
2320 \return Header
\95¶
\8e\9a\97ñ
2322 function TEditorForm.getHeaderStr(const ACOOKIE: string; const SPID : string;
2323 const PON : string; Board : TBoard) : string;
2327 Result := Result + 'SPID=' + SPID + '; ';
2329 Result := Result + 'PON=' + PON + '; ';
2331 //
\83z
\83X
\83g
\82ª2ch
\82Å
\81ABe
\82ÉLogin
\82µ
\82Ä
\82¢
\82ê
\82ÎBE
\82Ì
\83f
\81[
\83^
\82ð
\91\97\82é
2332 //GikoSys.ParseURI( URL, Protocol,Host, Path, Document, Port, Bookmark );
2333 //if GikoSys.Is2chHost(Host) and GikoSys.Setting.BeLogin then
2334 if (Board.Is2ch) then begin
2335 //
\8cÅ
\92è
\82Ì
\83N
\83b
\83L
\81[
\82ª
\82 \82ê
\82Î
\90H
\82í
\82¹
\82é
2336 if Length(GikoSys.Setting.FixedCookie) > 0 then begin
2337 //
\83z
\83X
\83g
\82ª2ch
\82Ì
\8fê
\8d\87\81C
\8cÅ
\92è
\82Ì
\83N
\83b
\83L
\81[
\82ð
\90H
\82í
\82¹
\82é
2338 Result := Result + GikoSys.Setting.FixedCookie + '; ';
2340 if (GikoSys.Setting.BeLogin) then begin
2341 Result := Result + 'MDMD=' + GikoSys.Setting.BeCode + '; '
2342 + 'DMDM=' + GikoSys.Setting.BeUserID + '; ';
2347 Result := 'Cookie: ' + Result + 'NAME=' + NameComboBox.Text + '; MAIL=' + MailComboBox.Text;
2351 \brief fusiana
\8cx
\8d\90\83_
\83C
\83A
\83\8d\83O
2352 \return IDYES
\8f\91\82«
\8d\9e\82Þ IDNO
\92\86\8e~
2354 function TEditorForm.FusianaMsgBox: Integer;
2356 MSG_FUSIANA : string = '
\83\8a\83\82\81[
\83g
\83z
\83X
\83g
\82ð
\95\
\8e¦
\82·
\82é
\8b@
\94\
\82ª
\8eg
\82í
\82ê
\82Ä
\82¢
\82Ü
\82·'#13#10 +
2357 '
\82à
\82µ
\82à
\8aÔ
\88á
\82Á
\82Ä
\82±
\82Ì
\95û
\96@
\82Å
\83z
\83X
\83g
\82ª
\95\
\8e¦
\82³
\82ê
\82½
\82Æ
\82µ
\82Ä
\82à
\81A
\8e©
\8cÈ
\90Ó
\94C
\82È
\82Ì
\82Å
\8dí
\8f\9c\88Ë
\97\8a\82É
\82Í
\89\9e\82¶
\82Ü
\82¹
\82ñ
\81B' +
2358 #13#10#13#10'
\90Ó
\94C
\82ð
\95\89\82¤
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ä
\8f\91\82«
\8d\9e\82Ý
\82Ü
\82·
\82©
\81H';
2360 Result := MsgBox(Handle, MSG_FUSIANA, '
\8fî
\95ñ',
2361 MB_YESNO or MB_ICONQUESTION);
2364 \brief
\98A
\93\8a\83\82\81[
\83hON/OFF
\90Ø
\82è
\91Ö
\82¦
2366 procedure TEditorForm.ContinueModeActionExecute(Sender: TObject);
2368 ContinueModeAction.Checked := not ContinueModeAction.Checked;
2371 \brief
\98A
\93\8a\83\82\81[
\83h
\8dX
\90V
\8f\88\97\9d
2373 procedure TEditorForm.ContinueModeActionUpdate(Sender: TObject);
2375 //
\83X
\83\8c\82½
\82Ä
\82Ì
\82Æ
\82«
\82Í
\96³
\8cø
2376 ContinueModeAction.Enabled := FThreadItem <> nil;
2379 \brief
\8f\91\82«
\8d\9e\82Þ
\94Â/
\83X
\83\8c\83b
\83h
\82ð
\95\
\8e¦
\82·
\82é
2381 procedure TEditorForm.OpenSendTargetActionExecute(Sender: TObject);
2383 if (FThreadItem <> nil) then begin
2384 //
\83\81\83C
\83\93\82ð
\8dX
\90V
\82µ
\82Ä
\82µ
\82Ü
\82¤
\82Ì
\82Å
\89æ
\96Ê
\82ª
\83p
\83^
\83p
\83^
\90Ø
\82è
\91Ö
\82í
\82é
\82Ì
\82ð
\96h
\82®
\82½
\82ß
\82É
2385 //
\91O
\96Ê
\82Å
\8cÅ
\92è
\82·
\82é
2386 if not (fsShowing in Self.FormState) then begin
2387 //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
2388 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2391 //
\83X
\83\8c\83b
\83h
2392 GikoForm.InsertBrowserTab(FThreadItem, True);
2394 if not TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\89ð
\8f\9c
2395 SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2401 GikoForm.SelectTreeNode(
2405 procedure TEditorForm.ReloadTargetActionExecute(Sender: TObject);
2407 if (FThreadItem <> nil) then begin
2408 //
\83X
\83\8c\83b
\83h
2409 //
\83\81\83C
\83\93\82ð
\8dX
\90V
\82µ
\82Ä
\82µ
\82Ü
\82¤
\82Ì
\82Å
\89æ
\96Ê
\82ª
\83p
\83^
\83p
\83^
\90Ø
\82è
\91Ö
\82í
\82é
\82Ì
\82ð
\96h
\82®
\82½
\82ß
\82É
2410 //
\91O
\96Ê
\82Å
\8cÅ
\92è
\82·
\82é(
\83_
\83E
\83\93\83\8d\81[
\83h
\82ª
\94
\90¶
\82·
\82é
\82Æ
\90Ø
\82è
\91Ö
\82í
\82Á
\82Ä
\82µ
\82Ü
\82¤
\82ª
\82 \82«
\82ç
\82ß
\82é)
2411 if not (fsShowing in Self.FormState) then begin
2412 //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
2413 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2416 GikoForm.DownloadContent(FThreadItem);
2418 if not TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\89ð
\8f\9c
2419 SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2425 GikoForm.DownloadList(GetBoard);