4 \90Ý
\92è
\89æ
\96Ê
\81B
\82»
\82ê
\96¢
\96\9e\82Å
\82à
\82»
\82ê
\88È
\8fã
\82Å
\82à
\82È
\82¢
\81B
5 Pref
\83I
\83u
\83W
\83F
\83N
\83g
\82ð
\8eÀ
\8dÛ
\82É
\91\80\8dì
\82·
\82é
\81B
11 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
12 ComCtrls, StdCtrls, ExtCtrls, BottleDef, Spin,
13 CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance,
14 ImgList, StrListEditor, SppList, Plugins, Clipbrd, SsPlayTime, StrUtils,
18 TfrmSetting = class(TForm)
19 PageControl: TPageControl;
21 tstGeneral: TTabSheet;
22 tstDisplay: TTabSheet;
24 rgpWhenReturn: TRadioGroup;
25 rgpWhenShiftReturn: TRadioGroup;
26 rgpWhenCtrlReturn: TRadioGroup;
27 memDefaultScript: TMemo;
28 lblDefaultScript: TLabel;
29 tstReceive: TTabSheet;
30 OpenDialog: TOpenDialog;
31 spnWaitScriptEnd: TSpinEdit;
32 lblWaitScriptEnd: TLabel;
33 cbxConfirmOnExit: TCheckBox;
34 ctvBottle: TCPCConfigTreeView;
36 frmColorSetting: TfrmColorSetting;
38 frmRuleList: TfrmBottleChainList;
39 tstDetailed: TTabSheet;
42 tstChannel: TTabSheet;
43 lblAutoJoinChannels: TLabel;
44 memAutoJoinChannels: TMemo;
45 cbxAutoStart: TCheckBox;
46 btnUseCurrentJoinChannels: TButton;
47 ImageList: TImageList;
48 tstSurfacePreview: TTabSheet;
49 lblSurfacePreview: TLabel;
50 lvwPluginList: TListView;
51 lblPluginList: TLabel;
52 ctvSurfacePreview: TCPCConfigTreeView;
53 btnVisibleGhosts: TButton;
54 cbxHideGhosts: TCheckBox;
55 cbxNoExtraSSTPHeaders: TCheckBox;
58 cbxShowRuler: TCheckBox;
59 rgpTabPosition: TRadioGroup;
60 lblGhostDropDownCount: TLabel;
61 spnGhostDropDownCount: TSpinEdit;
62 cbxIgnoreTimeCritical: TCheckBox;
63 cbxAutoClip: TCheckBox;
65 tvwCategory: TTreeView;
68 cbxConfirmOnTabClose: TCheckBox;
69 tstConnection: TTabSheet;
71 lblProxyAddress: TLabel;
74 edtProxyAddress: TEdit;
76 cbxUseHttpProxy: TCheckBox;
77 spnReconnectWait: TSpinEdit;
78 lblReconnectWait: TLabel;
79 lblPartialConfirmFormat: TLabel;
80 edtPartialConfirmFormat: TEdit;
81 cbxAutoPartialConfirm: TCheckBox;
82 tstPlayTime: TTabSheet;
83 grpPlayTimeParams: TGroupBox;
84 lblPlayTimeProfile: TLabel;
85 cbxPlayTimeProfile: TComboBox;
86 spnCostDBChar: TSpinEdit;
87 spnCostWait: TSpinEdit;
88 spnCostSurface: TSpinEdit;
89 spnCostChar: TSpinEdit;
90 spnCostQuickChar: TSpinEdit;
92 lblCostSurface: TLabel;
94 lblCostDBChar: TLabel;
95 lblCostQuickChar: TLabel;
96 btnSavePlayTimeProfile: TButton;
97 lvwCostSpecials: TListView;
98 lblCostSpecials: TLabel;
99 btnPlaySpecialAdd: TButton;
100 btnPlaySpecialDelete: TButton;
101 gbxTabWidth: TGroupBox;
102 cbxAutoTabWidth: TCheckBox;
103 spnTabWidth: TSpinEdit;
105 edtBrowserName: TEdit;
106 BrowserLocateOpenDialog: TOpenDialog;
107 btnBrowserLocate: TButton;
108 procedure FormClose(Sender: TObject; var Action: TCloseAction);
109 procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
110 procedure ctvBottleNodeChecked(Sender: TObject;
111 Node: TCPCConfigItemNode);
112 procedure ctvBottleNodeChecking(Sender: TObject;
113 Node: TCPCConfigItemNode; var Allow: Boolean);
114 procedure tstRuleShow(Sender: TObject);
115 procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
116 procedure btnVisibleGhostsClick(Sender: TObject);
117 procedure lvwPluginListDblClick(Sender: TObject);
118 procedure edtLUIDEnter(Sender: TObject);
119 procedure edtLUIDExit(Sender: TObject);
120 procedure btnCopyLUIDClick(Sender: TObject);
121 procedure FormCreate(Sender: TObject);
122 procedure tvwCategoryChange(Sender: TObject; Node: TTreeNode);
123 procedure tvwCategoryMouseMove(Sender: TObject; Shift: TShiftState; X,
125 procedure cbxPlayTimeProfileChange(Sender: TObject);
126 procedure btnSavePlayTimeProfileClick(Sender: TObject);
127 procedure spnCostWaitChange(Sender: TObject);
128 procedure btnPlaySpecialAddClick(Sender: TObject);
129 procedure btnPlaySpecialDeleteClick(Sender: TObject);
130 procedure lvwCostSpecialsDblClick(Sender: TObject);
131 procedure spnTabWidthChange(Sender: TObject);
132 procedure cbxAutoTabWidthClick(Sender: TObject);
133 procedure btnBrowserLocateClick(Sender: TObject);
137 FSpinUpdateFlag: boolean;
138 procedure LoadPlayTimeProfiles;
139 procedure PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
140 procedure SpinControlToPlayTimeParams(Params: TSsPlayTimeParams);
141 procedure UpdateSpecialChars;
148 frmSetting: TfrmSetting;
152 ChannelDefaultGhost = '(
\83`
\83\83\83\93\83l
\83\8b\90\84\8f§
\83S
\81[
\83X
\83g)';
154 UnCheckedBottle = 17;
163 procedure TfrmSetting.Execute;
167 PageControl.ActivePage := tstGeneral;
168 memDefaultScript.Text := Pref.DefaultScript;
169 cbxShowRuler.Checked := Pref.ShowRuler;
170 cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
171 edtPartialConfirmFormat.Text := Pref.PartialConfirmFormat;
172 cbxAutoPartialConfirm.Checked := Pref.AutoPartialConfirm;
173 cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
174 cbxConfirmOnTabClose.Checked := Pref.ConfirmOnTabClose;
175 cbxAutoClip.Checked := Pref.AutoClip;
177 with frmColorSetting do begin
178 Color['H'] := Pref.TalkColorH;
179 Color['U'] := Pref.TalkColorU;
180 Color['Synchro'] := Pref.TalkColorS;
181 Color['Tag'] := Pref.MarkUpColor;
182 Color['Meta'] := Pref.MetaWordColor;
183 Color['Error'] := Pref.MarkErrorColor;
184 Color['Text'] := Pref.TextColor;
185 Color['Background'] := Pref.BgColor;
188 cbxPlayTimeProfile.Items.Clear;
189 cbxPlayTimeProfile.Items.Add(Pref.PlayTimeParams.ProfileName);
190 cbxPlayTimeProfile.ItemIndex := 0;
191 LoadPlayTimeProfiles;
192 PlayTimeParamsToSpinControl(Pref.PlayTimeParams);
195 cbxAutoStart.Checked := Pref.AutoStart;
196 rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
197 spnTabWidth.Value := Pref.TabWidth;
198 if Pref.TabWidth <= 0 then
199 spnTabWidth.Value := 0;
200 cbxAutoTabWidth.Checked := Pref.TabWidth <= 0;
201 spnGhostDropDownCount.Value := Pref.GhostDropDownCount;
203 with ctvBottle do begin
204 (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked := Pref.NoTranslate;
205 (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked := Pref.NoDescript;
206 if Pref.NoTransUrl then
207 (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Check
209 (GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
210 (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
211 (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
212 (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
213 (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
214 (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
215 (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked := Pref.NeedConfirmBeforeSend;
216 (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
217 (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
218 (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
221 on E: Exception do ShowMessage(E.Message);
223 //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
224 spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
226 rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
227 rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
228 rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
230 cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
231 edtProxyAddress.Text := Pref.ProxyAddress;
232 edtProxyPort.Text := IntToStr(Pref.ProxyPort);
234 spnReconnectWait.Value := Pref.ReconnectWait;
236 edtLUID.Text := Pref.LUID;
238 memFMOName.Lines := Pref.FMOName;
239 cbxHideGhosts.Checked := Pref.HideGhosts;
240 memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
241 cbxNoExtraSSTPHeaders.Checked := Pref.NoExtraSSTPHeaders;
243 with ctvSurfacePreview do
245 (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnHint;
246 (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnScriptPoint;
247 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
248 (Node.Item[Ord(Pref.SurfacePreviewOnScriptPointPosition)] as TCPCRadioNode).Check;
250 for i := 0 to Spps.Count-1 do
252 with lvwPluginList.Items.Add do
254 Caption := ExtractFileName(Spps.SppItem[i].ModuleName);
255 SubItems.Add(Spps.SppItem[i].PluginName);
258 edtBrowserName.Text := Pref.BrowserExeName;
264 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
268 Pref.DefaultScript := memDefaultScript.Text;
269 Pref.ShowRuler := cbxShowRuler.Checked;
270 Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
271 Pref.PartialConfirmFormat := edtPartialConfirmFormat.Text;
272 Pref.AutoPartialConfirm := cbxAutoPartialConfirm.Checked;
273 Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
274 Pref.ConfirmOnTabClose := cbxConfirmOnTabClose.Checked;
275 Pref.AutoClip := cbxAutoClip.Checked;
277 with frmColorSetting do begin
278 Pref.TalkColorH := Color['H'];
279 Pref.TalkColorU := Color['U'];
280 Pref.TalkColorS := Color['Synchro'];
281 Pref.MarkUpColor := Color['Tag'];
282 Pref.MetaWordColor := Color['Meta'];
283 Pref.MarkErrorColor := Color['Error'];
284 Pref.TextColor := Color['Text'];
285 Pref.BgColor := Color['Background'];
288 Pref.PlayTimeParams.ProfileName := cbxPlayTimeProfile.Text;
289 SpinControlToPlayTimeParams(Pref.PlayTimeParams);
291 Pref.AutoStart := cbxAutoStart.Checked;
292 Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
293 Pref.TabWidth := spnTabWidth.Value;
294 if cbxAutoTabWidth.Checked then
296 Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
298 with ctvBottle do begin
299 Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
300 Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
301 Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
302 Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
303 Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
304 Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
305 Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
306 Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
307 Pref.NeedConfirmBeforeSend := (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked;
308 Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
309 Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
310 Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
313 on E: Exception do ShowMessage(E.Message);
315 //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
316 Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
318 Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
319 Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
320 Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
322 Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
323 Pref.ProxyAddress := edtProxyAddress.Text;
324 Pref.ProxyPort := StrToInt(edtProxyPort.Text);
326 Pref.ReconnectWait := spnReconnectWait.Value;
328 Pref.LUID := edtLUID.Text;
330 Pref.FMOName := memFMOName.Lines;
331 SakuraSeeker.FileMappingTarget := Pref.FMOName;
332 Pref.HideGhosts := cbxHideGhosts.Checked;
333 Pref.NoExtraSSTPHeaders := cbxNoExtraSSTPHeaders.Checked;
335 Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
337 with ctvSurfacePreview do
339 Pref.SurfacePreviewOnHint := (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked;
340 Pref.SurfacePreviewOnScriptPoint := (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked;
341 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
342 for i := 0 to Node.Count-1 do
343 if (Node.Item[i] as TCPCRadioNode).Checked then
344 Pref.SurfacePreviewOnScriptPointPosition := TSurfacePreviewOnScriptPointPosition(i);
347 Pref.BrowserExeName := edtBrowserName.Text;
351 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
353 if not(Key in ['0'..'9']) then Key := Char(0);
356 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
357 Node: TCPCConfigItemNode);
359 //ShowMessage(ctvBottle.GetFullKeyPath(Node));
362 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
363 Node: TCPCConfigItemNode; var Allow: Boolean);
365 if Node.KeyName = 'IgnoreBottle' then begin
366 MessageDlg('
\82±
\82Ì
\8b@
\94\
\82Í
\8eÀ
\91\95\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ', mtError, [mbOk], 0);
371 procedure TfrmSetting.tstRuleShow(Sender: TObject);
373 frmRuleList.UpdateDisplay;
376 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
378 memAutoJoinChannels.Lines := JoinChannels;
381 procedure TfrmSetting.btnVisibleGhostsClick(Sender: TObject);
383 FullGhosts: TStringList;
385 FullGhosts := TStringList.Create;
386 SakuraSeeker.BeginDetect;
388 for i := 0 to SakuraSeeker.Count-1 do
389 FullGhosts.Add(SakuraSeeker[i].Name);
390 StrListEdit(Pref.VisibleGhostsList, '
\83S
\81[
\83X
\83g
\82ð
\8ew
\92è', true, FullGhosts);
396 procedure TfrmSetting.lvwPluginListDblClick(Sender: TObject);
399 if lvwPluginList.Selected = nil then
401 Index := lvwPluginList.Selected.Index;
402 if pfConfigure in Spps.SppItem[Index].PluginFunctions then
403 Spps.SppItem[Index].Configure
405 ShowMessage('
\92Ç
\89Á
\82Ì
\90Ý
\92è
\8d\80\96Ú
\82Í
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
408 procedure TfrmSetting.edtLUIDEnter(Sender: TObject);
410 FOldLUID := edtLUID.Text;
413 procedure TfrmSetting.edtLUIDExit(Sender: TObject);
418 TmpLUID := edtLUID.Text;
421 if Length(TmpLUID) <> 82 then
424 while i <= Length(TmpLUID) do
426 if not (TmpLUID[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '.', ',']) then
435 ShowMessage('LUID
\82Ì
\93à
\97e
\82ª
\95s
\90³
\82Å
\82·');
436 edtLUID.Text := FOldLUID;
440 procedure TfrmSetting.btnCopyLUIDClick(Sender: TObject);
442 Clipboard.SetTextBuf(PChar(edtLUID.Text));
445 procedure TfrmSetting.FormCreate(Sender: TObject);
451 for i := 0 to PageControl.PageCount-1 do
453 Cap := PageControl.Pages[i].Caption;
454 if Pos(':', Cap) > 0 then
455 Cap := Copy(Cap, 1, Pos(':', Cap)-1);
456 Node := tvwCategory.Items.Add(nil, Cap);
457 Node.ImageIndex := -1;
458 Node.SelectedIndex := SettingIcon;
460 tvwCategoryChange(Self, tvwCategory.Items[0]);
461 tvwCategory.Items[0].Selected := true;
464 procedure TfrmSetting.tvwCategoryChange(Sender: TObject; Node: TTreeNode);
466 PageControl.ActivePageIndex := Node.Index;
467 pnlHeading.Caption := PageControl.ActivePage.Caption;
470 procedure TfrmSetting.tvwCategoryMouseMove(Sender: TObject;
471 Shift: TShiftState; X, Y: Integer);
477 Node := tvwCategory.GetNodeAt(X, Y);
480 NewHint := PageControl.Pages[Node.Index].Caption;
481 if tvwCategory.Hint <> NewHint then
483 tvwCategory.Hint := NewHint;
485 Application.ActivateHint(CPos);
489 tvwCategory.Hint := '';
490 Application.HideHint;
494 procedure TfrmSetting.PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
496 FSpinUpdateFlag := true;
499 spnCostWait.Value := CostWait;
500 spnCostSurface.Value := CostSurface;
501 spnCostChar.Value := CostChar;
502 spnCostDBChar.Value := CostDBChar;
503 spnCostQuickChar.Value := CostQuickChar;
504 lvwCostSpecials.Items.Clear;
506 FSpinUpdateFlag := false;
509 procedure TfrmSetting.SpinControlToPlayTimeParams(Params: TSsPlayTimeParams);
513 CostWait := spnCostWait.Value;
514 CostSurface := spnCostSurface.Value;
515 CostChar := spnCostChar.Value;
516 CostDBChar := spnCostDBChar.Value;
517 CostQuickChar := spnCostQuickChar.Value;
522 procedure TfrmSetting.LoadPlayTimeProfiles;
527 Path := ExtractFilePath(Application.ExeName);
528 i := FindFirst(Path + 'playtime\*.txt', 0, F);
531 Item := ChangeFileExt(F.Name, '');
532 if cbxPlayTimeProfile.Items.IndexOf(Item) < 0 then
533 cbxPlayTimeProfile.Items.Add(ChangeFileExt(F.Name, ''));
540 procedure TfrmSetting.cbxPlayTimeProfileChange(Sender: TObject);
542 Params: TSsPlayTimeParams;
544 Path, ProName: String;
547 Strs := TStringList.Create;
548 ProName := cbxPlayTimeProfile.Text;
550 Path := ExtractFilePath(Application.ExeName) + 'playtime\';
551 Strs.LoadFromFile(Path + ProName + '.txt');
552 Params := StringToComponent(Strs.Text) as TSsPlayTimeParams;
554 PlayTimeParamsToSpinControl(Params);
555 Pref.PlayTimeParams.Assign(Params);
563 with cbxPlayTimeProfile do
566 LoadPlayTimeProfiles;
567 ItemIndex := Items.IndexOf(ProName);
574 procedure TfrmSetting.btnSavePlayTimeProfileClick(Sender: TObject);
576 ProfileName, Path, FileName: String;
579 ProfileName := cbxPlayTimeProfile.Text;
580 if InputQuery('
\83v
\83\8d\83t
\83@
\83C
\83\8b\96¼', '
\95Û
\91¶
\82·
\82é
\83v
\83\8d\83t
\83@
\83C
\83\8b\96¼', ProfileName) then
583 Path := ExtractFilePath(Application.ExeName) + 'playtime\';
584 FileName := Path + ProfileName + '.txt';
585 if FileExists(FileName) then
586 if MessageDlg(Format('
\83v
\83\8d\83t
\83@
\83C
\83\8b"%s"
\82ð
\8fã
\8f\91\82«
\82µ
\82Ü
\82·', [ProfileName]),
587 mtConfirmation, mbOkCancel, 0) = mrCancel then
589 Strs := TStringList.Create;
591 SpinControlToPlayTimeParams(Pref.PlayTimeParams);
592 Pref.PlayTimeParams.ProfileName := ProfileName;
593 Strs.Text := ComponentToString(Pref.PlayTimeParams);
594 Strs.SaveToFile(FileName);
598 with cbxPlayTimeProfile do
601 Items.Add(ProfileName);
603 LoadPlayTimeProfiles;
607 ShowMessage('
\95Û
\91¶
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B' + E.Message);
612 procedure TfrmSetting.spnCostWaitChange(Sender: TObject);
616 Modified = '(
\95Ï
\8dX
\8dÏ
\82Ý)';
618 if FSpinUpdateFlag then
620 ProName := cbxPlayTimeProfile.Text;
621 if Copy(ProName, Length(ProName)-Length(Modified)+1, Length(Modified)) <> Modified then
623 ProName := Format('%s%s', [ProName, Modified]);
624 with cbxPlayTimeProfile do
629 LoadPlayTimeProfiles;
634 procedure TfrmSetting.btnPlaySpecialAddClick(Sender: TObject);
637 SPChar: TSsPlayTimeSpecialChar;
639 Application.CreateForm(TfrmSpecialCharEditor, frmSpecialCharEditor);
641 with frmSpecialCharEditor do
647 SPChar := Pref.PlayTimeParams.SpecialChars.Add as TSsPlayTimeSpecialChar;
648 SPChar.Char := SpecialChar;
650 Item := lvwCostSpecials.Items.Add;
651 Item.Caption := SPChar.DisplayChar;
652 Item.SubItems.Add(IntToStr(Cost));
653 spnCostWaitChange(Self);
657 frmSpecialCharEditor.Release;
661 procedure TfrmSetting.btnPlaySpecialDeleteClick(Sender: TObject);
663 with lvwCostSpecials do
664 if Selected <> nil then
666 Pref.PlayTimeParams.SpecialChars.Delete(Selected.Index);
668 spnCostWaitChange(Self);
672 procedure TfrmSetting.lvwCostSpecialsDblClick(Sender: TObject);
675 SPChar: TSsPlayTimeSpecialChar;
677 with lvwCostSpecials do
682 Application.CreateForm(TfrmSpecialCharEditor, frmSpecialCharEditor);
684 with frmSpecialCharEditor do
686 SPChar := Pref.PlayTimeParams.SpecialChars.Items[Item.Index] as TSsPlayTimeSpecialChar;
687 SpecialChar := SPChar.Char;
691 SPChar.Char := SpecialChar;
693 Item.Caption := SPChar.DisplayChar;
694 Item.SubItems[0] := IntToStr(Cost);
695 spnCostWaitChange(Self);
699 frmSpecialCharEditor.Release;
705 procedure TfrmSetting.UpdateSpecialChars;
709 SPChar: TSsPlayTimeSpecialChar;
711 with lvwCostSpecials do
714 for i := 0 to Pref.PlayTimeParams.SpecialChars.Count-1 do
716 SPChar := Pref.PlayTimeParams.SpecialChars.Items[i] as TSsPlayTimeSpecialChar;
718 Item.Caption := SPChar.DisplayChar;
719 Item.SubItems.Add(IntToStr(SPChar.Wait));
724 procedure TfrmSetting.spnTabWidthChange(Sender: TObject);
726 with cbxAutoTabWidth do
729 cbxAutoTabWidth.Checked := false;
730 OnClick := cbxAutoTabWidthClick;
734 procedure TfrmSetting.cbxAutoTabWidthClick(Sender: TObject);
740 if not cbxAutoTabWidth.Checked then
744 OnChange := spnTabWidthChange;
749 procedure TfrmSetting.btnBrowserLocateClick(Sender: TObject);
751 with BrowserLocateOpenDialog do
753 FileName := edtBrowserName.Text;
755 edtBrowserName.Text := FileName;