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;
17 TfrmSetting = class(TForm)
18 PageControl: TPageControl;
20 tstGeneral: TTabSheet;
21 tstDisplay: TTabSheet;
23 rgpWhenReturn: TRadioGroup;
24 rgpWhenShiftReturn: TRadioGroup;
25 rgpWhenCtrlReturn: TRadioGroup;
26 memDefaultScript: TMemo;
27 lblDefaultScript: TLabel;
28 tstReceive: TTabSheet;
29 OpenDialog: TOpenDialog;
30 spnWaitScriptEnd: TSpinEdit;
31 lblWaitScriptEnd: TLabel;
32 cbxNoSendGhostList: TCheckBox;
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 spnCostDBWhiteSpace: TSpinEdit;
87 spnCostWhiteSpace: TSpinEdit;
88 spnCostDBChar: TSpinEdit;
89 spnCostWait: TSpinEdit;
90 spnCostSurface: TSpinEdit;
91 spnCostChar: TSpinEdit;
92 spnCostQuickChar: TSpinEdit;
94 lblCostSurface: TLabel;
96 lblCostDBChar: TLabel;
97 lblCostWhiteSpace: TLabel;
98 lblCostDBWhiteSpace: TLabel;
99 lblCostQuickChar: TLabel;
100 btnSavePlayTimeProfile: TButton;
101 procedure FormClose(Sender: TObject; var Action: TCloseAction);
102 procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
103 procedure ctvBottleNodeChecked(Sender: TObject;
104 Node: TCPCConfigItemNode);
105 procedure ctvBottleNodeChecking(Sender: TObject;
106 Node: TCPCConfigItemNode; var Allow: Boolean);
107 procedure tstRuleShow(Sender: TObject);
108 procedure btnUseCurrentJoinChannelsClick(Sender: TObject);
109 procedure btnVisibleGhostsClick(Sender: TObject);
110 procedure lvwPluginListDblClick(Sender: TObject);
111 procedure edtLUIDEnter(Sender: TObject);
112 procedure edtLUIDExit(Sender: TObject);
113 procedure btnCopyLUIDClick(Sender: TObject);
114 procedure FormCreate(Sender: TObject);
115 procedure tvwCategoryChange(Sender: TObject; Node: TTreeNode);
116 procedure tvwCategoryMouseMove(Sender: TObject; Shift: TShiftState; X,
118 procedure cbxPlayTimeProfileChange(Sender: TObject);
119 procedure btnSavePlayTimeProfileClick(Sender: TObject);
120 procedure spnCostWaitChange(Sender: TObject);
124 FSpinUpdateFlag: boolean;
125 procedure LoadPlayTimeProfiles;
126 procedure PlayTimeParamsToControl(Params: TSsPlayTimeParams);
127 procedure ControlToPlayTimeParams(Params: TSsPlayTimeParams);
134 frmSetting: TfrmSetting;
138 ChannelDefaultGhost = '(
\83`
\83\83\83\93\83l
\83\8b\90\84\8f§
\83S
\81[
\83X
\83g)';
140 UnCheckedBottle = 17;
149 procedure TfrmSetting.Execute;
153 PageControl.ActivePage := tstGeneral;
154 memDefaultScript.Text := Pref.DefaultScript;
155 cbxShowRuler.Checked := Pref.ShowRuler;
156 cbxIgnoreTimeCritical.Checked := Pref.IgnoreTimeCritical;
157 cbxNoSendGhostList.Checked := Pref.NoSendGhostList;
158 edtPartialConfirmFormat.Text := Pref.PartialConfirmFormat;
159 cbxAutoPartialConfirm.Checked := Pref.AutoPartialConfirm;
160 cbxConfirmOnExit.Checked := Pref.ConfirmOnExit;
161 cbxConfirmOnTabClose.Checked := Pref.ConfirmOnTabClose;
162 cbxAutoClip.Checked := Pref.AutoClip;
164 with frmColorSetting do begin
165 Color['H'] := Pref.TalkColorH;
166 Color['U'] := Pref.TalkColorU;
167 Color['Synchro'] := Pref.TalkColorS;
168 Color['Tag'] := Pref.MarkUpColor;
169 Color['Meta'] := Pref.MetaWordColor;
170 Color['Error'] := Pref.MarkErrorColor;
171 Color['Background'] := Pref.BgColor;
174 cbxPlayTimeProfile.Items.Clear;
175 cbxPlayTimeProfile.Items.Add(Pref.PlayTimeParams.ProfileName);
176 cbxPlayTimeProfile.ItemIndex := 0;
177 LoadPlayTimeProfiles;
178 PlayTimeParamsToControl(Pref.PlayTimeParams);
180 cbxAutoStart.Checked := Pref.AutoStart;
181 rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
182 spnGhostDropDownCount.Value := Pref.GhostDropDownCount;
184 with ctvBottle do begin
185 (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked := Pref.NoTranslate;
186 (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked := Pref.NoDescript;
187 if Pref.NoTransUrl then
188 (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Check
190 (GetNodeFromKeyPath('Arrive\UrlTag\WithSelection') as TCPCRadioNode).Check;
191 (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked := Pref.SilentWhenHidden;
192 (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked := Pref.FixMessySurface;
193 (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked := Pref.HUTagTo01Tag;
194 (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked := Pref.ResetIfGhostAfterSend;
195 (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked := Pref.ClearAfterSend;
196 (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked := Pref.NeedConfirmBeforeSend;
197 (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked := not Pref.NoConfirm;
198 (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked := Pref.WarnScopeChangeInSynchronize;
199 (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked := Pref.WarnYenTNotExist;
202 on E: Exception do ShowMessage(E.Message);
204 //cbxIgnoreFrequentYenS.Checked := Pref.IgnoreFrequentYenS;
205 spnWaitScriptEnd.Value := Pref.WaitScriptEnd;
207 rgpWhenReturn.ItemIndex := Ord(Pref.WhenReturn);
208 rgpWhenShiftReturn.ItemIndex := Ord(Pref.WhenShiftReturn);
209 rgpWhenCtrlReturn.ItemIndex := Ord(Pref.WhenCtrlReturn);
211 cbxUseHttpProxy.Checked := Pref.UseHttpProxy;
212 edtProxyAddress.Text := Pref.ProxyAddress;
213 edtProxyPort.Text := IntToStr(Pref.ProxyPort);
215 spnReconnectWait.Value := Pref.ReconnectWait;
217 edtLUID.Text := Pref.LUID;
219 memFMOName.Lines := Pref.FMOName;
220 cbxHideGhosts.Checked := Pref.HideGhosts;
221 memAutoJoinChannels.Lines := Pref.AutoJoinChannels;
222 cbxNoExtraSSTPHeaders.Checked := Pref.NoExtraSSTPHeaders;
224 with ctvSurfacePreview do
226 (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnHint;
227 (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked := Pref.SurfacePreviewOnScriptPoint;
228 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
229 (Node.Item[Ord(Pref.SurfacePreviewOnScriptPointPosition)] as TCPCRadioNode).Check;
231 for i := 0 to Spps.Count-1 do
233 with lvwPluginList.Items.Add do
235 Caption := ExtractFileName(Spps.SppItem[i].ModuleName);
236 SubItems.Add(Spps.SppItem[i].PluginName);
243 procedure TfrmSetting.FormClose(Sender: TObject; var Action: TCloseAction);
247 Pref.DefaultScript := memDefaultScript.Text;
248 Pref.ShowRuler := cbxShowRuler.Checked;
249 Pref.IgnoreTimeCritical := cbxIgnoreTimeCritical.Checked;
250 Pref.NoSendGhostList := cbxNoSendGhostList.Checked;
251 Pref.PartialConfirmFormat := edtPartialConfirmFormat.Text;
252 Pref.AutoPartialConfirm := cbxAutoPartialConfirm.Checked;
253 Pref.ConfirmOnExit := cbxConfirmOnExit.Checked;
254 Pref.ConfirmOnTabClose := cbxConfirmOnTabClose.Checked;
255 Pref.AutoClip := cbxAutoClip.Checked;
257 with frmColorSetting do begin
258 Pref.TalkColorH := Color['H'];
259 Pref.TalkColorU := Color['U'];
260 Pref.TalkColorS := Color['Synchro'];
261 Pref.MarkUpColor := Color['Tag'];
262 Pref.MetaWordColor := Color['Meta'];
263 Pref.MarkErrorColor := Color['Error'];
264 Pref.BgColor := Color['Background'];
267 Pref.PlayTimeParams.ProfileName := cbxPlayTimeProfile.Text;
268 ControlToPlayTimeParams(Pref.PlayTimeParams);
270 Pref.AutoStart := cbxAutoStart.Checked;
271 Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
272 Pref.GhostDropDownCount := spnGhostDropDownCount.Value;
274 with ctvBottle do begin
275 Pref.NoTranslate := (GetNodeFromKeyPath('Arrive\NoTranslate') as TCPCCheckBoxNode).Checked;
276 Pref.NoDescript := (GetNodeFromKeyPath('Arrive\NoDescript') as TCPCCheckBoxNode).Checked;
277 Pref.NoTransUrl := (GetNodeFromKeyPath('Arrive\UrlTag\NoSelection') as TCPCRadioNode).Checked;
278 Pref.SilentWhenHidden := (GetNodeFromKeyPath('Arrive\SilentWhenHidden') as TCPCCheckBoxNode).Checked;
279 Pref.FixMessySurface := (GetNodeFromKeyPath('Arrive\FixMessySurface') as TCPCCheckBoxNode).Checked;
280 Pref.HUTagTo01Tag := (GetNodeFromKeyPath('Arrive\HUTagTo01Tag') as TCPCCheckBoxNode).Checked;
281 Pref.ResetIfGhostAfterSend := (GetNodeFromKeyPath('Out\ResetIfGhostAfterSend') as TCPCCheckBoxNode).Checked;
282 Pref.ClearAfterSend := (GetNodeFromKeyPath('Out\ClearAfterSend') as TCPCCheckBoxNode).Checked;
283 Pref.NeedConfirmBeforeSend := (GetNodeFromKeyPath('Out\NeedConfirmBeforeSend') as TCPCCheckBoxNode).Checked;
284 Pref.NoConfirm := not (GetNodeFromKeyPath('Out\Confirm') as TCPCCheckBoxNode).Checked;
285 Pref.WarnYenTNotExist := (GetNodeFromKeyPath('Out\Warn\YenTNotExist') as TCPCCheckBoxNode).Checked;
286 Pref.WarnScopeChangeInSynchronize := (GetNodeFromKeyPath('Out\Warn\ScopeChangeInSynchronize') as TCPCCheckBoxNode).Checked;
289 on E: Exception do ShowMessage(E.Message);
291 //Pref.IgnoreFrequentYenS := cbxIgnoreFrequentYenS.Checked;
292 Pref.WaitScriptEnd := spnWaitScriptEnd.Value;
294 Pref.WhenReturn := TReturnKeyFunction(rgpWhenReturn.ItemIndex);
295 Pref.WhenShiftReturn := TReturnKeyFunction(rgpWhenShiftReturn.ItemIndex);
296 Pref.WhenCtrlReturn := TReturnKeyFunction(rgpWhenCtrlReturn.ItemIndex);
298 Pref.UseHttpProxy := cbxUseHttpProxy.Checked;
299 Pref.ProxyAddress := edtProxyAddress.Text;
300 Pref.ProxyPort := StrToInt(edtProxyPort.Text);
302 Pref.ReconnectWait := spnReconnectWait.Value;
304 Pref.LUID := edtLUID.Text;
306 Pref.FMOName := memFMOName.Lines;
307 SakuraSeeker.FileMappingTarget := Pref.FMOName;
308 Pref.HideGhosts := cbxHideGhosts.Checked;
309 Pref.NoExtraSSTPHeaders := cbxNoExtraSSTPHeaders.Checked;
311 Pref.AutoJoinChannels := memAutoJoinChannels.Lines;
313 with ctvSurfacePreview do
315 Pref.SurfacePreviewOnHint := (GetNodeFromKeyPath('OnHint\DoPreview') as TCPCCheckBoxNode).Checked;
316 Pref.SurfacePreviewOnScriptPoint := (GetNodeFromKeyPath('OnScriptPoint\DoPreview') as TCPCCheckBoxNode).Checked;
317 Node := GetNodeFromKeyPath('OnScriptPoint\Position') as TCPCGroupNode;
318 for i := 0 to Node.Count-1 do
319 if (Node.Item[i] as TCPCRadioNode).Checked then
320 Pref.SurfacePreviewOnScriptPointPosition := TSurfacePreviewOnScriptPointPosition(i);
324 procedure TfrmSetting.edtProxyPortKeyPress(Sender: TObject; var Key: Char);
326 if not(Key in ['0'..'9']) then Key := Char(0);
329 procedure TfrmSetting.ctvBottleNodeChecked(Sender: TObject;
330 Node: TCPCConfigItemNode);
332 //ShowMessage(ctvBottle.GetFullKeyPath(Node));
335 procedure TfrmSetting.ctvBottleNodeChecking(Sender: TObject;
336 Node: TCPCConfigItemNode; var Allow: Boolean);
338 if Node.KeyName = 'IgnoreBottle' then begin
339 MessageDlg('
\82±
\82Ì
\8b@
\94\
\82Í
\8eÀ
\91\95\82³
\82ê
\82Ä
\82¢
\82Ü
\82¹
\82ñ', mtError, [mbOk], 0);
344 procedure TfrmSetting.tstRuleShow(Sender: TObject);
346 frmRuleList.UpdateDisplay;
349 procedure TfrmSetting.btnUseCurrentJoinChannelsClick(Sender: TObject);
351 memAutoJoinChannels.Lines := JoinChannels;
354 procedure TfrmSetting.btnVisibleGhostsClick(Sender: TObject);
356 FullGhosts: TStringList;
358 FullGhosts := TStringList.Create;
359 SakuraSeeker.BeginDetect;
361 for i := 0 to SakuraSeeker.Count-1 do
362 FullGhosts.Add(SakuraSeeker[i].Name);
363 StrListEdit(Pref.VisibleGhostsList, '
\83S
\81[
\83X
\83g
\82ð
\8ew
\92è', true, FullGhosts);
369 procedure TfrmSetting.lvwPluginListDblClick(Sender: TObject);
372 if lvwPluginList.Selected = nil then
374 Index := lvwPluginList.Selected.Index;
375 if pfConfigure in Spps.SppItem[Index].PluginFunctions then
376 Spps.SppItem[Index].Configure
378 ShowMessage('
\92Ç
\89Á
\82Ì
\90Ý
\92è
\8d\80\96Ú
\82Í
\82 \82è
\82Ü
\82¹
\82ñ
\81B');
381 procedure TfrmSetting.edtLUIDEnter(Sender: TObject);
383 FOldLUID := edtLUID.Text;
386 procedure TfrmSetting.edtLUIDExit(Sender: TObject);
391 TmpLUID := edtLUID.Text;
394 if Length(TmpLUID) <> 82 then
397 while i <= Length(TmpLUID) do
399 if not (TmpLUID[i] in ['0'..'9', 'a'..'z', 'A'..'Z', '.', ',']) then
408 ShowMessage('LUID
\82Ì
\93à
\97e
\82ª
\95s
\90³
\82Å
\82·');
409 edtLUID.Text := FOldLUID;
413 procedure TfrmSetting.btnCopyLUIDClick(Sender: TObject);
415 Clipboard.SetTextBuf(PChar(edtLUID.Text));
418 procedure TfrmSetting.FormCreate(Sender: TObject);
424 for i := 0 to PageControl.PageCount-1 do
426 Cap := PageControl.Pages[i].Caption;
427 if Pos(':', Cap) > 0 then
428 Cap := Copy(Cap, 1, Pos(':', Cap)-1);
429 Node := tvwCategory.Items.Add(nil, Cap);
430 Node.ImageIndex := -1;
431 Node.SelectedIndex := SettingIcon;
433 tvwCategoryChange(Self, tvwCategory.Items[0]);
434 tvwCategory.Items[0].Selected := true;
437 procedure TfrmSetting.tvwCategoryChange(Sender: TObject; Node: TTreeNode);
439 PageControl.ActivePageIndex := Node.Index;
440 pnlHeading.Caption := PageControl.ActivePage.Caption;
443 procedure TfrmSetting.tvwCategoryMouseMove(Sender: TObject;
444 Shift: TShiftState; X, Y: Integer);
450 Node := tvwCategory.GetNodeAt(X, Y);
453 NewHint := PageControl.Pages[Node.Index].Caption;
454 if tvwCategory.Hint <> NewHint then
456 tvwCategory.Hint := NewHint;
458 Application.ActivateHint(CPos);
462 tvwCategory.Hint := '';
463 Application.HideHint;
467 procedure TfrmSetting.PlayTimeParamsToControl(Params: TSsPlayTimeParams);
469 FSpinUpdateFlag := true;
472 spnCostWait.Value := CostWait;
473 spnCostSurface.Value := CostSurface;
474 spnCostChar.Value := CostChar;
475 spnCostDBChar.Value := CostDBChar;
476 spnCostWhiteSpace.Value := CostWhiteSpace;
477 spnCostDBWhiteSpace.Value := CostDBWhiteSpace;
478 spnCostQuickChar.Value := CostQuickChar;
480 FSpinUpdateFlag := false;
483 procedure TfrmSetting.ControlToPlayTimeParams(Params: TSsPlayTimeParams);
487 CostWait := spnCostWait.Value;
488 CostSurface := spnCostSurface.Value;
489 CostChar := spnCostChar.Value;
490 CostDBChar := spnCostDBChar.Value;
491 CostWhiteSpace := spnCostWhiteSpace.Value;
492 CostDBWhiteSpace := spnCostDBWhiteSpace.Value;
493 CostQuickChar := spnCostQuickChar.Value;
498 procedure TfrmSetting.LoadPlayTimeProfiles;
503 Path := ExtractFilePath(Application.ExeName);
504 i := FindFirst(Path + 'playtime\*.txt', 0, F);
507 Item := ChangeFileExt(F.Name, '');
508 if cbxPlayTimeProfile.Items.IndexOf(Item) < 0 then
509 cbxPlayTimeProfile.Items.Add(ChangeFileExt(F.Name, ''));
516 procedure TfrmSetting.cbxPlayTimeProfileChange(Sender: TObject);
518 Params: TSsPlayTimeParams;
520 Path, ProName: String;
523 Strs := TStringList.Create;
524 ProName := cbxPlayTimeProfile.Text;
526 Path := ExtractFilePath(Application.ExeName) + 'playtime\';
527 Strs.LoadFromFile(Path + ProName + '.txt');
528 Params := StringToComponent(Strs.Text) as TSsPlayTimeParams;
530 PlayTimeParamsToControl(Params);
537 with cbxPlayTimeProfile do
540 LoadPlayTimeProfiles;
541 ItemIndex := Items.IndexOf(ProName);
548 procedure TfrmSetting.btnSavePlayTimeProfileClick(Sender: TObject);
550 ProfileName, Path, FileName: String;
552 TmpParams: TSsPlayTimeParams;
554 ProfileName := cbxPlayTimeProfile.Text;
555 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
558 Path := ExtractFilePath(Application.ExeName) + 'playtime\';
559 FileName := Path + ProfileName + '.txt';
560 if FileExists(FileName) then
561 if MessageDlg(Format('
\83v
\83\8d\83t
\83@
\83C
\83\8b"%s"
\82ð
\8fã
\8f\91\82«
\82µ
\82Ü
\82·', [ProfileName]),
562 mtConfirmation, mbOkCancel, 0) = mrCancel then
564 Strs := TStringList.Create;
566 TmpParams := TSsPlayTimeParams.Create(nil);
568 ControlToPlayTimeParams(TmpParams);
569 TmpParams.ProfileName := ProfileName;
570 Strs.Text := ComponentToString(TmpParams);
571 Strs.SaveToFile(FileName);
578 with cbxPlayTimeProfile do
581 Items.Add(ProfileName);
583 LoadPlayTimeProfiles;
587 ShowMessage('
\95Û
\91¶
\82É
\8e¸
\94s
\82µ
\82Ü
\82µ
\82½
\81B' + E.Message);
592 procedure TfrmSetting.spnCostWaitChange(Sender: TObject);
596 Modified = '(
\95Ï
\8dX
\8dÏ
\82Ý)';
598 if FSpinUpdateFlag then
600 if RightBStr(cbxPlayTimeProfile.Text, Length(Modified)) <> Modified then
602 ProName := Format('%s%s', [cbxPlayTimeProfile.Text, Modified]);
603 with cbxPlayTimeProfile do
608 LoadPlayTimeProfiles;