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;
138 procedure EditorPageChange(Sender: TObject);
139 procedure FormCreate(Sender: TObject);
140 procedure BrowserStatusTextChange(Sender: TObject;
141 const Text: WideString);
142 procedure FormClose(Sender: TObject; var Action: TCloseAction);
143 procedure FormDestroy(Sender: TObject);
144 procedure SendActionExecute(Sender: TObject);
145 procedure SaveActionExecute(Sender: TObject);
146 procedure AbortActionExecute(Sender: TObject);
147 procedure CloseActionExecute(Sender: TObject);
148 procedure UndoActionExecute(Sender: TObject);
149 procedure CutActionExecute(Sender: TObject);
150 procedure CopyActionExecute(Sender: TObject);
151 procedure PasteActionExecute(Sender: TObject);
152 procedure SendActionUpdate(Sender: TObject);
153 procedure SaveActionUpdate(Sender: TObject);
154 procedure CloseActionUpdate(Sender: TObject);
155 procedure UndoActionUpdate(Sender: TObject);
156 procedure CutActionUpdate(Sender: TObject);
157 procedure CopyActionUpdate(Sender: TObject);
158 procedure PasteActionUpdate(Sender: TObject);
159 procedure TopActionExecute(Sender: TObject);
160 procedure TopActionUpdate(Sender: TObject);
161 procedure SageCheckBoxClick(Sender: TObject);
162 procedure MailComboBoxChange(Sender: TObject);
163 procedure TransActionExecute(Sender: TObject);
164 procedure TransActionUpdate(Sender: TObject);
165 procedure IdLogDebugReceive(ASender: TIdConnectionIntercept;
167 procedure IdLogDebugSend(ASender: TIdConnectionIntercept;
169 procedure SelectAllActionExecute(Sender: TObject);
170 procedure StatusBarResize(Sender: TObject);
171 procedure FormActivate(Sender: TObject);
172 procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
173 procedure QuotePasteActionExecute(Sender: TObject);
174 procedure SpaceToNBSPActionExecute(Sender: TObject);
175 procedure AmpToCharRefActionExecute(Sender: TObject);
176 procedure BoardTopClick(Sender: TObject);
177 procedure GetSETTINGTXTActionExecute(Sender: TObject);
178 procedure GetTitlePictureActionUpdate(Sender: TObject);
179 procedure GetTitlePictureActionExecute(Sender: TObject);
180 procedure GetHeadTXTActionExecute(Sender: TObject);
181 procedure CalcCapacityActionExecute(Sender: TObject);
182 procedure LocalRuleClick(Sender: TObject);
183 procedure FormDeactivate(Sender: TObject);
184 procedure LocalRuleBrowseClick(Sender: TObject);
185 procedure SaveNameMailActionExecute(Sender: TObject);
186 procedure BeLogInOutEActionExecute(Sender: TObject);
187 procedure BeLogInOutEActionUpdate(Sender: TObject);
188 procedure UpdateSambaActionUpdate(Sender: TObject);
189 procedure UpdateSambaActionExecute(Sender: TObject);
190 procedure InputAssistActionExecute(Sender: TObject);
191 procedure ApplicationEvents1Message(var Msg: tagMSG;
192 var Handled: Boolean);
193 procedure ShowInputAssistFormExecute(Sender: TObject);
194 procedure ReleaseCookieActionExecute(Sender: TObject);
195 procedure GetSETTINGTXTActionUpdate(Sender: TObject);
196 procedure GetHeadTXTActionUpdate(Sender: TObject);
198 FThreadItem: TThreadItem;
200 FNameComboEdit: THandle;
201 FMailComboEdit: THandle;
204 FStatusCode: Integer;
205 FDebugStrReceive: string;
206 FDebugStrSend: string;
208 FGestures : TMouseGesture;
209 FInputAssistKey: String; ///<
\93ü
\97Í
\83A
\83V
\83X
\83g
\82Ì
\83L
\81[
210 FResistWords: TStringList; ///<
\93ü
\97Í
\83A
\83V
\83X
\83g
\82Ì
\8e«
\8f\91\82©
\82ç
\82Ì
\8c\9f\8dõ
\8c\8b\89Ê
211 FSambaTimer: TSambaTimer; ///< Samba
\91Î
\8dô
\82Ì
\83^
\83C
\83}
\81[
213 function Check: Boolean;
214 procedure SetNameList(sName, sMail: string);
215 procedure Send(const ACOOKIE: string; const SPID: string; const PON: string; FirstWriting: Boolean);
216 function GetActiveControlHandle: THandle;
217 procedure GetSendData(Source: TStringStream);
218 procedure SaveSendFile;
219 procedure SetContent(Content: string; ABrowser: TWebBrowser);
220 function GetResultType(ResponseText: string): TGikoResultType;
221 ///
\96{
\95¶
\82Ì
\8eæ
\93¾
222 function GetBody : string;
223 //IdHttp
\82Ì
\8f\89\8aú
\89»
224 procedure InitIdHTTP(http: TIdHTTP);
225 procedure ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
226 function GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
227 procedure ShowTitlePicture();
228 function GetFusianaName(body: TStringList; ABoard: TBoard): String;
229 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8aJ
\8en
230 procedure OnGestureStart(Sender: TObject);
231 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\92\86
232 procedure OnGestureMove(Sender: TObject);
233 //!
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\8fI
\97¹
234 procedure OnGestureEnd(Sender: TObject);
235 //HEAD.TXT
\8e©
\93®
\95\
\8e¦
236 procedure ShowBoardHead(ABoard: TBoard; AMemo: TMemo);
237 //LocalFusianaTrapAlart
238 function LFusianaGet(const s: String): Boolean;
239 // Cookie
\82Ì
\8eæ
\93¾
240 procedure GetCookie(Rawtext: String; ABoard: TBoard);
241 //!
\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
242 procedure InputAssistMenuClick(Sender: TObject);
243 //! TMemo
\82Ì
\83J
\81[
\83\
\83\8b\88Ê
\92u
\82É
\95¶
\8e\9a\97ñ
\91}
\93ü
244 procedure InsertText(Memo: TMemo; Text: String);
245 //!
\91\97\90M
\92\86\8e~
246 procedure CancelSend(ABoard: TBoard; ASysMenu: HMENU);
247 //! Samba
\83^
\83C
\83}
\81[
\83C
\83x
\83\93\83g
248 procedure SambaTimer(Sender: TObject);
249 //!
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82Æ
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
250 procedure SetWindowRect;
251 //!
\8ag
\92£
\83^
\83u
\90Ý
\92è
252 procedure SetExtraTab;
254 function GetBoard : TBoard;
255 //! URL
\82Ì
\83f
\81[
\83^
\82ðstream
\82É
\8eæ
\82è
\8d\9e\82Þ
256 procedure GetWebData(const URL: string; const RefURL: string;
257 Modified: TDateTime; stream: TStream);
258 //! GikoForm
\82É
\90V
\92\85\83\81\83b
\83Z
\81[
\83W
\82ð
\92Ç
\89Á
\82·
\82é
259 procedure AddFormMessageNew(icon: TGikoMessageIcon);
260 //!
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
261 function isLocalFusianaTrap: Boolean;
262 //!
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
263 function isRemoteFusianaTrap: Boolean;
264 //! Header
\95¶
\8e\9a\97ñ
\8eæ
\93¾
265 function getHeaderStr(const ACOOKIE: string; const SPID : string;
266 const PON : string; Board : TBoard) : string;
267 //! fusiana
\8cx
\8d\90\83_
\83C
\83A
\83\8d\83O
268 function FusianaMsgBox: Integer;
269 //! sent.ini
\83t
\83@
\83C
\83\8b\82Ì
\90¶
\90¬
270 function CreateSentIniFile: TMemIniFile;
272 procedure CreateParams(var Params: TCreateParams); override;
276 procedure SetThreadItem(Item: TThreadItem);
277 procedure SetBoard(Item: TBoard);
278 procedure UpdateSambaStatus;
279 property BBSID: string read FBBSID write FBBSID;
285 Giko, ItemDownload, MojuUtils, IdGlobal, GikoMessage, Imm,
286 InputAssistDataModule, InputAssist, HTMLCreate;
288 CAPTION_NAME_NEW: string = '
\83M
\83R
\83i
\83r
\83X
\83\8c\97§
\82Ä
\83G
\83f
\83B
\83^';
289 CAPTION_NAME_RES: string = '
\83M
\83R
\83i
\83r
\83\8c\83X
\83G
\83f
\83B
\83^';
291 //
\83G
\83f
\83B
\83b
\83g
\83E
\83B
\83\93\83h
\83E
\82ð
\89E
\89º
\82É
\82¸
\82ç
\82µ
\82Ä
\8aJ
\82
\88Ú
\93®
\97Ê
295 //DAX
\82³
\82ñ±Ø¶ÞÄ!(
\81L
\81¤
\81M)
296 READCGI_ERR = '-ERR';
297 READCGI_INCR = '-INCR';
299 READCGI_PARTIAL = '+PARTIAL';
300 READCGI_ERR_FOUND_KAKO = '-ERR
\89ß
\8b\8e\83\8d\83O
\91q
\8cÉ
\82Å
\94
\8c©';
301 READCGI_ERR_NOT_HTML = '-ERR html
\89»
\91Ò
\82¿';
302 READCGI_ERR_NOT_FOUND = '-ERR
\82»
\82ñ
\82È
\94Âor
\83X
\83\8c\83b
\83h
\82È
\82¢
\82Å
\82·
\81B';
303 READCGI_ERR_ABONE = '-ERR
\82Ç
\82±
\82©
\82Å
\82 \82Ú
\81[
\82ñ
\82ª
\82 \82Á
\82½
\82Ý
\82½
\82¢
\82Å
\82·
\81B';
304 READCGI_ERR_TIMEOUT = '-ERR
\8ew
\92è
\8e\9e\8aÔ
\82ª
\89ß
\82¬
\82Ü
\82µ
\82½
\81B';
305 READCGI_ERR_CANTUSE = '-ERR
\82à
\82¤
\81@
\82Â
\82©
\82¦
\82Ü
\82¹
\82ñ';
306 RES2CH_TRUE = '<!-- 2ch_X:true -->';
307 RES2CH_FALSE = '<!-- 2ch_X:false -->';
308 RES2CH_ERROR = '<!-- 2ch_X:error -->';
309 RES2CH_CHECK = '<!-- 2ch_X:check -->';
310 RES2CH_COOKIE = '<!-- 2ch_X:cookie -->';
314 StartPos, EndPos: Integer;
319 {constructor TEditorForm.Create(AOwner: TComponent; Item: TBoard);
321 inherited Create(AOwner);
324 procedure TEditorForm.CreateParams(var Params: TCreateParams);
327 if FormStyle in [fsNormal, fsStayOnTop] then
328 if BorderStyle in [bsSingle, bsSizeable] then begin
329 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
330 Params.WndParent := 0;
334 {procedure TEditorForm.CreateParams(var Params: TCreateParams);
336 inherited CreateParams(Params);
337 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
340 procedure TEditorForm.FormCreate(Sender: TObject);
343 FSambaTimer := TSambaTimer.Create(Self);
344 FSambaTimer.Interval := 0;
345 Browser.Navigate('about:blank');
346 TitlePictureBrowser.Navigate('about:blank');
350 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\90Ý
\92è
353 EditorPage.ActivePage := EditorTab;
354 FNameComboEdit := GetWindow(NameComboBox.Handle, GW_CHILD);
355 FMailComboEdit := GetWindow(MailComboBox.Handle, GW_CHILD);
356 NameComboBox.Items.Assign(GikoSys.Setting.NameList);
357 MailComboBox.Items.Assign(GikoSys.Setting.MailList);
359 //
\94¼
\93§
\96¾
\97\98\97p
\89Â
\94\
\90Ý
\92è
360 TransAction.Enabled := GikoSys.CanUser32DLL;
362 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\83X
\83e
\83C
\8fó
\91Ô
363 if GikoSys.Setting.EditWindowStay then begin //
\83X
\83e
\83C
\8fó
\91Ô
364 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
365 TopAction.Checked := true;
366 TopToolButton.Down := true;
367 end else begin //
\83X
\83e
\83C
\82µ
\82È
\82¢
368 SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
369 TopAction.Checked := false;
370 TopToolButton.Down := false;
373 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\94¼
\93§
\96¾
\8fó
\91Ô
374 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Ô
376 TransAction.Checked := true;
377 TransToolButton.Down := true;
378 end else begin //
\95s
\93§
\96¾
380 TransAction.Checked := false;
381 TransToolButton.Down := false;
383 //
\94¼
\93§
\96¾
\8fó
\91Ô
\82Ì
\95Û
\91¶
384 GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;
386 SpaceToNBSPAction.Checked := GikoSys.Setting.SpaceToNBSP;
387 AmpToCharRefAction.Checked := GikoSys.Setting.AmpToCharRef;
388 //
\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è
391 //
\83L
\81[
\90Ý
\92è
\82Ì
\93Ç
\82Ý
\8d\9e\82Ý
392 GikoSys.LoadKeySetting(ActionList, GikoSys.GetEditorKeyFileName);
393 //
\83}
\83E
\83X
\83W
\83F
\83X
\83`
\83\83\81[
\82Ì
\83C
\83\93\83X
\83g
\81[
\83\8b
394 if GikoSys.Setting.GestureEnabled then begin
396 FGestures := TMouseGesture.Create;
397 GikoSys.Setting.Gestures.ClearGesture;
399 GikoSys.Setting.Gestures.LoadGesture(
400 GikoSys.Setting.GetGestureFileName, ActionList );
401 MouseGesture.OnGestureStart := OnGestureStart;
402 MouseGesture.OnGestureMove := OnGestureMove;
403 MouseGesture.OnGestureEnd := OnGestureEnd;
404 MouseGesture.SetHook( Handle );
406 SaveNameMailAction.Checked := True;
408 procedure TEditorForm.SetBoard(Item: TBoard);
411 Caption := CAPTION_NAME_NEW + ' - [' + Item.Title + ']';
412 NameComboBox.Text := FBoard.KotehanName;
413 MailComboBox.Text := FBoard.KotehanMail;
414 SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
415 TitlePanel.Visible := True;
417 if (FSambaTimer.SetBoard(FBoard) >= 0) then begin
420 FSambaTimer.OnTimer := SambaTimer;
423 ShowBoardInformation(FBoard, BoardInformationMemo);
427 procedure TEditorForm.SetThreadItem(Item: TThreadItem);
430 Caption := CAPTION_NAME_RES + ' - [' + FThreadItem.Title + ']';
431 NameComboBox.Text := FThreadItem.ParentBoard.KotehanName;
432 MailComboBox.Text := FThreadItem.ParentBoard.KotehanMail;
433 SageCheckBox.Checked := AnsiPos('sage', MailComboBox.Text) <> 0;
434 TitlePanel.Visible := False;
436 if (FSambaTimer.SetBoard(FThreadItem.ParentBoard) >= 0) then begin
439 FSambaTimer.OnTimer := SambaTimer;
442 ShowBoardInformation(FThreadItem.ParentBoard, BoardInformationMemo);
446 function TEditorForm.GetBody : string;
455 body := BodyEdit.Text;
456 if AmpToCharRefAction.Checked then
457 // &
\82Ì
\92u
\8a·
\82Í
\88ê
\94Ô
\8dÅ
\8f\89\82É
\82â
\82é
\82±
\82Æ
458 body := CustomStringReplace( body, '&', '&' );
459 if SpaceToNBSPAction.Checked then begin
461 tail := p + Length( body );
463 while p < tail do begin
470 tmp := tmp + ' ';
471 until (len mod TAB_LENGTH) = 0;
476 tmp := tmp + p^; Inc( p );
482 tmp := tmp + ' ';
488 //
\8eÀ
\91Ì
\8eQ
\8fÆ
\82Í 1
\95¶
\8e\9a\95ª
493 while p < tail do begin
494 if p^ in ['a'..'z', 'A'..'Z', '0'..'9', '#'] then begin
496 end else if p^ = ';' then begin
508 if p^ in kYofKanji then begin
509 tmp := tmp + p^; Inc( p );
510 tmp := tmp + p^; Inc( p );
513 tmp := tmp + p^; Inc( p );
525 procedure TEditorForm.SetFont;
527 BodyEdit.Font.Name := GikoSys.Setting.EditorFontName;
528 BodyEdit.Font.Size := GikoSys.Setting.EditorFontSize;
529 BodyEdit.Font.Color := GikoSys.Setting.EditorFontColor;
530 BodyEdit.Color := GikoSys.Setting.EditorBackColor;
533 procedure TEditorForm.Preview;
542 if FThreadItem = nil then begin
544 Title := THTMLCreate.RepHtml(TitleEdit.Text);
546 No := IntToStr(FThreadItem.Count + 1);
547 Title := THTMLCreate.RepHtml(FThreadItem.Title);
551 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
552 Mail := THTMLCreate.RepHtml(MailComboBox.Text);
553 Body := THTMLCreate.RepHtml(Body);
554 Body := CustomStringReplace(Body, #13#10, '<br>', False);
557 if Trim(Namae) = '' then
558 Namae := '
\96¼
\96³
\82µ
\82³
\82ñ';
560 s := THTMLCreate.CreatePreviewHTML(Title, No, Mail, Namae, Body);
562 SetContent(s, Browser);
565 procedure TEditorForm.EditorPageChange(Sender: TObject);
570 tmpBoard := GetBoard;
572 if tmpBoard = nil then Exit;
574 if EditorPage.ActivePage = PreviewTab then begin
576 end else if EditorPage.ActivePage = RocalRuleTab then begin
577 if not FileExists(tmpBoard.GETHEADTXTFileName) then begin
578 LocalEdit.Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\96¢
\8eæ
\93¾';
581 ShowBoardHead(tmpBoard, LocalEdit);
583 Browser.Navigate('about:blank');
587 procedure TEditorForm.BrowserStatusTextChange(Sender: TObject;
588 const Text: WideString);
590 if EditorPage.ActivePage = PreviewTab then begin
591 StatusBar.Panels[0].Text := Text;
593 StatusBar.Panels[0].Text := '';
597 function TEditorForm.Check: Boolean;
599 REQUIRED: string = '
\82ª
\93ü
\97Í
\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B';
600 ERROR: string = '
\83G
\83\89\81[';
610 if (not GikoSys.Setting.UseMachineTime) and
611 ((Board.LastGetTime = 0) or
612 (Board.LastGetTime = ZERO_DATE)) then begin
613 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
614 + '
\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¢';
615 MsgBox(Handle, Msg, ERROR, MB_OK or MB_ICONSTOP);
617 end else if BodyEdit.Text = '' then begin
618 Msg := '
\96{
\95¶' + REQUIRED;
619 MsgBox(Handle, Msg, ERROR, MB_OK or MB_ICONSTOP);
621 end else if (FBoard <> nil) and (Trim(TitleEdit.Text) = '') then begin
622 Msg := '
\83^
\83C
\83g
\83\8b' + REQUIRED;
623 MsgBox(Handle, Msg, ERROR, MB_OK or MB_ICONSTOP);
626 if (not GikoSys.Dolib.Connected) and (AnsiPos('
\81\9c', NameComboBox.Text) <> 0) then begin
627 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
628 + '
\82±
\82Ì
\82Ü
\82Ü
\91\97\90M
\82µ
\82Ä
\82à
\82æ
\82ë
\82µ
\82¢
\82Å
\82·
\82©
\81H';
629 rc := MsgBox(Handle, Msg, '
\8am
\94F', MB_YESNO or MB_ICONQUESTION);
630 Result := (rc = IDYES);
635 procedure TEditorForm.FormClose(Sender: TObject; var Action: TCloseAction);
641 procedure TEditorForm.FormDestroy(Sender: TObject);
643 wp: TWindowPlacement;
645 //
\8dÅ
\91å
\89»
\81E
\83E
\83B
\83\93\83h
\83E
\88Ê
\92u
\95Û
\91¶
646 wp.length := sizeof(wp);
647 GetWindowPlacement(Handle, @wp);
649 GikoSys.Setting.EditWindowTop := wp.rcNormalPosition.Top;
650 GikoSys.Setting.EditWindowLeft := wp.rcNormalPosition.Left;
651 GikoSys.Setting.EditWindowHeight := wp.rcNormalPosition.Bottom - wp.rcNormalPosition.Top;
652 GikoSys.Setting.EditWindowWidth := wp.rcNormalPosition.Right - wp.rcNormalPosition.Left;
653 GikoSys.Setting.EditWindowMax := WindowState = wsMaximized;
654 //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop; //
\83X
\83e
\83C
\8fó
\91Ô
\82Ì
\95Û
\91¶
655 GikoSys.Setting.EditWindowTranslucent := TransAction.Checked; //
\94¼
\93§
\96¾
\8fó
\91Ô
\82Ì
\95Û
\91¶
661 procedure TEditorForm.SetNameList(sName, sMail: string);
663 if SaveNameMailAction.Checked then begin
664 if Trim(sName) <> '' then begin
665 if GikoSys.Setting.NameList.IndexOf(sName) = -1 then
666 GikoSys.Setting.NameList.Insert(0, sName);
668 if Trim(sMail) <> '' then begin
669 if GikoSys.Setting.MailList.IndexOf(sMail) = -1 then
670 GikoSys.Setting.MailList.Insert(0, sMail);
675 function TEditorForm.GetActiveControlHandle: THandle;
677 if EditorPage.ActivePage = EditorTab then begin
678 if ActiveControl = NameComboBox then
679 Result := FNameComboEdit
680 else if ActiveControl = MailComboBox then
681 Result := FMailComboEdit
682 else if ActiveControl = BodyEdit then
683 Result := BodyEdit.Handle
684 else if ActiveControl = TitleEdit then
685 Result := TitleEdit.Handle
688 end else if Editorpage.ActivePage = BoardInformationTab then begin
689 if ActiveControl = BoardInformationMemo then
690 Result := BoardInformationMemo.Handle
693 end else if Editorpage.ActivePage = RocalRuleTab then begin
694 if ActiveCOntrol = LocalEdit then
695 Result := LocalEdit.Handle
702 procedure TEditorForm.SetContent(Content: string; ABrowser: TWebBrowser);
706 if ABrowser.Document <> nil then begin
707 doc := Idispatch( olevariant(ABrowser.ControlInterface).Document) as IHTMLDocument2;
710 doc.charset := 'Shift_JIS';
715 procedure TEditorForm.InitIdHTTP(http: TIdHTTP);
718 http.ProxyParams.BasicAuthentication := False;
719 if GikoSys.Setting.WriteProxy then begin
720 http.ProxyParams.ProxyServer := GikoSys.Setting.WriteProxyAddress;
721 http.ProxyParams.ProxyPort := GikoSys.Setting.WriteProxyPort;
722 http.ProxyParams.ProxyUsername := GikoSys.Setting.WriteProxyUserID;
723 http.ProxyParams.ProxyPassword := GikoSys.Setting.WriteProxyPassword;
724 if GikoSys.Setting.ReadProxyUserID <> '' then
725 http.ProxyParams.BasicAuthentication := True;
727 http.ProxyParams.ProxyServer := '';
728 http.ProxyParams.ProxyPort := 80;
729 http.ProxyParams.ProxyUsername := '';
730 http.ProxyParams.ProxyPassword := '';
732 Indy.Request.UserAgent := GikoSys.GetUserAgent;
733 Indy.Request.AcceptEncoding := '';
735 //!
\91\97\90M
\92\86\8e~
\82Ì
\82½
\82ß
\82Ì
\83\81\83j
\83\85\81[
\82Ì
\8dÄ
\90¶
736 procedure TEditorForm.CancelSend(ABoard: TBoard; ASysMenu: HMENU);
741 EnableMenuItem(ASysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
745 procedure TEditorForm.Send( const ACOOKIE: string; const SPID: string;
746 const PON: string; FirstWriting: Boolean);
748 TextStream: TStringStream;
749 Source: TStringStream;
750 ResponseText: string;
752 State: TGikoDownloadState;
753 ResultType: TGikoResultType;
757 {Protocol,Host, Path, Document, Port, Bookmark : String;}
765 if FThreadItem = nil then begin
766 URL := FBoard.GetSendURL;
767 Indy.Request.Referer := GikoSys.UrlToServer(FBoard.URL) + 'test/bbs.cgi';
769 URL := FThreadItem.GetSendURL;
770 Indy.Request.Referer := FThreadItem.URL;
773 sysMenu := GetSystemMenu( Handle, false );
774 EnableMenuItem( sysMenu, SC_CLOSE, MF_GRAYED );
776 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
779 Indy.Request.CustomHeaders.Clear;
780 // Indy.Request.CacheControl := 'no-cache';
781 Indy.Request.CustomHeaders.Add('Pragma: no-cache');
782 Indy.Request.AcceptLanguage := 'ja';
783 Indy.Request.Accept := 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*';
784 Indy.Request.ContentType := 'application/x-www-form-urlencoded';
785 Indy.Request.CustomHeaders.Add(getHeaderStr(ACOOKIE, SPID, PON, Board));
786 TextStream := TStringStream.Create('');
787 Source := TStringStream.Create('');
790 FDebugStrReceive := '';
793 if (FirstWriting) then begin
794 //
\83t
\83V
\83A
\83i
\83g
\83\89\83b
\83v
\8cx
\8d\90(LocalMode) by
\92è
\8aú
\95Ö
795 if (isLocalFusianaTrap) then begin
796 CancelSend( Board, SysMenu );
799 //
\83t
\83V
\83A
\83i
\83g
\83\89\83b
\83v
\8cx
\8d\90(Remote)
800 if (isRemoteFusianaTrap) then begin
801 CancelSend( Board, SysMenu );
807 IdAntiFreeze.Active := True;
809 Indy.Post(URL, Source, TextStream);
811 IdAntiFreeze.Active := False;
813 ResponseText := TextStream.DataString;
815 ResultType := GetResultType(ResponseText);
818 if ResultType = grtOK then begin
819 if (GikoSys.Setting.UseSamba) and (FSambaTimer.Enabled) then
821 FSambaTimer.WriteSambaTime(Now());
823 State := gdsComplete;
824 end else if ResultType = grtCookie then begin
825 //
\83\8b\81[
\83v
\96h
\8e~
826 if not FirstWriting then
827 raise Exception.Create('');
829 MsgResult := MsgBox( Handle,
830 '
\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 +
831 '
\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 +
832 '
\91S
\90Ó
\94C
\82ð
\95\89\82¤
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ä
\8f\91\82«
\8d\9e\82Ý
\82Ü
\82·
\82©
\81H',
834 MB_YESNO or MB_ICONQUESTION);
836 if MsgResult = IDYES then begin
837 GetCookie(Indy.Response.RawHeaders.Text, Board);
839 if (Board.SPID = '') and (Board.PON = '') and (Board.Cookie = '') then
840 raise Exception.Create('');
842 //
\82à
\82¤
\88ê
\89ñ
\82±
\82Ì
\83\81\83\
\83b
\83h
843 Send(Board.Cookie, Board.SPID, Board.PON, False);
846 CancelSend( Board, SysMenu );
849 end else if ResultType = grtCheck then begin
850 //
\83\8b\81[
\83v
\96h
\8e~
851 if not FirstWriting then
852 raise Exception.Create('');
854 MsgResult := MsgBox( Handle,
855 '
\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 +
856 '
\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 +
857 '
\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 +
858 '
\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 +
860 '
\91S
\90Ó
\94C
\82ð
\95\89\82¤
\82±
\82Æ
\82ð
\8f³
\91ø
\82µ
\82Ä
\8f\91\82«
\8d\9e\82Ý
\82Ü
\82·
\82©
\81H',
862 MB_YESNO or MB_ICONQUESTION);
864 if MsgResult = IDYES then begin
865 GetCookie(Indy.Response.RawHeaders.Text, Board);
867 if (Board.SPID = '') and (Board.PON = '') and (Board.Cookie = '') then
868 raise Exception.Create('');
870 Send(Board.Cookie, Board.SPID, Board.PON, False);
873 CancelSend( Board, SysMenu );
877 if (GikoSys.Setting.UseSamba) and (FSambaTimer.Enabled) then
879 FSambaTimer.WriteSambaTime(Now());
883 raise Exception.Create('');
886 on E: EIdConnectException do begin
888 ResponseText := '<html><body>'
889 + '<div>
\90Ú
\91±
\82ª
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½<br>'
890 + '
\89ñ
\90ü
\82â
\83v
\83\8d\83L
\83V
\82Ì
\8fó
\91Ô
\82ð
\92²
\82×
\82Ä
\82
\82¾
\82³
\82¢<br></div>'
891 + '<br><br><div>' + E.Message + '</div>'
894 on E: Exception do begin
897 FDebugStrReceive := AnsiReplaceText(FDebugStrReceive, '<', '<');
898 FDebugStrReceive := AnsiReplaceText(FDebugStrReceive, '>', '>');
899 FDebugStrSend := AnsiReplaceText(FDebugStrSend, '<', '<');
900 FDebugStrSend := AnsiReplaceText(FDebugStrSend, '>', '>');
902 ResponseText := '<html><body>' + TextStream.DataString;
903 ResponseText := AnsiReplaceText(ResponseText, '</body>', '');
904 ResponseText := AnsiReplaceText(ResponseText, '</html>', '');
905 ResponseText := ResponseText + '<hr><div align="left"><pre>';
906 ResponseText := ResponseText + '<b>
\82±
\82±
\82©
\82ç
\83M
\83R
\83i
\83r
\82Ì
\8fî
\95ñ</b>'#13#10;
907 ResponseText := ResponseText + #13#10'
\81\9c\91\97\90M'#13#10;
908 ResponseText := ResponseText + FDebugStrSend;
909 ResponseText := ResponseText + #13#10'
\81\9c\8eó
\90M'#13#10;
910 ResponseText := ResponseText + FDebugStrReceive;
911 ResponseText := ResponseText + '</pre></div></body></html>';
914 FStatusCode := Indy.ResponseCode;
920 //sysMenu := GetSystemMenu( Handle, true );
921 EnableMenuItem(SysMenu, SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
925 //
\94ñ
\8cö
\8e®
\83M
\83R
\83i
\83r
\94Â
\82È
\82Ç
\82Ì2ch
\8cÝ
\8a·
\83X
\83N
\83\8a\83v
\83g
\97p
926 //2ch
\88È
\8aO
\82Å
\82©
\82ÂResponceCode
\82ª302Found
\82Å
\8f\91\82«
\8d\9e\82Ý
\8a®
\97¹
927 //if (not Board.Is2ch) and (FStatusCode = 302) then begin
928 if FStatusCode = 302 then begin
929 GikoForm.PlaySound('ResEnd');
931 AddFormMessageNew( gmiOK );
935 if State = gdsComplete then begin
936 GikoForm.PlaySound('ResEnd');
938 AddFormMessageNew( gmiOK );
940 end else if State = gdsError then begin
941 AddFormMessageNew( gmiOK );
942 EditorPage.ActivePage := PreviewTab;
943 SetContent(ResponseText, Browser);
944 end else if State = gdsAbort then begin
945 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiSAD);
948 function TEditorForm.GetResultType(ResponseText: string): TGikoResultType;
950 if AnsiPos('
\8f\91\82«
\82±
\82Ý
\82ª
\8fI
\82í
\82è
\82Ü
\82µ
\82½', ResponseText) <> 0 then
952 else if (AnsiPos('
\83N
\83b
\83L
\81[
\82ª
\82È
\82¢
\82©
\8aú
\8cÀ
\90Ø
\82ê
\82Å
\82·', ResponseText) > 0) or
953 (AnsiPos('<title>
\83N
\83b
\83L
\81[
\8am
\94F
\81I</title>', ResponseText) > 0) or
954 (AnsiPos('<title>
\81¡
\83N
\83b
\83L
\81[
\8am
\94F
\81I
\81¡</title>', ResponseText) > 0) or
955 //(AnsiPos('
\83N
\83b
\83L
\81[
\8am
\94F', ResponseText) > 0) or
956 (AnsiPos(RES2CH_COOKIE, ResponseText) > 0) then
958 else if (AnsiPos('<font size=+2 color=#FF0000>
\8f\91\82«
\8d\9e\82Ý
\83`
\83F
\83b
\83N
\81I </font>', ResponseText) > 0) or
959 (AnsiPos('<title>
\81¡
\8f\91\82«
\8d\9e\82Ý
\8am
\94F
\82µ
\82Ü
\82·
\81¡</title>', ResponseText) > 0) or
960 (AnsiPos('<title>
\93\8a\8de
\8am
\94F</title>', ResponseText) > 0) or
961 (AnsiPos('<b>
\8f\91\82«
\82±
\82Ý
\8am
\94F</b>', ResponseText) > 0) or
962 (AnsiPos('="../test/subbbs.cgi">', ResponseText) > 0) or
963 (AnsiPos(RES2CH_FALSE, ResponseText) > 0) then
965 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
966 (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
973 procedure TEditorForm.GetSendData(Source: TStringStream);
984 if GikoSys.Setting.UseMachineTime then begin
985 if GikoSys.Setting.TimeAdjust then
986 Adjust := Gikosys.Setting.TimeAdjustSec
988 Adjust := GikoSys.Setting.TimeAdjustSec * -1;
989 SendTime := GikoSys.DateTimeToInt(Now) - (9 * 60 * 60) + Adjust
991 if (Board.LastGetTime = 0) or (Board.LastGetTime = ZERO_DATE) then
992 SendTime := GikoSys.DateTimeToInt(Now)
994 SendTime := GikoSys.DateTimeToInt(Board.LastGetTime);
999 SessionID := GikoSys.Dolib.SessionID;
1000 if SessionID <> '' then
1001 s := 'sid=' + HttpEncode(SessionID) + '&'
1004 s := s + 'subject=&'
1005 + 'FROM=' + HttpEncode(NameComboBox.Text) + '&'
1006 + 'mail=' + HttpEncode(MailComboBox.Text) + '&'
1007 + 'MESSAGE=' + HttpEncode(body) + '&'
1008 + 'bbs=' + Board.BBSID + '&'
1009 + 'time=' + IntToStr(SendTime) + '&';
1011 if FThreadItem = nil then begin
1012 s := s + 'subject=' + HttpEncode(TitleEdit.Text) + '&';
1013 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;
1015 s := s + 'key=' + ChangeFileExt(FThreadItem.FileName, '') + '&';
1016 s := s + 'submit=' + HttpEncode('
\8f\91\82«
\8d\9e\82Þ') + #13#10;
1018 Source.WriteString(s);
1021 procedure TEditorForm.SaveSendFile;
1026 ini := CreateSentIniFile;
1027 if (ini <> nil) then begin
1029 sDate := IntToStr(GikoSys.DateTimeToInt(Now));
1031 ini.WriteString(sDate, 'Name', NameComboBox.Text);
1032 ini.WriteString(sDate, 'EMail', MailComboBox.Text);
1033 ini.WriteString(sDate, 'Body', HttpEncode(BodyEdit.Text));
1034 ini.WriteInteger(sDate, 'Status', FStatusCode);
1035 ini.WriteDateTime(sDate, 'Date', Now);
1036 if FThreadItem = nil then begin
1037 ini.WriteString(sDate, 'Title', MojuUtils.Sanitize(TitleEdit.Text));
1038 //ini.WriteString(sDate, 'BBS', FBoard.BBSID);
1039 ini.WriteString(sDate, 'URL', FBoard.URL);
1040 ini.WriteInteger(sDate, 'NewThread', 1);
1042 ini.WriteString(sDate, 'Title', FThreadItem.Title);
1043 //ini.WriteString(sDate, 'BBS', FThreadItem.ParentBoard.BBSID);
1044 ini.WriteString(sDate, 'URL', FThreadItem.URL);
1045 ini.WriteString(sDate, 'Key', ChangeFileExt(FThreadItem.FileName, ''));
1054 function TEditorForm.CreateSentIniFile: TMemIniFile;
1056 maxSize, fileSize, i: Integer;
1061 maxSize := GikoSys.Setting.SentIniFileSize * 1024 * 1024;
1062 //
\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·
1063 if (maxSize > 0) then begin
1064 fileSize := GikoSys.GetFileSize(GikoSys.Setting.GetSentFileName);
1065 //
\8dÅ
\91å
\83T
\83C
\83Y
\82ð
\92´
\82¦
\82Ä
\82¢
\82½
\8fê
\8d\87\82Í
\83\8a\83l
\81[
\83\80\82·
\82é
1066 if (fileSize >= maxSize) then begin
1068 //
\8d¡
\82Ì
\8e\9e\8d\8f\82ð
\83t
\83@
\83C
\83\8b\96¼
\82Ì
\8cã
\82ë
\82É
\82Â
\82¯
\82é
1070 // 10
\89ñ
\88È
\8fã
\8e¸
\94s
\82µ
\82½
\82ç
\82 \82«
\82ç
\82ß
\82é
1071 if (i > 10) then break;
1072 DateTimeToString(newName, 'yyhhnnsszzz', Now());
1074 until RenameFile(GikoSys.Setting.GetSentFileName,
1075 GikoSys.Setting.GetSentFileName + '.' + newName);
1077 Result := TMemIniFile.Create(GikoSys.Setting.GetSentFileName);
1080 procedure TEditorForm.SendActionExecute(Sender: TObject);
1082 TITLE_SAMBA : string = 'Samba24
\8cx
\8d\90';
1087 state : TGikoDownloadState;
1094 SendAction.Enabled := False;
1095 Application.ProcessMessages;
1096 if not Check then Exit;
1100 if FThreadItem = nil then begin
1101 rc := GikoUtil.MsgBox(Handle,
1102 '
\81u' + Board.Title + '
\81v
\94Â
\82É
\90V
\82µ
\82¢
\83X
\83\8c\83b
\83h
\97§
\82Ä
\82Ü
\82·'#13#10#13#10
1103 + '
\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
1104 + '
\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
1105 + '
\81u
\82Í
\82¢
\81v
\82ð
\89\9f\82·
\82Æ
\91\97\90M
\82µ
\82Ü
\82·',
1107 MB_ICONQUESTION or MB_YESNO);
1108 if rc <> ID_YES then
1112 SetNameList(NameComboBox.Text, MailComboBox.Text);
1113 if (KotehanCheckBox.Enabled) and (KotehanCheckBox.Checked) then begin
1114 Board.KotehanName := NameComboBox.Text;
1115 Board.KotehanMail := MailComboBox.Text;
1118 if Board.IsBoardPlugInAvailable then begin
1121 if FThreadItem = nil then begin
1122 //
\83X
\83\8c\97§
\82Ä
1123 state := TGikoDownloadState( Board.BoardPlugIn.CreateThread(
1124 DWORD( Board ), TitleEdit.Text, NameComboBox.Text, MailComboBox.Text, body ) );
1126 if state = gdsComplete then begin
1127 GikoForm.PlaySound('ResEnd');
1129 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, gmiOK);
1132 end else if State = gdsError then begin
1133 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmSureError), nil, gmiNG);
1134 end else if State = gdsAbort then begin
1135 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiNG);
1139 state := TGikoDownloadState( FThreadItem.ParentBoard.BoardPlugIn.WriteThread(
1140 DWORD( FThreadItem ), NameComboBox.Text, MailComboBox.Text, body ) );
1142 if state = gdsComplete then begin
1143 GikoForm.PlaySound('ResEnd');
1145 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, gmiOK);
1148 end else if State = gdsError then begin
1149 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmResError), nil, gmiOK);
1150 end else if State = gdsAbort then begin
1151 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmAbort), nil, gmiOK);
1155 if not FSambaTimer.Enabled then begin
1156 if CompareDateTime(Board.Expires ,Now) <= 0 then begin
1161 Send(Board.Cookie, Board.SPID, Board.PON, True);
1163 if not FSambaTimer.CheckSambaTime(Now()) then begin
1164 rc := GikoUtil.MsgBox(Handle,
1165 '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
1166 + '
\91\97\90M
\82ð
\92\86\8e~
\82µ
\82Ü
\82·
\82©
\81H' + #13#10
1167 + '(
\81u
\82¢
\82¢
\82¦
\81v
\82¾
\82Æ
\91\97\90M
\82µ
\82Ü
\82·)', TITLE_SAMBA,
1168 MB_YESNO or MB_ICONQUESTION);
1169 if rc = IDYES then begin
1173 if rc = IDNO then begin
1174 rc2 := GikoUtil.MsgBox(Handle,
1175 '
\96{
\93\96\82É
\91\97\90M
\82µ
\82Ü
\82·
\82©
\81H',
1177 MB_YESNO or MB_ICONQUESTION);
1178 if rc2 = IDNO then begin
1184 if CompareDateTime(Board.Expires ,Now) <= 0 then begin
1189 Send(Board.Cookie, Board.SPID, Board.PON, True);
1194 if FSambaTimer.Enabled then begin
1195 FNow := FSambaTimer.Update;
1200 procedure TEditorForm.SaveActionExecute(Sender: TObject);
1205 procedure TEditorForm.CloseActionExecute(Sender: TObject);
1210 procedure TEditorForm.UndoActionExecute(Sender: TObject);
1212 SendMessage(GetActiveControlHandle, WM_UNDO, 0, 0);
1215 procedure TEditorForm.CutActionExecute(Sender: TObject);
1217 SendMessage(GetActiveControlHandle, WM_CUT, 0, 0);
1220 procedure TEditorForm.CopyActionExecute(Sender: TObject);
1222 SendMessage(GetActiveControlHandle, WM_COPY, 0, 0);
1225 procedure TEditorForm.PasteActionExecute(Sender: TObject);
1227 SendMessage(GetActiveControlHandle, WM_PASTE, 0, 0);
1230 procedure TEditorForm.SelectAllActionExecute(Sender: TObject);
1232 SendMessage(GetActiveControlHandle, EM_SETSEL, 0, GetWindowTextLength(GetActiveControlHandle));
1235 procedure TEditorForm.TopActionExecute(Sender: TObject); //
\83E
\83B
\83\93\83h
\83E
\8dÅ
\91O
\96Ê(Stay)
\83{
\83^
\83\93\82Ì
\8f\88\97\9d
1237 if not (fsShowing in Self.FormState) then begin
1238 if TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
1239 SetWindowPos(Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
1240 GikoSys.Setting.EditWindowStay := true;
1241 end else begin //
\83X
\83e
\83C
\8fó
\91Ô
\89ð
\8f\9c
1242 SetWindowPos(Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
1243 GikoSys.Setting.EditWindowStay := false;
1245 //
\83X
\83e
\83C
\8fó
\91Ô
\82Ì
\95Û
\91¶
1246 //GikoSys.Setting.EditWindowStay := FormStyle = fsStayOnTop;
1250 procedure TEditorForm.AbortActionExecute(Sender: TObject);
1255 procedure TEditorForm.SendActionUpdate(Sender: TObject);
1257 SendAction.Enabled := not FWork;
1260 procedure TEditorForm.SaveActionUpdate(Sender: TObject);
1262 SaveAction.Enabled := False;
1265 procedure TEditorForm.CloseActionUpdate(Sender: TObject);
1267 CloseAction.Enabled := not FWork;
1270 procedure TEditorForm.UndoActionUpdate(Sender: TObject);
1272 UndoAction.Enabled := (GetActiveControlHandle <> 0)
1273 and (SendMessage(GetActiveControlHandle, EM_CANUNDO, 0, 0) <> 0)
1277 procedure TEditorForm.CutActionUpdate(Sender: TObject);
1279 Selection: TSelection;
1282 AHandle := GetActiveControlHandle;
1283 SendMessage(AHandle, EM_GETSEL, Longint(@Selection.StartPos), Longint(@Selection.EndPos));
1284 CutAction.Enabled := (AHandle <> 0)
1285 and ((Selection.EndPos - Selection.StartPos) <> 0)
1289 procedure TEditorForm.CopyActionUpdate(Sender: TObject);
1291 Selection: TSelection;
1294 AHandle := GetActiveControlHandle;
1295 SendMessage(AHandle, EM_GETSEL, Longint(@Selection.StartPos), Longint(@Selection.EndPos));
1296 CopyAction.Enabled := (AHandle <> 0)
1297 and ((Selection.EndPos - Selection.StartPos) <> 0)
1301 procedure TEditorForm.PasteActionUpdate(Sender: TObject);
1303 PasteAction.Enabled := (GetActiveControlHandle <> 0)
1304 and (Clipboard.HasFormat(CF_TEXT))
1308 procedure TEditorForm.TopActionUpdate(Sender: TObject);
1310 TopAction.Enabled := not FWork;
1313 procedure TEditorForm.SageCheckBoxClick(Sender: TObject);
1315 if SageCheckBox.Checked then begin
1316 if AnsiPos('sage', MailComboBox.Text) = 0 then
1317 MailComboBox.Text := 'sage' + MailComboBox.Text;
1319 if AnsiPos('sage', MailComboBox.Text) <> 0 then
1320 MailComboBox.Text := StringReplace(MailComboBox.Text, 'sage', '', [rfReplaceAll]);
1324 procedure TEditorForm.MailComboBoxChange(Sender: TObject);
1326 if AnsiPos('sage', MailComboBox.Text) = 0 then
1327 SageCheckBox.Checked := False
1329 SageCheckBox.Checked := True;
1332 procedure TEditorForm.IdLogDebugReceive(ASender: TIdConnectionIntercept;
1335 StringStream: TStringStream;
1337 StringStream := TStringStream.Create('');
1339 StringStream.CopyFrom(AStream, AStream.Size);
1340 FDebugStrReceive := FDebugStrReceive + StringStream.DataString;
1346 procedure TEditorForm.IdLogDebugSend(ASender: TIdConnectionIntercept;
1349 StringStream: TStringStream;
1351 StringStream := TStringStream.Create('');
1353 StringStream.CopyFrom(AStream, AStream.Size);
1354 FDebugStrSend := FDebugStrSend + StringStream.DataString;
1360 procedure TEditorForm.TransActionExecute(Sender: TObject);
1362 AlphaBlend := TransAction.Checked;
1363 //
\94¼
\93§
\96¾
\8fó
\91Ô
\82Ì
\95Û
\91¶
1364 GikoSys.Setting.EditWindowTranslucent := TransAction.Checked;
1367 procedure TEditorForm.TransActionUpdate(Sender: TObject);
1369 TransAction.Enabled := not FWork;
1371 //StatusBar
\82ÌPanels[0]
\82Ì
\95\9d\82ð
\89Â
\95Ï
\81B
\8ec
\82è
\82ð
\8cÅ
\92è
\82É
\82·
\82é
1372 procedure TEditorForm.StatusBarResize(Sender: TObject);
1374 StatusBar.Panels[0].Width := StatusBar.Width
1375 - StatusBar.Panels[1].Width - StatusBar.Panels[2].Width;
1379 //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Þ
1380 procedure TEditorForm.FormActivate(Sender: TObject);
1382 if ( FSambaTimer.Enabled ) and ( FThreadItem <> nil ) then
1384 FNow := FSambaTimer.Update;
1386 if GikoSys.Setting.GestureEnabled then begin
1387 GikoSys.Setting.Gestures.ClearGesture;
1388 GikoSys.Setting.Gestures.LoadGesture(
1389 GikoSys.Setting.GetGestureFileName, ActionList );
1390 MouseGesture.UnHook;
1391 MouseGesture.OnGestureStart := OnGestureStart;
1392 MouseGesture.OnGestureMove := OnGestureMove;
1393 MouseGesture.OnGestureEnd := OnGestureEnd;
1394 MouseGesture.SetHook( Handle );
1397 procedure TEditorForm.FormCloseQuery(Sender: TObject;
1398 var CanClose: Boolean);
1400 CanClose := not FWork;
1403 procedure TEditorForm.QuotePasteActionExecute(Sender: TObject);
1410 quote := GikoSys.GetOEIndentChar;
1411 s := TStringList.Create;
1413 s.Text := Clipboard.AsText;
1415 for i := s.Count - 1 downto 0 do
1416 s[ i ] := quote + s[ i ];
1418 BodyEdit.SelText := s.Text;
1425 procedure TEditorForm.SpaceToNBSPActionExecute(Sender: TObject);
1427 GikoSys.Setting.SpaceToNBSP := SpaceToNBSPAction.Checked;
1428 if EditorPage.ActivePage = PreviewTab then
1432 procedure TEditorForm.AmpToCharRefActionExecute(Sender: TObject);
1434 GikoSys.Setting.AmpToCharRef := AmpToCharRefAction.Checked;
1435 if EditorPage.ActivePage = PreviewTab then
1439 procedure TEditorForm.BoardTopClick(Sender: TObject);
1443 ini := TIniFile.Create(GikoSys.Setting.GetFileName);
1445 BoardtopTab.TabVisible := BoardTop.Checked;
1446 ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
1453 procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
1455 memStream: TMemoryStream;
1456 URL, RefURL: string;
1457 settingBody: TStringList;
1460 if not FWork then begin
1463 tmpBoard := GetBoard;
1464 if tmpBoard <> nil then begin
1466 RefURL := tmpBoard.URL;
1467 if RefURL[Length(RefURL)] <> '/' then
1468 URL := RefURL + '/' + 'SETTING.TXT'
1470 URL := RefURL + 'SETTING.TXT';
1471 Screen.Cursor := crHourGlass;
1472 memStream := TMemoryStream.Create;
1475 StatusBar.Panels[0].Text := 'SETTING.TXT
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1476 GetWebData(URL, RefURL, tmpBoard.SETTINGTXTTime, memStream);
1477 if( Indy.ResponseCode = 200 ) then begin
1478 settingBody := TStringList.Create;
1480 memStream.Seek(0, soFromBeginning);
1481 settingBody.LoadFromStream(memStream);
1482 settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
1483 tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
1484 tmpBoard.IsSETTINGTXT := true;
1485 tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
1486 tmpBoard.Modified := true;
1490 StatusBar.Panels[0].Text := 'SETTING.TXT
\8eæ
\93¾
\8a®
\97¹(' + IntToStr(Indy.ResponseCode) + ')';
1493 on E: EIdException do begin
1494 if( AnsiPos('304', E.Message) > 0 ) then
1495 StatusBar.Panels[0].Text := 'SETTING.TXT
\8dX
\90V
\96³
\82µ(' + IntToStr(Indy.ResponseCode) + ')'
1497 StatusBar.Panels[0].Text := 'SETTING.TXT
\8eæ
\93¾
\83G
\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
1502 Screen.Cursor := crDefault;
1504 ShowBoardInformation(tmpBoard, BoardInformationMemo);
1510 procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
1515 AMemo.Lines.Add('[SETTING.TXT]');
1516 if ABoard.IsSETTINGTXT then begin
1517 if FileExists(ABoard.GetSETTINGTXTFileName) then begin
1518 AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + '
\8dX
\90V');
1519 body := TStringList.Create;
1521 body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
1522 AMemo.Lines.AddStrings(body);
1527 ABoard.IsSETTINGTXT := false;
1528 ABoard.SETTINGTXTTime := ZERO_DATE;
1529 AMemo.Lines.Add('Local
\82É
\95Û
\91¶
\82³
\82ê
\82½SETTING.TXT
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ');
1530 AMemo.Lines.Add('
\83\81\83j
\83\85\81[
\82æ
\82è
\8dÄ
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
1533 AMemo.Lines.Add('SETTING.TXT
\82ð
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B');
1534 AMemo.Lines.Add('
\83\81\83j
\83\85\81[
\82æ
\82è
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
1537 function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
1538 //BBS_TITLE_PICTURE=
1545 for i := 0 to body.Count - 1 do begin
1546 if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
1547 (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
1549 Delete(tmp, 1, AnsiPos('=', tmp));
1550 if AnsiPos('../', tmp) > 0 then begin
1551 tmp := CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
1559 procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
1561 if FThreadItem = nil then
1562 GetTitlePictureAction.Enabled := FBoard.IsSETTINGTXT
1564 GetTitlePictureAction.Enabled := FThreadItem.ParentBoard.IsSETTINGTXT;
1566 if GetTitlePictureAction.Enabled Then begin
1567 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
1568 GetTitlePictureAction.Enabled := not FWork;
1572 procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
1574 memStream: TMemoryStream;
1581 memStream := TMemoryStream.Create;
1583 tmpBoard := GetBoard;
1585 if (tmpBoard <> nil) and (tmpBoard.TitlePictureURL <> '') then begin
1586 StatusBar.Panels[0].Text := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1587 Screen.Cursor := crHourGlass;
1589 // URL
\82ð
\8ew
\92è
\82µ
\82Ä
\83\81\83\82\83\8a\82É
\93Ç
\82Ý
\8d\9e\82Þ
1590 GetWebData(tmpBoard.TitlePictureURL, tmpBoard.URL,
1591 ZERO_DATE, memStream);
1592 if Indy.ResponseCode = 200 then begin
1593 memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
1595 tmpBoard.Modified := true;
1597 StatusBar.Panels[0].Text := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
1604 Screen.Cursor := crDefault;
1608 \brief URL
\82Ì
\83f
\81[
\83^
\82ðstream
\82É
\93Ç
\82Ý
\8d\9e\82Þ
1609 \param URL
\93Ç
\82Ý
\8d\9e\82Þ
\90æ
1610 \param RefURL referer
\82É
\90Ý
\92è
\82·
\82é
1611 \param Modified Modified
\82É
\90Ý
\92è
\82·
\82é
1612 \param stream
\93Ç
\82Ý
\8d\9e\82ñ
\82¾
\83f
\81[
\83^
\82Ì
\95Û
\91¶
\90æ
1614 procedure TEditorForm.GetWebData(const URL: string; const RefURL: string;
1615 Modified: TDateTime; stream: TStream);
1618 Indy.Request.Referer := RefURL;
1619 Indy.Request.LastModified := Modified;
1621 IdAntiFreeze.Active := True;
1623 Indy.Get(URL, stream);
1625 IdAntiFreeze.Active := False;
1629 procedure TEditorForm.ShowTitlePicture();
1634 tmpBoard := GetBoard;
1636 if FileExists(tmpBoard.GetTitlePictureFileName) then begin
1637 TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
1639 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';
1640 SetContent(s, TitlePictureBrowser);
1644 function TEditorForm.GetFusianaName(body: TStringList; ABoard: TBoard): String;
1649 for i := 0 to body.Count - 1 do begin
1650 if (AnsiPos('BBS_NONAME_NAME=', body[i]) > 0) then begin
1652 Delete(tmp, 1, AnsiPos('=', tmp));
1659 procedure TEditorForm.GetHeadTXTActionExecute(Sender: TObject);
1661 URL, RefURL: string;
1662 settingBody: TStringList;
1664 memStream: TMemoryStream;
1666 if not FWork then begin
1669 tmpBoard := GetBoard;
1670 if (tmpBoard <> nil) then begin
1672 RefURL := tmpBoard.URL;
1673 if RefURL[Length(RefURL)] <> '/' then
1674 URL := RefURL + '/' + 'head.txt'
1676 URL := RefURL + 'head.txt';
1678 Screen.Cursor := crHourGlass;
1679 memStream := TMemoryStream.Create;
1681 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';
1683 GetWebData(URL, RefURL, tmpBoard.HEADTXTTime, memStream);
1684 if( Indy.ResponseCode = 200 ) then begin
1685 settingBody := TStringList.Create;
1687 memStream.Seek(0, soFromBeginning);
1688 settingBody.LoadFromStream(memStream);
1689 settingBody.Insert(0, '<HTML lang="ja"><HEAD>');
1690 settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
1691 settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>');
1692 settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>');
1693 settingBody.Add('</BODY></HTML>');
1694 settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
1695 tmpBoard.HEADTXTTime := Indy.Response.LastModified;
1696 tmpBoard.IsHEADTXT := true;
1697 tmpBoard.Modified := true;
1701 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾
\8a®
\97¹(' + IntToStr(Indy.ResponseCode) + ')';
1704 on E: EIdException do begin
1705 if( AnsiPos('304', E.Message) > 0 ) then
1706 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8dX
\90V
\96³
\82µ(' + IntToStr(Indy.ResponseCode) + ')'
1708 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾
\83G
\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
1713 Screen.Cursor := crDefault;
1715 if tmpBoard.IsHEADTXT then begin
1716 ShowBoardHead(tmpboard, LocalEdit);
1724 procedure TEditorForm.CalcCapacityActionExecute(Sender: TObject);
1730 //
\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
1733 if Board.BoardPlugIn <> nil then
1734 body := CustomStringReplace(body, #13#10, '<br>')
1736 body := CustomStringReplace(body, #13#10, ' <br> ');
1737 StatusBar.Panels[0].Text := '
\97e
\97Ê:' + IntToStr(Length(body)) + ' byte';
1740 procedure TEditorForm.LocalRuleClick(Sender: TObject);
1744 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
1746 RocalRuleTab.TabVisible := LocalRule.Checked;
1747 ini.WriteBool('EditorForm', 'LocalRuleTab', RocalRuleTab.TabVisible);
1754 procedure TEditorForm.FormDeactivate(Sender: TObject);
1756 if GikoSys.Setting.GestureEnabled then begin
1757 MouseGesture.UnHook;
1758 //MouseGesture.SetHook( GikoForm.Handle );
1763 procedure TEditorForm.OnGestureStart(Sender: TObject);
1768 procedure TEditorForm.OnGestureMove(Sender: TObject);
1774 s := MouseGesture.GetGestureStr;
1776 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
1777 if Action <> nil then
1778 ActStr := '
\81i' + Action.Caption + '
\81j';
1779 s := '
\83W
\83F
\83X
\83`
\83\83\81[: ' + s + ActStr;
1780 StatusBar.Panels[0].Text := s;
1783 procedure TEditorForm.OnGestureEnd(Sender: TObject);
1788 s := MouseGesture.GetGestureStr;
1790 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
1791 if Action <> nil then
1793 StatusBar.Panels[0].Text := '';
1796 procedure TEditorForm.ShowBoardHead(ABoard: TBoard; AMemo: TMemo);
1798 wDoc, WTex, le: OLEVariant;
1801 //http://www.campus.ne.jp/~ishigami/CREATION/TECHNIC/WEBAP-2.htm
1802 WebBrowser1.Navigate(ABoard.GETHEADTXTFileName,le,le,le,le);
1803 //
\83\8c\83^
\83\8a\83\93\83O
\82ª
\92x
\82·
\82¬
\82ÄTXT
\82É
\88Ú
\82¹
\82È
\82¢
\81B
\82Ê
\82é
\82Ûorz
1804 //
\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
1805 //
\82±
\82ê
\82Å
\82¢
\82¯
\82Ü
\82µ
\82½
\81B
\82 \82è
\82ª
\82Æ
\82¤
\82²
\82´
\82¢
\82Ü
\82µ
\82½
\81B
1806 while (WebBrowser1.ReadyState <> READYSTATE_COMPLETE) and
1807 (WebBrowser1.ReadyState <> READYSTATE_INTERACTIVE) do begin
1808 Application.ProcessMessages;
1810 wDoc := WebBrowser1.Document;
1811 wTex := wDoc.body.createTextRange;
1812 LocalEdit.Text := wTex.text;
1815 procedure TEditorForm.LocalRuleBrowseClick(Sender: TObject);
1822 if ABoard = nil then Exit;
1824 URL := ABoard.GETHEADTXTFileName;
1825 GikoSys.OpenBrowser(URL, gbtAuto);
1828 procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject);
1830 SaveNameMailAction.Checked := not SaveNameMailAction.Checked;
1831 KotehanCheckBox.Enabled := SaveNameMailAction.Checked;
1834 function TEditorForm.LFusianaGet(const s: String): Boolean;
1836 FUSIANA = 'fusianasan';
1840 i := AnsiPos(FUSIANA, s);
1844 procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject);
1846 GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
1849 procedure TEditorForm.BeLogInOutEActionUpdate(Sender: TObject);
1851 if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
1852 if (GikoSys.Setting.BeLogin) then BeLogInOutEAction.Checked := true
1853 else BeLogInOutEAction.Checked := false;
1854 BeLogInOutEAction.Enabled := true
1856 BeLogInOutEAction.Enabled := false;
1859 // Cookie
\82Ì
\8eæ
\93¾
1860 procedure TEditorForm.GetCookie(Rawtext: String; ABoard: TBoard);
1862 COOKIE_MARK = 'Set-Cookie:';
1865 EXPIRES_MARK = 'expires=';
1871 ABoard.Cookie := '';
1872 while (AnsiPos(COOKIE_MARK, Rawtext) > 0 ) do begin
1874 tmp := Copy(Rawtext, AnsiPos(COOKIE_MARK, Rawtext) + Length(COOKIE_MARK), Length(Rawtext));
1875 Delete(Rawtext, 1, AnsiPos('Set-Cookie', Rawtext)+ Length(COOKIE_MARK));
1876 //Cookie
\82ð
\90Ø
\82è
\8fo
\82·
1877 val := Trim(GikoSys.GetTokenIndex(tmp, ';', 0));
1878 if( AnsiPos(VAL_SPID, val) > 0 ) then begin
1879 ABoard.SPID := Copy(val, AnsiPos(VAL_SPID, val) + Length(VAL_SPID), Length(val));
1880 end else if( AnsiPos(VAL_PON, val) > 0 ) then begin
1881 ABoard.PON := Copy(val, AnsiPos(VAL_PON, val) + Length(VAL_PON), Length(val));
1883 ABoard.Cookie := ABoard.Cookie + val + '; ';
1885 //expires
\82ð
\90Ø
\82è
\8fo
\82·
1886 val := Trim(GikoSys.GetTokenIndex(tmp, ';', 1));
1887 if( AnsiPos(EXPIRES_MARK, val) > 0) then begin
1888 Delete(val, 1, AnsiPos(EXPIRES_MARK, val) + Length(EXPIRES_MARK) - 1);
1889 ABoard.Expires := GMTToLocalDateTime(val);
1895 //!
\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
1896 procedure TEditorForm.UpdateSambaActionUpdate(Sender: TObject);
1898 UpdateSambaAction.Enabled := FSambaTimer.Enabled;
1901 //!
\83T
\83\93\83o
\8dX
\90V
\83A
\83N
\83V
\83\87\83\93
1902 procedure TEditorForm.UpdateSambaActionExecute(Sender: TObject);
1907 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
1908 input := ZenToHan(input);
1909 if GikoSys.IsNumeric(input) then begin
1910 FSambaTimer.UpdateSambaSetting(StrToInt(input));
1912 //
\91S
\82Ä
\82Ì
\83t
\83H
\81[
\83\80\82©
\82ç
\81ASamba
\83^
\83C
\83}
\81[
\82ð
\8dX
\90V
\82·
\82é
1913 for i := 0 to Screen.FormCount - 1 do begin
1914 if Screen.Forms[i] is TEditorForm then begin
1915 TEditorForm(Screen.Forms[i]).FSambaTimer.Update;
1916 TEditorForm(Screen.Forms[i]).UpdateSambaStatus;
1920 ShowMessage('
\90\94\92l
\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢');
1921 UpdateSambaActionExecute(Sender);
1926 procedure TEditorForm.UpdateSambaStatus;
1928 if (FSambaTimer.Enabled) then begin
1929 StatusBar.Panels[2].Text
1930 := 'Samba24
\8bK
\92è
\92l' + IntToStr(FSambaTimer.SambaInterval);
1934 procedure TEditorForm.InputAssistActionExecute(Sender: TObject);
1940 TextWidth, ItemWidth, tmpWidth: Integer;
1942 if FInputAssistKey = '' then Exit;
1944 InputAssistPopupMenu.Items.Clear;
1946 if (FResistWords = nil) then begin
1947 FResistWords := TStringList.Create;
1952 if (GetKeyState( VK_SHIFT ) < 0) then begin
1953 //
\83V
\83t
\83g
\82ª
\89\9f\82³
\82ê
\82Ä
\82¢
\82ê
\82Î
\81A
\83L
\81[
\82Å
\8en
\82Ü
\82é
\83J
\83e
\83S
\83\8a
1955 InputAssistDM.GetStartWithCategoryResistWords(
1956 FInputAssistKey, FResistWords);
1958 //
\83V
\83t
\83g
\82ª
\96³
\82¢
\82Ì
\82Å
\81A
\83L
\81[
\82Å
\8en
\82Ü
\82é
\83L
\81[
1960 InputAssistDM.GetStartWithKeyResistWords(
1961 FInputAssistKey, FResistWords);
1963 Bitmap := TBitmap.Create;
1965 Bitmap.Canvas.Font.Assign(BodyEdit.Font);
1966 //
\83}
\81[
\83W
\83\935px
1967 TextWidth := Bitmap.Canvas.TextWidth(FInputAssistKey) + 5;
1969 for i := 0 to count - 1 do begin
1970 item := TMenuItem.Create(nil);
1971 item.Break := mbNone;
1972 item.Caption := FResistWords[i];
1974 item.OnClick := InputAssistMenuClick;
1975 InputAssistPopupMenu.Items.Add(item);
1977 tmpWidth := Bitmap.Canvas.TextWidth(Item.Caption);
1978 if (tmpWidth > ItemWidth) then begin
1979 ItemWidth := tmpWidth;
1986 if (count > 0) then begin
1988 point.X := point.X + Self.Left + (Self.Width - BodyEdit.Width) div 2;
1989 point.Y := point.Y + Self.Top + (Self.Height - Self.ClientHeight);
1991 if Screen.DesktopWidth >
1992 (point.X + TextWidth + ItemWidth) then begin
1993 InputAssistPopupMenu.Popup(
1994 point.X + TextWidth,
1995 point.Y + EditorPage.Top + EditorPage.TabHeight + BodyEdit.Top);
1997 InputAssistPopupMenu.Popup(
1998 point.X - TextWidth - ItemWidth,
1999 point.Y + EditorPage.Top + EditorPage.TabHeight + BodyEdit.Top);
2004 procedure TEditorForm.InputAssistMenuClick(Sender: TObject);
2009 if not (Sender is TMenuItem) then Exit;
2011 if (FResistWords <> nil) then begin
2014 TResistWord(FResistWords.Objects[TMenuItem(Sender).Tag]).GetText;
2018 IMC := ImmGetContext(BodyEdit.Handle); //
\83R
\83\93\83e
\83L
\83X
\83g
\8eæ
\93¾
2020 ImmNotifyIME(IMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
2022 ImmReleaseContext(BodyEdit.Handle, IMC); //
\83R
\83\93\83e
\83L
\83X
\83g
\89ð
\95ú
2026 FInputAssistKey := '';
2028 InsertText(BodyEdit, text);
2031 //! TMemo
\82Ì
\83J
\81[
\83\
\83\8b\88Ê
\92u
\82É
\95¶
\8e\9a\97ñ
\91}
\93ü
2032 procedure TEditorForm.InsertText(Memo: TMemo; Text: String);
2034 line, sel, pos: Integer;
2035 left, right : String;
2037 Memo.Lines.BeginUpdate;
2038 line := SendMessage(Memo.Handle,EM_LINEFROMCHAR,-1,0); //
\8ds
2039 sel := Memo.SelStart;
2040 pos := sel - SendMessage(Memo.Handle, EM_LINEINDEX, -1, 0); //
\8c\85
2041 if (pos > 0) then begin
2042 left := Copy(Memo.Lines[line], 0, pos);
2046 right := Copy(Memo.Lines[line], pos + 1, Length(Memo.Lines[line]));
2047 Memo.Lines.Strings[line] := left + Text + right;
2048 Memo.Lines.EndUpdate;
2049 //
\81@
\83L
\83\83\83\8c\83b
\83g
\82Ì
\88Ê
\92u
\82ð
\8dX
\90V
\82·
\82é
2050 Memo.SelStart := sel + Length(text);
2051 //
\83L
\83\83\83\8c\83b
\83g
\82Ì
\88Ê
\92u
\82Ü
\82Å
\83X
\83N
\83\8d\81[
\83\8b
2052 Memo.Perform(EM_SCROLLCARET, 0, 0);
2056 procedure TEditorForm.ApplicationEvents1Message(var Msg: tagMSG;
2057 var Handled: Boolean);
2064 if (Self.Active) then begin
2066 //
\83L
\81[
\89\9f\89º
\82Ì
\82Ý
\8eó
\82¯
\8eæ
\82é
2069 //
\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é
2070 if (EditorPage.ActivePageIndex = 0)
2071 and (GetKeyState( VK_CONTROL ) < 0) then begin
2072 wmMsg.Msg := Msg.message;
2073 wmMsg.CharCode := Word(Msg.wParam);
2074 wmMsg.KeyData := Msg.lParam;
2075 if (wmMsg.CharCode = 229) and (wmMsg.KeyData = 3735553) then begin
2076 IMC := ImmGetContext(BodyEdit.Handle); //
\83R
\83\93\83e
\83L
\83X
\83g
\8eæ
\93¾
2077 Len := ImmGetCompositionString(IMC, GCS_COMPSTR, nil, 0); //
\82Ü
\82¸
\92·
\82³
\82ð
\8eæ
\93¾
2078 if (Len > 0) then begin
2079 SetLength(Str, Len + 1); //Buffer
\82Ì
\83\81\83\82\83\8a\82ð
\90Ý
\92è
2080 ImmGetCompositionString(IMC, GCS_COMPSTR, PChar(Str), Len + 1); //
\82Ü
\82¸
\92·
\82³
\82ð
\8eæ
\93¾
2081 SetLength(Str, Len);
2082 FInputAssistKey := Str;
2083 InputAssistActionExecute(nil);
2086 ImmReleaseContext(BodyEdit.Handle, IMC); //
\83R
\83\93\83e
\83L
\83X
\83g
\89ð
\95ú
2095 procedure TEditorForm.ShowInputAssistFormExecute(Sender: TObject);
2097 form : TInputAssistForm;
2099 form := TInputAssistForm.Create(nil);
2101 if TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
2102 SetWindowPos(form.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2104 form.SetUpFromEditor;
2105 if (form.ShowModal = mrOk) then begin
2106 InsertText(BodyEdit, form.GetInsertText);
2112 //! Cookie
\8fî
\95ñ
\8dí
\8f\9c
2113 procedure TEditorForm.ReleaseCookieActionExecute(Sender: TObject);
2117 //
\83X
\83\8c\83b
\83h
\82ª
\96³
\82¢
\81@
\83X
\83\8c\97§
\82Ä
\82Ì
\82Æ
\82«
\82ÍFBoard
\82ð
\92¼
\90Ú
\8eg
\82¤
2120 //
\83N
\83b
\83L
\81[
\82Ì
\8fî
\95ñ
\82ð
\8eÌ
\82Ä
\82é
2124 // 0
\82É
\8aª
\82«
\96ß
\82·
2127 //!
\94Â
\8fî
\95ñ
\8eæ
\93¾Update
\83C
\83x
\83\93\83g
2128 procedure TEditorForm.GetSETTINGTXTActionUpdate(Sender: TObject);
2130 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
2131 GetSETTINGTXTAction.Enabled := not FWork;
2133 //!
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾Update
\83C
\83x
\83\93\83g
2134 procedure TEditorForm.GetHeadTXTActionUpdate(Sender: TObject);
2136 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
2137 GetSETTINGTXTAction.Enabled := not FWork;
2140 //! Samba
\83^
\83C
\83}
\81[
\83C
\83x
\83\93\83g
2141 procedure TEditorForm.SambaTimer(Sender: TObject);
2144 if FSambaTimer.WriteDeta = ZERO_DATE then
2145 StatusBar.Panels[1].Text := '
\8f\89\8f\91'
2147 FNow := IncMilliSecond(FNow, 500);
2148 StatusBar.Panels[1].Text :=
2149 Format('%8.0f
\95b
\8co
\89ß', [SecondSpan(FNow, FSambaTimer.WriteDeta)]);
2153 \brief
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82Æ
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
2155 procedure TEditorForm.SetWindowRect;
2157 wp: TWindowPlacement;
2159 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\90Ý
\92è
2160 wp.length := sizeof(wp);
2161 wp.rcNormalPosition.Top := GikoSys.Setting.EditWindowTop;
2162 wp.rcNormalPosition.Left := GikoSys.Setting.EditWindowLeft;
2164 wp.rcNormalPosition.Bottom := GikoSys.Setting.EditWindowTop + GikoSys.Setting.EditWindowHeight;
2165 wp.rcNormalPosition.Right := GikoSys.Setting.EditWindowLeft + GikoSys.Setting.EditWindowWidth;
2166 wp.showCmd := SW_HIDE;
2167 SetWindowPlacement(Handle, @wp);
2169 if GikoSys.Setting.EditWindowMax then begin
2170 WindowState := wsMaximized;
2173 //
\83E
\83B
\83\93\83h
\83E
\82ª
\89æ
\96Ê
\8aO
\82È
\82ç
\89æ
\96Ê
\93à
\82É
\88Ú
\93®
\82·
\82é
2174 if (Left + Width) > Screen.Width then begin
2177 if (Top + Height) > Screen.Height then begin
2180 if Left < 0 then begin
2183 if Top < 0 then begin
2187 //
\8c»
\8dÝ
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82ð
\95Û
\91¶
2188 GikoSys.Setting.EditWindowTop := Top + WINDOWMOVE_V; //
\8e\9f\82É
\8aJ
\82
\83E
\83B
\83\93\83h
\83E
\82Í
2189 GikoSys.Setting.EditWindowLeft := Left + WINDOWMOVE_H; //
\81@
\81@
\81@
\89E
\8eÎ
\82ß
\89º
\82É
\82¸
\82ç
\82·
2190 //
\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·
2191 if GikoSys.Setting.EditWindowHeight < 144 then begin
2194 if GikoSys.Setting.EditWindowWidth < 144 then begin
2199 \brief
\8ag
\92£
\83^
\83u
\90Ý
\92è
2201 procedure TEditorForm.SetExtraTab;
2203 SECTION = 'EditorForm';
2207 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
2209 BoardtopTab.TabVisible := ini.Readbool(SECTION, 'BoardTopTab', False);
2210 BoardTop.Checked := BoardtopTab.TabVisible;
2211 RocalRuleTab.TabVisible := ini.ReadBool(SECTION, 'LocalRuleTab', False);
2212 LocalRule.Checked := RocalRuleTab.TabVisible;
2219 \return
\83\8c\83X
\83G
\83f
\83B
\83^
\82ª
\93\8a\8de
\82µ
\82æ
\82¤
\82Æ
\82µ
\82Ä
\82¢
\82é
\94Â
2221 function TEditorForm.GetBoard : TBoard;
2223 //
\83X
\83\8c\83b
\83h
\83A
\83C
\83e
\83\80\82ªnull
\82Ì
\8e\9e\82ÍFBoard
2224 if FThreadItem = nil then begin
2227 Result := FThreadItem.ParentBoard;
2231 \brief GikoForm
\82É
\83\81\83b
\83Z
\81[
\83W
\82ð
\92Ç
\89Á
\82·
\82é
2232 \param icon
\83\81\83b
\83Z
\81[
\83W
\82É
\82Â
\82
\83A
\83C
\83R
\83\93
2234 procedure TEditorForm.AddFormMessageNew(icon: TGikoMessageIcon);
2236 if FThreadItem = nil then begin
2237 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, icon)
2239 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, icon);
2244 \brief
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
2245 \return true:
\91\97\90M
\92\86\8e~ false:
\91\97\90M
2247 function TEditorForm.isLocalFusianaTrap: Boolean;
2252 if GikoSys.Setting.LocalTrapAtt then begin
2253 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
2254 if (LFusianaGet(Namae)) or (Namae = '
\8eR
\8dè
\8fÂ') then begin
2255 if FusianaMsgBox = IDNO then begin
2262 \brief
\83\8a\83\82\81[
\83gfusiana
\83g
\83\89\83b
\83v
2263 \return true:
\91\97\90M
\92\86\8e~ false:
\91\97\90M
2265 function TEditorForm.isRemoteFusianaTrap: Boolean;
2273 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
2274 if (GikoSys.Setting.RemoteTrapAtt) and (Length(Namae) = 0) then begin
2277 if Board = nil then Exit;
2279 if not FileExists(Board.GetSETTINGTXTFileName) then begin
2280 //Setting.txt
\82ª
\82È
\82©
\82Á
\82½
\82ç
\8eæ
\93¾
2281 //
\8eI
\82É
\95\89\89×
\82ª
\82©
\82©
\82è
\82»
\82¤...
2283 GetSETTINGTXTAction.Execute;
2289 if FileExists(Board.GetSETTINGTXTFileName) then begin
2290 body := TStringList.Create;
2292 body.LoadFromFile(Board.GetSETTINGTXTFileName);
2293 Remote := GetFusianaName(body, Board);
2299 if LFusianaGet(Remote) then begin
2300 if FusianaMsgBox = IDNO then begin
2307 \brief Header
\95¶
\8e\9a\97ñ
\8eæ
\93¾
2308 \param ACOOKIE Cookie
2312 \return Header
\95¶
\8e\9a\97ñ
2314 function TEditorForm.getHeaderStr(const ACOOKIE: string; const SPID : string;
2315 const PON : string; Board : TBoard) : string;
2319 Result := Result + 'SPID=' + SPID + '; ';
2321 Result := Result + 'PON=' + PON + '; ';
2323 //
\83z
\83X
\83g
\82ª2ch
\82Å
\81ABe
\82ÉLogin
\82µ
\82Ä
\82¢
\82ê
\82ÎBE
\82Ì
\83f
\81[
\83^
\82ð
\91\97\82é
2324 //GikoSys.ParseURI( URL, Protocol,Host, Path, Document, Port, Bookmark );
2325 //if GikoSys.Is2chHost(Host) and GikoSys.Setting.BeLogin then
2326 if (Board.Is2ch) then begin
2327 //
\8cÅ
\92è
\82Ì
\83N
\83b
\83L
\81[
\82ª
\82 \82ê
\82Î
\90H
\82í
\82¹
\82é
2328 if Length(GikoSys.Setting.FixedCookie) > 0 then begin
2329 //
\83z
\83X
\83g
\82ª2ch
\82Ì
\8fê
\8d\87\81C
\8cÅ
\92è
\82Ì
\83N
\83b
\83L
\81[
\82ð
\90H
\82í
\82¹
\82é
2330 Result := Result + GikoSys.Setting.FixedCookie + '; ';
2332 if (GikoSys.Setting.BeLogin) then begin
2333 Result := Result + 'MDMD=' + GikoSys.Setting.BeCode + '; '
2334 + 'DMDM=' + GikoSys.Setting.BeUserID + '; ';
2339 Result := 'Cookie: ' + Result + 'NAME=' + NameComboBox.Text + '; MAIL=' + MailComboBox.Text;
2343 \brief fusiana
\8cx
\8d\90\83_
\83C
\83A
\83\8d\83O
2344 \return IDYES
\8f\91\82«
\8d\9e\82Þ IDNO
\92\86\8e~
2346 function TEditorForm.FusianaMsgBox: Integer;
2348 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 +
2349 '
\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' +
2350 #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';
2352 Result := MsgBox(Handle, MSG_FUSIANA, '
\8fî
\95ñ',
2353 MB_YESNO or MB_ICONQUESTION);