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 := TMemIniFile.Create(GikoSys.Setting.GetFileName);
1445 BoardtopTab.TabVisible := BoardTop.Checked;
1446 ini.WriteBool('EditorForm', 'BoardTopTab', BoardtopTab.TabVisible);
1454 procedure TEditorForm.GetSETTINGTXTActionExecute(Sender: TObject);
1456 memStream: TMemoryStream;
1457 URL, RefURL: string;
1458 settingBody: TStringList;
1461 if not FWork then begin
1464 tmpBoard := GetBoard;
1465 if tmpBoard <> nil then begin
1467 RefURL := tmpBoard.URL;
1468 if RefURL[Length(RefURL)] <> '/' then
1469 URL := RefURL + '/' + 'SETTING.TXT'
1471 URL := RefURL + 'SETTING.TXT';
1472 Screen.Cursor := crHourGlass;
1473 memStream := TMemoryStream.Create;
1476 StatusBar.Panels[0].Text := 'SETTING.TXT
\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1477 GetWebData(URL, RefURL, tmpBoard.SETTINGTXTTime, memStream);
1478 if( Indy.ResponseCode = 200 ) then begin
1479 settingBody := TStringList.Create;
1481 memStream.Seek(0, soFromBeginning);
1482 settingBody.LoadFromStream(memStream);
1483 settingBody.SaveToFile(tmpBoard.GetSETTINGTXTFileName);
1484 tmpBoard.SETTINGTXTTime := Indy.Response.LastModified;
1485 tmpBoard.IsSETTINGTXT := true;
1486 tmpBoard.TitlePictureURL := GetTitlePictureURL(settingBody, tmpBoard);
1487 tmpBoard.Modified := true;
1491 StatusBar.Panels[0].Text := 'SETTING.TXT
\8eæ
\93¾
\8a®
\97¹(' + IntToStr(Indy.ResponseCode) + ')';
1494 on E: EIdException do begin
1495 if( AnsiPos('304', E.Message) > 0 ) then
1496 StatusBar.Panels[0].Text := 'SETTING.TXT
\8dX
\90V
\96³
\82µ(' + IntToStr(Indy.ResponseCode) + ')'
1498 StatusBar.Panels[0].Text := 'SETTING.TXT
\8eæ
\93¾
\83G
\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
1503 Screen.Cursor := crDefault;
1505 ShowBoardInformation(tmpBoard, BoardInformationMemo);
1511 procedure TEditorForm.ShowBoardInformation(ABoard: TBoard; AMemo: TMemo);
1516 AMemo.Lines.Add('[SETTING.TXT]');
1517 if ABoard.IsSETTINGTXT then begin
1518 if FileExists(ABoard.GetSETTINGTXTFileName) then begin
1519 AMemo.Lines.Add(DateTimeToStr(ABoard.SETTINGTXTTime) + '
\8dX
\90V');
1520 body := TStringList.Create;
1522 body.LoadFromFile(ABoard.GetSETTINGTXTFileName);
1523 AMemo.Lines.AddStrings(body);
1528 ABoard.IsSETTINGTXT := false;
1529 ABoard.SETTINGTXTTime := ZERO_DATE;
1530 AMemo.Lines.Add('Local
\82É
\95Û
\91¶
\82³
\82ê
\82½SETTING.TXT
\82ª
\8c©
\82Â
\82©
\82è
\82Ü
\82¹
\82ñ');
1531 AMemo.Lines.Add('
\83\81\83j
\83\85\81[
\82æ
\82è
\8dÄ
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
1534 AMemo.Lines.Add('SETTING.TXT
\82ð
\8eæ
\93¾
\82µ
\82Ä
\82¢
\82Ü
\82¹
\82ñ
\81B');
1535 AMemo.Lines.Add('
\83\81\83j
\83\85\81[
\82æ
\82è
\8eæ
\93¾
\82µ
\82Ä
\82
\82¾
\82³
\82¢
\81B');
1538 function TEditorForm.GetTitlePictureURL(body: TStringList; ABoard: TBoard): string;
1539 //BBS_TITLE_PICTURE=
1546 for i := 0 to body.Count - 1 do begin
1547 if (AnsiPos('BBS_TITLE_PICTURE=', body[i]) > 0) or
1548 (AnsiPos('BBS_FIGUREHEAD=', body[i]) > 0) then begin
1550 Delete(tmp, 1, AnsiPos('=', tmp));
1551 if AnsiPos('../', tmp) > 0 then begin
1552 tmp := CustomStringReplace(tmp, '../', GikoSys.UrlToServer(ABoard.URL));
1560 procedure TEditorForm.GetTitlePictureActionUpdate(Sender: TObject);
1562 if FThreadItem = nil then
1563 GetTitlePictureAction.Enabled := FBoard.IsSETTINGTXT
1565 GetTitlePictureAction.Enabled := FThreadItem.ParentBoard.IsSETTINGTXT;
1567 if GetTitlePictureAction.Enabled Then begin
1568 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
1569 GetTitlePictureAction.Enabled := not FWork;
1573 procedure TEditorForm.GetTitlePictureActionExecute(Sender: TObject);
1575 memStream: TMemoryStream;
1582 memStream := TMemoryStream.Create;
1584 tmpBoard := GetBoard;
1586 if (tmpBoard <> nil) and (tmpBoard.TitlePictureURL <> '') then begin
1587 StatusBar.Panels[0].Text := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c\83_
\83E
\83\93\83\8d\81[
\83h
\92\86';
1588 Screen.Cursor := crHourGlass;
1590 // URL
\82ð
\8ew
\92è
\82µ
\82Ä
\83\81\83\82\83\8a\82É
\93Ç
\82Ý
\8d\9e\82Þ
1591 GetWebData(tmpBoard.TitlePictureURL, tmpBoard.URL,
1592 ZERO_DATE, memStream);
1593 if Indy.ResponseCode = 200 then begin
1594 memStream.SaveToFile(tmpBoard.GetTitlePictureFileName);
1596 tmpBoard.Modified := true;
1598 StatusBar.Panels[0].Text := '
\94Â
\83g
\83b
\83v
\89æ
\91\9c (' + IntToStr(Indy.ResponseCode) + ')';
1605 Screen.Cursor := crDefault;
1609 \brief URL
\82Ì
\83f
\81[
\83^
\82ðstream
\82É
\93Ç
\82Ý
\8d\9e\82Þ
1610 \param URL
\93Ç
\82Ý
\8d\9e\82Þ
\90æ
1611 \param RefURL referer
\82É
\90Ý
\92è
\82·
\82é
1612 \param Modified Modified
\82É
\90Ý
\92è
\82·
\82é
1613 \param stream
\93Ç
\82Ý
\8d\9e\82ñ
\82¾
\83f
\81[
\83^
\82Ì
\95Û
\91¶
\90æ
1615 procedure TEditorForm.GetWebData(const URL: string; const RefURL: string;
1616 Modified: TDateTime; stream: TStream);
1619 Indy.Request.Referer := RefURL;
1620 Indy.Request.LastModified := Modified;
1622 IdAntiFreeze.Active := True;
1624 Indy.Get(URL, stream);
1626 IdAntiFreeze.Active := False;
1630 procedure TEditorForm.ShowTitlePicture();
1635 tmpBoard := GetBoard;
1637 if FileExists(tmpBoard.GetTitlePictureFileName) then begin
1638 TitlePictureBrowser.Navigate(tmpBoard.GetTitlePictureFileName);
1640 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';
1641 SetContent(s, TitlePictureBrowser);
1645 function TEditorForm.GetFusianaName(body: TStringList; ABoard: TBoard): String;
1650 for i := 0 to body.Count - 1 do begin
1651 if (AnsiPos('BBS_NONAME_NAME=', body[i]) > 0) then begin
1653 Delete(tmp, 1, AnsiPos('=', tmp));
1660 procedure TEditorForm.GetHeadTXTActionExecute(Sender: TObject);
1662 URL, RefURL: string;
1663 settingBody: TStringList;
1665 memStream: TMemoryStream;
1667 if not FWork then begin
1670 tmpBoard := GetBoard;
1671 if (tmpBoard <> nil) then begin
1673 RefURL := tmpBoard.URL;
1674 if RefURL[Length(RefURL)] <> '/' then
1675 URL := RefURL + '/' + 'head.txt'
1677 URL := RefURL + 'head.txt';
1679 Screen.Cursor := crHourGlass;
1680 memStream := TMemoryStream.Create;
1682 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';
1684 GetWebData(URL, RefURL, tmpBoard.HEADTXTTime, memStream);
1685 if( Indy.ResponseCode = 200 ) then begin
1686 settingBody := TStringList.Create;
1688 memStream.Seek(0, soFromBeginning);
1689 settingBody.LoadFromStream(memStream);
1690 settingBody.Insert(0, '<HTML lang="ja"><HEAD>');
1691 settingBody.Insert(1, '<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">');
1692 settingBody.Insert(2, '<TITLE>' + tmpBoard.Title + '</TITLE>');
1693 settingBody.Insert(3, '<base href="' + RefURL + '"></HEAD><BODY>');
1694 settingBody.Add('</BODY></HTML>');
1695 settingBody.SaveToFile(tmpBoard.GETHEADTXTFileName);
1696 tmpBoard.HEADTXTTime := Indy.Response.LastModified;
1697 tmpBoard.IsHEADTXT := true;
1698 tmpBoard.Modified := true;
1702 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾
\8a®
\97¹(' + IntToStr(Indy.ResponseCode) + ')';
1705 on E: EIdException do begin
1706 if( AnsiPos('304', E.Message) > 0 ) then
1707 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8dX
\90V
\96³
\82µ(' + IntToStr(Indy.ResponseCode) + ')'
1709 StatusBar.Panels[0].Text := '
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾
\83G
\83\89\81[(' + IntToStr(Indy.ResponseCode) + ')';
1714 Screen.Cursor := crDefault;
1716 if tmpBoard.IsHEADTXT then begin
1717 ShowBoardHead(tmpboard, LocalEdit);
1725 procedure TEditorForm.CalcCapacityActionExecute(Sender: TObject);
1731 //
\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
1734 if Board.BoardPlugIn <> nil then
1735 body := CustomStringReplace(body, #13#10, '<br>')
1737 body := CustomStringReplace(body, #13#10, ' <br> ');
1738 StatusBar.Panels[0].Text := '
\97e
\97Ê:' + IntToStr(Length(body)) + ' byte';
1741 procedure TEditorForm.LocalRuleClick(Sender: TObject);
1745 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
1747 RocalRuleTab.TabVisible := LocalRule.Checked;
1748 ini.WriteBool('EditorForm', 'LocalRuleTab', RocalRuleTab.TabVisible);
1755 procedure TEditorForm.FormDeactivate(Sender: TObject);
1757 if GikoSys.Setting.GestureEnabled then begin
1758 MouseGesture.UnHook;
1759 //MouseGesture.SetHook( GikoForm.Handle );
1764 procedure TEditorForm.OnGestureStart(Sender: TObject);
1769 procedure TEditorForm.OnGestureMove(Sender: TObject);
1775 s := MouseGesture.GetGestureStr;
1777 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
1778 if Action <> nil then
1779 ActStr := '
\81i' + Action.Caption + '
\81j';
1780 s := '
\83W
\83F
\83X
\83`
\83\83\81[: ' + s + ActStr;
1781 StatusBar.Panels[0].Text := s;
1784 procedure TEditorForm.OnGestureEnd(Sender: TObject);
1789 s := MouseGesture.GetGestureStr;
1791 Action := GikoSys.Setting.Gestures.GetGestureAction(s);
1792 if Action <> nil then
1794 StatusBar.Panels[0].Text := '';
1797 procedure TEditorForm.ShowBoardHead(ABoard: TBoard; AMemo: TMemo);
1799 wDoc, WTex, le: OLEVariant;
1802 //http://www.campus.ne.jp/~ishigami/CREATION/TECHNIC/WEBAP-2.htm
1803 WebBrowser1.Navigate(ABoard.GETHEADTXTFileName,le,le,le,le);
1804 //
\83\8c\83^
\83\8a\83\93\83O
\82ª
\92x
\82·
\82¬
\82ÄTXT
\82É
\88Ú
\82¹
\82È
\82¢
\81B
\82Ê
\82é
\82Ûorz
1805 //
\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
1806 //
\82±
\82ê
\82Å
\82¢
\82¯
\82Ü
\82µ
\82½
\81B
\82 \82è
\82ª
\82Æ
\82¤
\82²
\82´
\82¢
\82Ü
\82µ
\82½
\81B
1807 while (WebBrowser1.ReadyState <> READYSTATE_COMPLETE) and
1808 (WebBrowser1.ReadyState <> READYSTATE_INTERACTIVE) do begin
1809 Application.ProcessMessages;
1811 wDoc := WebBrowser1.Document;
1812 wTex := wDoc.body.createTextRange;
1813 LocalEdit.Text := wTex.text;
1816 procedure TEditorForm.LocalRuleBrowseClick(Sender: TObject);
1823 if ABoard = nil then Exit;
1825 URL := ABoard.GETHEADTXTFileName;
1826 GikoSys.OpenBrowser(URL, gbtAuto);
1829 procedure TEditorForm.SaveNameMailActionExecute(Sender: TObject);
1831 SaveNameMailAction.Checked := not SaveNameMailAction.Checked;
1832 KotehanCheckBox.Enabled := SaveNameMailAction.Checked;
1835 function TEditorForm.LFusianaGet(const s: String): Boolean;
1837 FUSIANA = 'fusianasan';
1841 i := AnsiPos(FUSIANA, s);
1845 procedure TEditorForm.BeLogInOutEActionExecute(Sender: TObject);
1847 GikoSys.Setting.BeLogin := not GikoSys.Setting.BeLogin;
1850 procedure TEditorForm.BeLogInOutEActionUpdate(Sender: TObject);
1852 if (GikoSys.Setting.BeUserID <> '') and (GikoSys.Setting.BeCode <> '') then begin
1853 if (GikoSys.Setting.BeLogin) then BeLogInOutEAction.Checked := true
1854 else BeLogInOutEAction.Checked := false;
1855 BeLogInOutEAction.Enabled := true
1857 BeLogInOutEAction.Enabled := false;
1860 // Cookie
\82Ì
\8eæ
\93¾
1861 procedure TEditorForm.GetCookie(Rawtext: String; ABoard: TBoard);
1863 COOKIE_MARK = 'Set-Cookie:';
1866 EXPIRES_MARK = 'expires=';
1872 ABoard.Cookie := '';
1873 while (AnsiPos(COOKIE_MARK, Rawtext) > 0 ) do begin
1875 tmp := Copy(Rawtext, AnsiPos(COOKIE_MARK, Rawtext) + Length(COOKIE_MARK), Length(Rawtext));
1876 Delete(Rawtext, 1, AnsiPos('Set-Cookie', Rawtext)+ Length(COOKIE_MARK));
1877 //Cookie
\82ð
\90Ø
\82è
\8fo
\82·
1878 val := Trim(GikoSys.GetTokenIndex(tmp, ';', 0));
1879 if( AnsiPos(VAL_SPID, val) > 0 ) then begin
1880 ABoard.SPID := Copy(val, AnsiPos(VAL_SPID, val) + Length(VAL_SPID), Length(val));
1881 end else if( AnsiPos(VAL_PON, val) > 0 ) then begin
1882 ABoard.PON := Copy(val, AnsiPos(VAL_PON, val) + Length(VAL_PON), Length(val));
1884 ABoard.Cookie := ABoard.Cookie + val + '; ';
1886 //expires
\82ð
\90Ø
\82è
\8fo
\82·
1887 val := Trim(GikoSys.GetTokenIndex(tmp, ';', 1));
1888 if( AnsiPos(EXPIRES_MARK, val) > 0) then begin
1889 Delete(val, 1, AnsiPos(EXPIRES_MARK, val) + Length(EXPIRES_MARK) - 1);
1890 ABoard.Expires := GMTToLocalDateTime(val);
1896 //!
\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
1897 procedure TEditorForm.UpdateSambaActionUpdate(Sender: TObject);
1899 UpdateSambaAction.Enabled := FSambaTimer.Enabled;
1902 //!
\83T
\83\93\83o
\8dX
\90V
\83A
\83N
\83V
\83\87\83\93
1903 procedure TEditorForm.UpdateSambaActionExecute(Sender: TObject);
1908 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
1909 input := ZenToHan(input);
1910 if GikoSys.IsNumeric(input) then begin
1911 FSambaTimer.UpdateSambaSetting(StrToInt(input));
1913 //
\91S
\82Ä
\82Ì
\83t
\83H
\81[
\83\80\82©
\82ç
\81ASamba
\83^
\83C
\83}
\81[
\82ð
\8dX
\90V
\82·
\82é
1914 for i := 0 to Screen.FormCount - 1 do begin
1915 if Screen.Forms[i] is TEditorForm then begin
1916 TEditorForm(Screen.Forms[i]).FSambaTimer.Update;
1917 TEditorForm(Screen.Forms[i]).UpdateSambaStatus;
1921 ShowMessage('
\90\94\92l
\82ð
\93ü
\97Í
\82µ
\82Ä
\82
\82¾
\82³
\82¢');
1922 UpdateSambaActionExecute(Sender);
1927 procedure TEditorForm.UpdateSambaStatus;
1929 if (FSambaTimer.Enabled) then begin
1930 StatusBar.Panels[2].Text
1931 := 'Samba24
\8bK
\92è
\92l' + IntToStr(FSambaTimer.SambaInterval);
1935 procedure TEditorForm.InputAssistActionExecute(Sender: TObject);
1941 TextWidth, ItemWidth, tmpWidth: Integer;
1943 if FInputAssistKey = '' then Exit;
1945 InputAssistPopupMenu.Items.Clear;
1947 if (FResistWords = nil) then begin
1948 FResistWords := TStringList.Create;
1953 if (GetKeyState( VK_SHIFT ) < 0) then begin
1954 //
\83V
\83t
\83g
\82ª
\89\9f\82³
\82ê
\82Ä
\82¢
\82ê
\82Î
\81A
\83L
\81[
\82Å
\8en
\82Ü
\82é
\83J
\83e
\83S
\83\8a
1956 InputAssistDM.GetStartWithCategoryResistWords(
1957 FInputAssistKey, FResistWords);
1959 //
\83V
\83t
\83g
\82ª
\96³
\82¢
\82Ì
\82Å
\81A
\83L
\81[
\82Å
\8en
\82Ü
\82é
\83L
\81[
1961 InputAssistDM.GetStartWithKeyResistWords(
1962 FInputAssistKey, FResistWords);
1964 Bitmap := TBitmap.Create;
1966 Bitmap.Canvas.Font.Assign(BodyEdit.Font);
1967 //
\83}
\81[
\83W
\83\935px
1968 TextWidth := Bitmap.Canvas.TextWidth(FInputAssistKey) + 5;
1970 for i := 0 to count - 1 do begin
1971 item := TMenuItem.Create(nil);
1972 item.Break := mbNone;
1973 item.Caption := FResistWords[i];
1975 item.OnClick := InputAssistMenuClick;
1976 InputAssistPopupMenu.Items.Add(item);
1978 tmpWidth := Bitmap.Canvas.TextWidth(Item.Caption);
1979 if (tmpWidth > ItemWidth) then begin
1980 ItemWidth := tmpWidth;
1987 if (count > 0) then begin
1989 point.X := point.X + Self.Left + (Self.Width - BodyEdit.Width) div 2;
1990 point.Y := point.Y + Self.Top + (Self.Height - Self.ClientHeight);
1992 if Screen.DesktopWidth >
1993 (point.X + TextWidth + ItemWidth) then begin
1994 InputAssistPopupMenu.Popup(
1995 point.X + TextWidth,
1996 point.Y + EditorPage.Top + EditorPage.TabHeight + BodyEdit.Top);
1998 InputAssistPopupMenu.Popup(
1999 point.X - TextWidth - ItemWidth,
2000 point.Y + EditorPage.Top + EditorPage.TabHeight + BodyEdit.Top);
2005 procedure TEditorForm.InputAssistMenuClick(Sender: TObject);
2010 if not (Sender is TMenuItem) then Exit;
2012 if (FResistWords <> nil) then begin
2015 TResistWord(FResistWords.Objects[TMenuItem(Sender).Tag]).GetText;
2019 IMC := ImmGetContext(BodyEdit.Handle); //
\83R
\83\93\83e
\83L
\83X
\83g
\8eæ
\93¾
2021 ImmNotifyIME(IMC, NI_COMPOSITIONSTR, CPS_CANCEL, 0);
2023 ImmReleaseContext(BodyEdit.Handle, IMC); //
\83R
\83\93\83e
\83L
\83X
\83g
\89ð
\95ú
2027 FInputAssistKey := '';
2029 InsertText(BodyEdit, text);
2032 //! TMemo
\82Ì
\83J
\81[
\83\
\83\8b\88Ê
\92u
\82É
\95¶
\8e\9a\97ñ
\91}
\93ü
2033 procedure TEditorForm.InsertText(Memo: TMemo; Text: String);
2035 line, sel, pos: Integer;
2036 left, right : String;
2038 Memo.Lines.BeginUpdate;
2039 line := SendMessage(Memo.Handle,EM_LINEFROMCHAR,-1,0); //
\8ds
2040 sel := Memo.SelStart;
2041 pos := sel - SendMessage(Memo.Handle, EM_LINEINDEX, -1, 0); //
\8c\85
2042 if (pos > 0) then begin
2043 left := Copy(Memo.Lines[line], 0, pos);
2047 right := Copy(Memo.Lines[line], pos + 1, Length(Memo.Lines[line]));
2048 Memo.Lines.Strings[line] := left + Text + right;
2049 Memo.Lines.EndUpdate;
2050 //
\81@
\83L
\83\83\83\8c\83b
\83g
\82Ì
\88Ê
\92u
\82ð
\8dX
\90V
\82·
\82é
2051 Memo.SelStart := sel + Length(text);
2052 //
\83L
\83\83\83\8c\83b
\83g
\82Ì
\88Ê
\92u
\82Ü
\82Å
\83X
\83N
\83\8d\81[
\83\8b
2053 Memo.Perform(EM_SCROLLCARET, 0, 0);
2057 procedure TEditorForm.ApplicationEvents1Message(var Msg: tagMSG;
2058 var Handled: Boolean);
2065 if (Self.Active) then begin
2067 //
\83L
\81[
\89\9f\89º
\82Ì
\82Ý
\8eó
\82¯
\8eæ
\82é
2070 //
\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é
2071 if (EditorPage.ActivePageIndex = 0)
2072 and (GetKeyState( VK_CONTROL ) < 0) then begin
2073 wmMsg.Msg := Msg.message;
2074 wmMsg.CharCode := Word(Msg.wParam);
2075 wmMsg.KeyData := Msg.lParam;
2076 if (wmMsg.CharCode = 229) and (wmMsg.KeyData = 3735553) then begin
2077 IMC := ImmGetContext(BodyEdit.Handle); //
\83R
\83\93\83e
\83L
\83X
\83g
\8eæ
\93¾
2078 Len := ImmGetCompositionString(IMC, GCS_COMPSTR, nil, 0); //
\82Ü
\82¸
\92·
\82³
\82ð
\8eæ
\93¾
2079 if (Len > 0) then begin
2080 SetLength(Str, Len + 1); //Buffer
\82Ì
\83\81\83\82\83\8a\82ð
\90Ý
\92è
2081 ImmGetCompositionString(IMC, GCS_COMPSTR, PChar(Str), Len + 1); //
\82Ü
\82¸
\92·
\82³
\82ð
\8eæ
\93¾
2082 SetLength(Str, Len);
2083 FInputAssistKey := Str;
2084 InputAssistActionExecute(nil);
2087 ImmReleaseContext(BodyEdit.Handle, IMC); //
\83R
\83\93\83e
\83L
\83X
\83g
\89ð
\95ú
2096 procedure TEditorForm.ShowInputAssistFormExecute(Sender: TObject);
2098 form : TInputAssistForm;
2100 form := TInputAssistForm.Create(nil);
2102 if TopAction.Checked then begin //
\83X
\83e
\83C
\8fó
\91Ô
\82É
\90Ý
\92è
2103 SetWindowPos(form.Handle, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + SWP_NOSIZE);
2105 form.SetUpFromEditor;
2106 if (form.ShowModal = mrOk) then begin
2107 InsertText(BodyEdit, form.GetInsertText);
2113 //! Cookie
\8fî
\95ñ
\8dí
\8f\9c
2114 procedure TEditorForm.ReleaseCookieActionExecute(Sender: TObject);
2118 //
\83X
\83\8c\83b
\83h
\82ª
\96³
\82¢
\81@
\83X
\83\8c\97§
\82Ä
\82Ì
\82Æ
\82«
\82ÍFBoard
\82ð
\92¼
\90Ú
\8eg
\82¤
2121 //
\83N
\83b
\83L
\81[
\82Ì
\8fî
\95ñ
\82ð
\8eÌ
\82Ä
\82é
2125 // 0
\82É
\8aª
\82«
\96ß
\82·
2128 //!
\94Â
\8fî
\95ñ
\8eæ
\93¾Update
\83C
\83x
\83\93\83g
2129 procedure TEditorForm.GetSETTINGTXTActionUpdate(Sender: TObject);
2131 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
2132 GetSETTINGTXTAction.Enabled := not FWork;
2134 //!
\83\8d\81[
\83J
\83\8b\83\8b\81[
\83\8b\8eæ
\93¾Update
\83C
\83x
\83\93\83g
2135 procedure TEditorForm.GetHeadTXTActionUpdate(Sender: TObject);
2137 //
\8eÀ
\8ds
\92\86\82Í
\8eÀ
\8ds
\95s
\89Â
2138 GetSETTINGTXTAction.Enabled := not FWork;
2141 //! Samba
\83^
\83C
\83}
\81[
\83C
\83x
\83\93\83g
2142 procedure TEditorForm.SambaTimer(Sender: TObject);
2145 if FSambaTimer.WriteDeta = ZERO_DATE then
2146 StatusBar.Panels[1].Text := '
\8f\89\8f\91'
2148 FNow := IncMilliSecond(FNow, 500);
2149 StatusBar.Panels[1].Text :=
2150 Format('%8.0f
\95b
\8co
\89ß', [SecondSpan(FNow, FSambaTimer.WriteDeta)]);
2154 \brief
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82Æ
\83T
\83C
\83Y
\82Ì
\90Ý
\92è
2156 procedure TEditorForm.SetWindowRect;
2158 wp: TWindowPlacement;
2160 //
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\90Ý
\92è
2161 wp.length := sizeof(wp);
2162 wp.rcNormalPosition.Top := GikoSys.Setting.EditWindowTop;
2163 wp.rcNormalPosition.Left := GikoSys.Setting.EditWindowLeft;
2165 wp.rcNormalPosition.Bottom := GikoSys.Setting.EditWindowTop + GikoSys.Setting.EditWindowHeight;
2166 wp.rcNormalPosition.Right := GikoSys.Setting.EditWindowLeft + GikoSys.Setting.EditWindowWidth;
2167 wp.showCmd := SW_HIDE;
2168 SetWindowPlacement(Handle, @wp);
2170 if GikoSys.Setting.EditWindowMax then begin
2171 WindowState := wsMaximized;
2174 //
\83E
\83B
\83\93\83h
\83E
\82ª
\89æ
\96Ê
\8aO
\82È
\82ç
\89æ
\96Ê
\93à
\82É
\88Ú
\93®
\82·
\82é
2175 if (Left + Width) > Screen.Width then begin
2178 if (Top + Height) > Screen.Height then begin
2181 if Left < 0 then begin
2184 if Top < 0 then begin
2188 //
\8c»
\8dÝ
\82Ì
\83E
\83B
\83\93\83h
\83E
\82Ì
\88Ê
\92u
\82ð
\95Û
\91¶
2189 GikoSys.Setting.EditWindowTop := Top + WINDOWMOVE_V; //
\8e\9f\82É
\8aJ
\82
\83E
\83B
\83\93\83h
\83E
\82Í
2190 GikoSys.Setting.EditWindowLeft := Left + WINDOWMOVE_H; //
\81@
\81@
\81@
\89E
\8eÎ
\82ß
\89º
\82É
\82¸
\82ç
\82·
2191 //
\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·
2192 if GikoSys.Setting.EditWindowHeight < 144 then begin
2195 if GikoSys.Setting.EditWindowWidth < 144 then begin
2200 \brief
\8ag
\92£
\83^
\83u
\90Ý
\92è
2202 procedure TEditorForm.SetExtraTab;
2204 SECTION = 'EditorForm';
2208 ini := TMemIniFile.Create(GikoSys.Setting.GetFileName);
2210 BoardtopTab.TabVisible := ini.Readbool(SECTION, 'BoardTopTab', False);
2211 BoardTop.Checked := BoardtopTab.TabVisible;
2212 RocalRuleTab.TabVisible := ini.ReadBool(SECTION, 'LocalRuleTab', False);
2213 LocalRule.Checked := RocalRuleTab.TabVisible;
2220 \return
\83\8c\83X
\83G
\83f
\83B
\83^
\82ª
\93\8a\8de
\82µ
\82æ
\82¤
\82Æ
\82µ
\82Ä
\82¢
\82é
\94Â
2222 function TEditorForm.GetBoard : TBoard;
2224 //
\83X
\83\8c\83b
\83h
\83A
\83C
\83e
\83\80\82ªnull
\82Ì
\8e\9e\82ÍFBoard
2225 if FThreadItem = nil then begin
2228 Result := FThreadItem.ParentBoard;
2232 \brief GikoForm
\82É
\83\81\83b
\83Z
\81[
\83W
\82ð
\92Ç
\89Á
\82·
\82é
2233 \param icon
\83\81\83b
\83Z
\81[
\83W
\82É
\82Â
\82
\83A
\83C
\83R
\83\93
2235 procedure TEditorForm.AddFormMessageNew(icon: TGikoMessageIcon);
2237 if FThreadItem = nil then begin
2238 GikoForm.AddMessageList(FBoard.Title + ' ' + GikoSys.GetGikoMessage(gmNewSure), nil, icon)
2240 GikoForm.AddMessageList(FThreadItem.Title + ' ' + GikoSys.GetGikoMessage(gmNewRes), nil, icon);
2245 \brief
\83\8d\81[
\83J
\83\8bfusiana
\83g
\83\89\83b
\83v
2246 \return true:
\91\97\90M
\92\86\8e~ false:
\91\97\90M
2248 function TEditorForm.isLocalFusianaTrap: Boolean;
2253 if GikoSys.Setting.LocalTrapAtt then begin
2254 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
2255 if (LFusianaGet(Namae)) or (Namae = '
\8eR
\8dè
\8fÂ') then begin
2256 if FusianaMsgBox = IDNO then begin
2263 \brief
\83\8a\83\82\81[
\83gfusiana
\83g
\83\89\83b
\83v
2264 \return true:
\91\97\90M
\92\86\8e~ false:
\91\97\90M
2266 function TEditorForm.isRemoteFusianaTrap: Boolean;
2274 Namae := THTMLCreate.RepHtml(NameComboBox.Text);
2275 if (GikoSys.Setting.RemoteTrapAtt) and (Length(Namae) = 0) then begin
2278 if Board = nil then Exit;
2280 if not FileExists(Board.GetSETTINGTXTFileName) then begin
2281 //Setting.txt
\82ª
\82È
\82©
\82Á
\82½
\82ç
\8eæ
\93¾
2282 //
\8eI
\82É
\95\89\89×
\82ª
\82©
\82©
\82è
\82»
\82¤...
2284 GetSETTINGTXTAction.Execute;
2290 if FileExists(Board.GetSETTINGTXTFileName) then begin
2291 body := TStringList.Create;
2293 body.LoadFromFile(Board.GetSETTINGTXTFileName);
2294 Remote := GetFusianaName(body, Board);
2300 if LFusianaGet(Remote) then begin
2301 if FusianaMsgBox = IDNO then begin
2308 \brief Header
\95¶
\8e\9a\97ñ
\8eæ
\93¾
2309 \param ACOOKIE Cookie
2313 \return Header
\95¶
\8e\9a\97ñ
2315 function TEditorForm.getHeaderStr(const ACOOKIE: string; const SPID : string;
2316 const PON : string; Board : TBoard) : string;
2320 Result := Result + 'SPID=' + SPID + '; ';
2322 Result := Result + 'PON=' + PON + '; ';
2324 //
\83z
\83X
\83g
\82ª2ch
\82Å
\81ABe
\82ÉLogin
\82µ
\82Ä
\82¢
\82ê
\82ÎBE
\82Ì
\83f
\81[
\83^
\82ð
\91\97\82é
2325 //GikoSys.ParseURI( URL, Protocol,Host, Path, Document, Port, Bookmark );
2326 //if GikoSys.Is2chHost(Host) and GikoSys.Setting.BeLogin then
2327 if (Board.Is2ch) then begin
2328 //
\8cÅ
\92è
\82Ì
\83N
\83b
\83L
\81[
\82ª
\82 \82ê
\82Î
\90H
\82í
\82¹
\82é
2329 if Length(GikoSys.Setting.FixedCookie) > 0 then begin
2330 //
\83z
\83X
\83g
\82ª2ch
\82Ì
\8fê
\8d\87\81C
\8cÅ
\92è
\82Ì
\83N
\83b
\83L
\81[
\82ð
\90H
\82í
\82¹
\82é
2331 Result := Result + GikoSys.Setting.FixedCookie + '; ';
2333 if (GikoSys.Setting.BeLogin) then begin
2334 Result := Result + 'MDMD=' + GikoSys.Setting.BeCode + '; '
2335 + 'DMDM=' + GikoSys.Setting.BeUserID + '; ';
2340 Result := 'Cookie: ' + Result + 'NAME=' + NameComboBox.Text + '; MAIL=' + MailComboBox.Text;
2344 \brief fusiana
\8cx
\8d\90\83_
\83C
\83A
\83\8d\83O
2345 \return IDYES
\8f\91\82«
\8d\9e\82Þ IDNO
\92\86\8e~
2347 function TEditorForm.FusianaMsgBox: Integer;
2349 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 +
2350 '
\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' +
2351 #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';
2353 Result := MsgBox(Handle, MSG_FUSIANA, '
\8fî
\95ñ',
2354 MB_YESNO or MB_ICONQUESTION);