unit custom_setting; //{$DEFINE _DEBUG} interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Spin, ComCtrls, ActnList, CheckLst; type TForm_Setting = class(TForm) ActionList1: TActionList; Action_File_Close: TAction; Action_Setting_Reset: TAction; Panel_Category: TPanel; TreeView_Category: TTreeView; Splitter1: TSplitter; Panel_Setting_Zoom: TPanel; GroupBox_Zoom: TGroupBox; Label_Zoom: TLabel; Panel_Setting_Grid: TPanel; CheckBox_Grid_Disp: TCheckBox; GroupBox_Grid: TGroupBox; RadioButton_Grid_Gray: TRadioButton; RadioButton_Grid_Black: TRadioButton; RadioButton_Grid_White: TRadioButton; RadioButton_Grid_Invert: TRadioButton; RadioButton_Grid_Transparent: TRadioButton; GroupBox_SubGrid: TGroupBox; RadioButton_Grid_SubNone: TRadioButton; RadioButton_Grid_SubBlue: TRadioButton; RadioButton_Grid_SubRed: TRadioButton; CheckBox_Grid_UseSubElseColor: TCheckBox; Button_Grid_SelSubElseColor: TButton; Panel_Setting_Capture: TPanel; GroupBox_Pause: TGroupBox; CheckBox_Capture_Pause: TCheckBox; Button_Capture_Update: TButton; GroupBox_CaptureOption: TGroupBox; CheckBox_Capture_NoSelfCapture: TCheckBox; CheckBox_Capture_SmoothCapture: TCheckBox; GroupBox_CaptureMode: TGroupBox; CheckBox_Capture_Lupe: TCheckBox; CheckBox_Capture_Fixed: TCheckBox; SpinEdit_Capture_FixedX: TSpinEdit; SpinEdit_Capture_FixedY: TSpinEdit; Label_Capture_FixedY: TLabel; Label_Capture_FixedX: TLabel; Panel_Cmd: TPanel; Button_Close: TButton; Button_Reset: TButton; TrackBar_Zoom: TTrackBar; Panel_Setting_APITest: TPanel; GroupBox_APITest: TGroupBox; CheckListBox_APITest: TCheckListBox; Label_APITestHelp: TLabel; RadioButton_Grid_SelColor: TRadioButton; RadioButton_Grid_SelSubColor: TRadioButton; Panel_Setting_Info: TPanel; Panel_Info: TPanel; GroupBox_Info: TGroupBox; Label_Info: TLabel; CheckListBox_Info: TCheckListBox; Panel_Length: TPanel; GroupBox_Length: TGroupBox; Label_Pos_UserY: TLabel; Label_Pos_UserX: TLabel; SpinEdit_Pos_LengthOriginY: TSpinEdit; SpinEdit_Pos_LengthOriginX: TSpinEdit; Panel_Setting_Opt: TPanel; GroupBox_Opt: TGroupBox; CheckListBox_Opt: TCheckListBox; Panel_Setting_InfoOpt: TPanel; GroupBox_InfoOpt: TGroupBox; Button1: TButton; procedure Action_File_CloseExecute (Sender: TObject); procedure Action_Setting_ResetExecute(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure FormMouseWheelUp (Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure TreeView_CategoryChange(Sender: TObject; Node: TTreeNode); procedure Panel_Setting_ZoomClick(Sender: TObject); procedure TrackBar_ZoomChange(Sender: TObject); procedure SpinEdit_Pos_LengthOriginXChange(Sender: TObject); procedure SpinEdit_Capture_FixedXChange(Sender: TObject); procedure CheckListBox_APITestClickCheck(Sender: TObject); procedure CheckListBox_InfoClickCheck(Sender: TObject); private { Private 宣言 } procedure FSetHighDPIControlHeight; procedure FSetTrackBar_ZoomPos(iPos: Integer); procedure FSetSpinEdit_Pos_UserValue(ptPos: TPoint); procedure FSetSpinEdit_Capture_FixedEnabled(bFlag: Boolean); procedure FSetSpinEdit_Capture_FixedValue(ptPos: TPoint); procedure WMDisplayChange(var Msg: TMessage); message WM_DISPLAYCHANGE; public { Public 宣言 } procedure SetPage(sTitle: String); // Zoom property ZoomIndex: Integer write FSetTrackBar_ZoomPos; // Info property SpinEdit_Pos_UserValue: TPoint write FSetSpinEdit_Pos_UserValue; // Capture property SpinEdit_Capture_FixedEnabled: Boolean write FSetSpinEdit_Capture_FixedEnabled; property SpinEdit_Capture_FixedValue: TPoint write FSetSpinEdit_Capture_FixedValue; end; procedure G_pcCreateSettingForm; var Form_Setting: TForm_Setting; G_SettingForm: TForm_Setting; G_SettingCaptureForm: TForm_Setting; implementation uses {$IFDEF _DEBUG} myDebug, {$ENDIF} Menus, main, lang, general, common, highDPIUnit, my_monitor, my_settingfile, custom_base, sub_api; {$R *.dfm} procedure G_pcCreateSettingForm; procedure _CreateForm; begin Form_Setting := TForm_Setting.Create(G_MainForm); end; var i: Integer; begin if (Form_Setting = nil) then begin _CreateForm; end else begin for i := 0 to Screen.FormCount -1 do begin if (Screen.Forms[i] = Form_Setting) then begin Exit; end; end; _CreateForm; end; end; procedure TForm_Setting.FSetHighDPIControlHeight; const l_ciEDIT_HEIGHT = 21; begin gpcItemHeightSet(CheckListBox_Info); gpcItemHeightSet(CheckListBox_APITest); TreeView_Category.Height := Panel_Category.Height - (G_ciCONTROL_MARGIN * 2); G_ControlWidthSet(TreeView_Category); // CheckListBox_Info.Height := TreeView_Category.Height; // G_ControlWidthSet(CheckListBox_Info); //ここで高さだけを調整すると幅が親ウィンドウ(AlignがalClinet)の幅に追随しない。 G_ControlTopSet(TreeView_Category); // G_ControlTopSet(CheckListBox_Info); GroupBox_Length.ClientHeight := SpinEdit_Pos_LengthOriginX.Height + SpinEdit_Pos_LengthOriginX.Top + 15; //下部のコマンドボタンの調整。 gpcButtonHeightSet(Button_Reset); gpcButtonHeightSet(Button_Close); G_PanelCmdHieghtSet(Panel_Cmd); G_ControlLeftSet(Button_Reset); G_CloseButtonLeftSet(Button_Close); G_ControlTopSet(Button_Reset); // G_ControlTopSet(Button_Close); Button_Close.Top := Button_Reset.Top; end; const F_ciINDEX_ZOOM = 0; F_ciINDEX_GRID = 1; F_ciINDEX_INFO = 2; F_ciINDEX_CAPTURE = 3; F_ciINDEX_OPTION = 4; F_ciINDEX_APITEST = 5; F_ciINDEX_INFO_COLOR = 0; F_ciINDEX_INFO_CURSORPOS = 1; F_ciINDEX_INFO_WINDOWINFO = 2; procedure TForm_Setting.FormCreate(Sender: TObject); procedure _SetPanel(APanel: TPanel); begin APanel.ParentColor := True; APanel.Align := alClient; end; begin G_SettingForm := Self; G_SettingCaptureForm := Self; G_TrimCaption(Self); // Zoom ---------------------------------------------------------------------- _SetPanel(Panel_Setting_Zoom); TrackBar_Zoom.Min := 0; TrackBar_Zoom.Max := G_MainForm.MenuItem_Zoom.Count -1; TrackBar_Zoom.Position := G_MainForm.ZoomIndex; TrackBar_ZoomChange(nil); // Grid ---------------------------------------------------------------------- _SetPanel(Panel_Setting_Grid); // Info ---------------------------------------------------------------------- _SetPanel(Panel_Setting_Info); _SetPanel(Panel_Info); // _SetPanel(Panel_Length); Align をTrueにしてしまうのでNG Panel_Length.ParentColor := True; _SetPanel(Panel_Setting_InfoOpt); //長さの原点のエディットを右寄せ FSetSpinEdit_Pos_UserValue(G_MainForm.LengthPos); // Capture ------------------------------------------------------------------- _SetPanel(Panel_Setting_Capture); FSetSpinEdit_Capture_FixedEnabled(G_MainForm.Action_Capture_Fixed.Checked or G_MainForm.Action_Capture_Pause.Checked); // Option -------------------------------------------------------------------- _SetPanel(Panel_Setting_Opt); G_pcCreateCustomBaseForm; Self.ManualDock(G_CustomForm.TabSheet_Option); Self.Align := alClient; Self.Icon := Application.Icon; Self.Visible := True; // API Test ------------------------------------------------------------------ _SetPanel(Panel_Setting_APITest); //高DPI対応 FSetHighDPIControlHeight; Tag := 1; //この位置でないと右寄せにならない //長さの原点のエディットを右寄せ SetWindowLong(SpinEdit_Pos_LengthOriginX.Handle, GWL_EXSTYLE, GetWindowLong(SpinEdit_Pos_LengthOriginX.Handle, GWL_EXSTYLE) or WS_EX_RIGHT); SetWindowLong(SpinEdit_Pos_LengthOriginY.Handle, GWL_EXSTYLE, GetWindowLong(SpinEdit_Pos_LengthOriginY.Handle, GWL_EXSTYLE) or WS_EX_RIGHT); //キャプチャポイントエディットを右寄せ SetWindowLong(SpinEdit_Capture_FixedX.Handle, GWL_EXSTYLE, GetWindowLong(SpinEdit_Capture_FixedX.Handle, GWL_EXSTYLE) or WS_EX_RIGHT); SetWindowLong(SpinEdit_Capture_FixedY.Handle, GWL_EXSTYLE, GetWindowLong(SpinEdit_Capture_FixedY.Handle, GWL_EXSTYLE) or WS_EX_RIGHT); TreeView_Category.FullCollapse; // TreeView_Category.Select(TreeView_Category. Items[F_ciINDEX_OPTION]); TreeView_Category.Select(TreeView_Category. Items[7]); end; procedure TForm_Setting.FormDestroy(Sender: TObject); begin Tag := 0; end; procedure TForm_Setting.SetPage(sTitle: String); var i: Integer; l_Node: TTreeNode; begin for i := 0 to TreeView_Category.Items.Count -1 do begin l_Node := TreeView_Category.Items[i]; if (l_Node.Text = sTitle) then begin TreeView_Category.Select(l_Node); Break; end; //myDebug.gpcDebug(l_Node.Text); end; end; procedure TForm_Setting.TreeView_CategoryChange(Sender: TObject; Node: TTreeNode); function _IsItemExist(const sItem: String; AList: TStrings): Boolean; var i: Integer; begin Result := False; for i := 0 to AList.Count -1 do begin if (sItem = AList[i]) then begin Result := True; Exit; end; end; end; procedure __SetInfoItems(ACheckListBox: TCheckListBox; AAction: TAction); var i: Integer; li_Index : Integer; l_ActionList : TActionList; l_Action : TAction; begin if (AAction <> nil) then begin l_ActionList := App_BugsEye.ActionList_Main; for i := 0 to l_ActionList.ActionCount -1 do begin l_Action := TAction(l_ActionList.Actions[i]); if (l_Action.Category = AAction.Category) and (l_Action.AutoCheck) then begin li_Index := ACheckListBox.Items.AddObject(StripHotKey(l_Action.Caption), l_Action); ACheckListBox.Checked[li_Index] := l_Action.Checked; end; end; end; end; procedure _SetInfoItems(ACheckListBox: TCheckListBox; AAction: TAction); overload; begin ACheckListBox.Clear; __SetInfoItems(ACheckListBox, AAction); // Panel_Setting_Info.BringToFront; end; procedure _SetInfoItems(ACheckListBox: TCheckListBox; AActions: array of TAction); overload; var i : Integer; begin CheckListBox_Info.Clear; for i := 0 to High(AActions) do begin __SetInfoItems(ACheckListBox, AActions[i]); end; // Panel_Setting_Info.BringToFront; end; var i: Integer; begin if (Tag = 0) then begin //Exit; end; Panel_Length.Hide; if (Node.Parent.Index = -1) then begin //幹のノード(親ノード) case Node.Index of F_ciINDEX_ZOOM : Panel_Setting_Zoom.BringToFront; F_ciINDEX_GRID : Panel_Setting_Grid.BringToFront; F_ciINDEX_INFO : Panel_Setting_InfoOpt.BringToFront; F_ciINDEX_CAPTURE : Panel_Setting_Capture.BringToFront; F_ciINDEX_OPTION :begin _SetInfoItems(CheckListBox_Opt, App_BugsEye.Action_Opt_StayOnTop); Panel_Setting_Opt.BringToFront; end; F_ciINDEX_APITEST :begin if not(gfnbFormExists(App_BugsEyeAPITest)) then begin App_BugsEyeAPITest := TApp_BugsEyeAPITest.Create(Self); end; CheckListBox_APITest.Items.Assign(App_BugsEyeAPITest.TestItems); for i := 0 to CheckListBox_APITest.Items.Count -1 do begin CheckListBox_APITest.Checked[i] := not(_IsItemExist(Self.CheckListBox_APITest.Items[i], G_APITestDiffList)); end; Panel_Setting_APITest.BringToFront; end; end; end else begin //枝のノード(子ノード) //※孫ノードはない if (Node.Parent.Index = F_ciINDEX_INFO) then begin case Node.Index of F_ciINDEX_INFO_COLOR : _SetInfoItems(CheckListBox_Info, App_BugsEye.Action_Color_RGB); F_ciINDEX_INFO_CURSORPOS :begin Panel_Length.Show; _SetInfoItems(CheckListBox_Info, App_BugsEye.Action_Pos_Screen); end; F_ciINDEX_INFO_WINDOWINFO: _SetInfoItems(CheckListBox_Info, App_BugsEye.Action_WinInfo_Handle); end; Panel_Setting_Info.BringToFront; end; end; end; procedure TForm_Setting.CheckListBox_InfoClickCheck(Sender: TObject); var li_Index : Integer; l_Action : TAction; l_CheckListBox : TCheckListBox; begin if not(Sender is TCheckListBox) then begin Exit; end; l_CheckListBox := TCheckListBox(Sender); li_Index := l_CheckListBox.ItemIndex; if (li_Index < 0) then begin //AIU Exit; end; l_Action := TAction(l_CheckListBox.Items.Objects[li_Index]); if (l_Action <> nil) then begin l_Action.Checked := l_CheckListBox.Checked[li_Index]; if (@l_Action.OnExecute <> nil) then begin l_Action.OnExecute(l_Action); end; App_BugsEye.FormResize(nil); App_BugsEye.DrawNow; end; end; procedure TForm_Setting.Action_File_CloseExecute(Sender: TObject); begin G_CustomForm.actFile_CloseExecute(nil); end; procedure TForm_Setting.Action_Setting_ResetExecute(Sender: TObject); begin //設定の初期化 if (gfniMessageBoxYesNo(G_csCustomSetting_ResetMessage, G_csAPPTITLE) = ID_YES) then begin with G_MainForm do begin //ズーム Action_ZoomExecute(MenuItem_Zoom.Items[InitData.iZoomIndex].Action); //グリッド Action_Grid_Disp.Checked := InitData.bGridDisp; Action_Grid_SelColor.Tag := InitData.clGridColor; Action_Grid_SelSubColor.Tag := InitData.clGridSubColor; Action_Grid_SelSubElseColor.Tag := InitData.clGridSubElseColor; Action_Grid_UseSubElseColor.Checked := InitData.bGridUseSubElseColor; TAction(MenuItem_Grid.Items[InitData.iGridIndex].Action).Checked := True; Action_Grid_ColorExecute(MenuItem_Grid.Items[InitData.iGridIndex].Action); TAction(MenuItem_Grid.Items[InitData.iSubGridIndex].Action).Checked := True; Action_Grid_SubColorExecute(MenuItem_Grid.Items[InitData.iSubGridIndex].Action); Action_Grid_UseSubElseColorExecute(nil); //カーソル位置 Action_Pos_Screen.Checked := InitData.bPos_Screen; Action_Pos_Monitor.Checked := InitData.bPos_Monitor; Action_Pos_Client.Checked := InitData.bPos_Client; Action_Pos_Length.Checked := InitData.bPos_Length; // btnPos_UserPosResetClick(nil); FSetSpinEdit_Pos_UserValue(Point(0, 0)); //カラー情報 Action_Color_RGB.Checked := InitData.bColor_RGB; Action_Color_HTML.Checked := InitData.bColor_HTML; Action_Color_COLORREF.Checked := InitData.bColor_COLORREF; Action_Color_HSV.Checked := InitData.bColor_HSV; Action_Color_HLS.Checked := InitData.bColor_HLS; Action_Color_HLSWin.Checked := InitData.bColor_HLSWin; //ウィンドウ情報 Action_WinInfo_Handle.Checked := InitData.bWinInfo_Handle; Action_WinInfo_ClassName.Checked := InitData.bWinInfo_ClassName; Action_WinInfo_Text.Checked := InitData.bWinInfo_Text; Action_WinInfo_WindowSize.Checked := InitData.bWinInfo_WindowSize; Action_WinInfo_ClientSize.Checked := InitData.bWinInfo_ClientSize; Action_WinInfo_Rect.Checked := InitData.bWinInfo_Rect; Action_WinInfo_Style.Checked := InitData.bWinInfo_Style; Action_WinInfo_StyleVerbose.Checked := InitData.bWinInfo_StyleVerbose; Action_WinInfo_ParentWindow.Checked := InitData.bWinInfo_ParentWindow; Action_WinInfo_PID.Checked := InitData.bWinInfo_PID; Action_WinInfo_ExeName.Checked := InitData.bWinInfo_ExeName; Action_WinInfo_FileVersion.Checked := InitData.bWinInfo_FileVersion; //オプション Action_Opt_StayOnTop.Checked := InitData.bOpt_StayOnTop; Action_Opt_StayOnTopExecute(nil); Action_Opt_TitleBar.Checked := InitData.bOpt_TitleBar; Action_Opt_TitleBarExecute(nil); Action_Opt_ToolBar.Checked := InitData.bOpt_ToolBar; Action_Opt_ToolBarExecute(nil); // Action_Opt_BigFont.Checked := InitData.bOpt_BigFont; // Action_Opt_BigFontExecute(nil); //キャプチャ Action_Capture_Pause.Checked := not(InitData.bCapture_Pause); Action_Capture_PauseExecute(nil); //↑でnotとしているのはこの中で反転させているので Action_Capture_Lupe.Checked := InitData.bCapture_Lupe; Action_Capture_LupeExecute(nil); Action_Capture_Fixed.Checked := not(InitData.bCapture_Fixed); Action_Capture_FixedExecute(nil); //↑でnotとしているのはこの中で反転させているので //以下の二つはオプションからキャプチャへ移動した。 Action_Capture_NoSelfCapture.Checked := InitData.bOpt_NoSelfCapture; Action_Capture_NoSelfCaptureExecute(nil); Action_Capture_SmoothCapture.Checked := InitData.bOpt_SmoothCapture; Action_Capture_SmoothCaptureExecute(nil); end; end; end; // Zoom ------------------------------------------------------------------------ procedure TForm_Setting.TrackBar_ZoomChange(Sender: TObject); begin Label_Zoom.Caption := G_MainForm.MenuItem_Zoom.Items[TrackBar_Zoom.Position].Caption; if (TrackBar_Zoom.Tag <> 0) or (G_MainForm.ZoomIndex = TrackBar_Zoom.Position) then begin Exit; end; G_MainForm.ZoomIndex := TrackBar_Zoom.Position; end; procedure TForm_Setting.FSetTrackBar_ZoomPos(iPos: Integer); begin if not(gfnbIsInsideRange(iPos, TrackBar_Zoom.Min, TrackBar_Zoom.Max)) then begin Exit; end; TrackBar_Zoom.Position := iPos; end; procedure TForm_Setting.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if (GetFocus = TrackBar_Zoom.Handle) then begin TrackBar_Zoom.Tag := 1; G_MainForm.FormMouseWheelDown(Sender, Shift, MousePos, Handled); TrackBar_Zoom.Tag := 0; end; end; procedure TForm_Setting.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin if (GetFocus = TrackBar_Zoom.Handle) then begin TrackBar_Zoom.Tag := 1; G_MainForm.FormMouseWheelUp(Sender, Shift, MousePos, Handled); TrackBar_Zoom.Tag := 0; end; end; procedure TForm_Setting.Panel_Setting_ZoomClick(Sender: TObject); begin TrackBar_Zoom.SetFocus; end; // Info ------------------------------------------------------------------------ procedure TForm_Setting.FSetSpinEdit_Pos_UserValue(ptPos: TPoint); begin if (SpinEdit_Pos_LengthOriginX.Value <> ptPos.X) then begin SpinEdit_Pos_LengthOriginX.Value := ptPos.X; end; if (SpinEdit_Pos_LengthOriginY.Value <> ptPos.Y) then begin SpinEdit_Pos_LengthOriginY.Value := ptPos.Y; end; end; procedure TForm_Setting.SpinEdit_Pos_LengthOriginXChange(Sender: TObject); begin if (Tag = 0) or not(Self.Visible) then begin Exit; end; if (Sender = SpinEdit_Pos_LengthOriginX) then begin G_MainForm.LengthPosX := SpinEdit_Pos_LengthOriginX.Value; end else if (Sender = SpinEdit_Pos_LengthOriginY) then begin G_MainForm.LengthPosY := SpinEdit_Pos_LengthOriginY.Value; end; end; // Capture --------------------------------------------------------------------- procedure TForm_Setting.FSetSpinEdit_Capture_FixedEnabled(bFlag: Boolean); begin SpinEdit_Capture_FixedX.Enabled := bFlag; SpinEdit_Capture_FixedY.Enabled := SpinEdit_Capture_FixedX.Enabled; end; procedure TForm_Setting.FSetSpinEdit_Capture_FixedValue(ptPos: TPoint); begin Tag := 0; if (SpinEdit_Capture_FixedX.Value <> ptPos.X) then begin SpinEdit_Capture_FixedX.Value := ptPos.X; end; if (SpinEdit_Capture_FixedY.Value <> ptPos.Y) then begin SpinEdit_Capture_FixedY.Value := ptPos.Y; end; Tag := 1; end; procedure TForm_Setting.WMDisplayChange(var Msg: TMessage); //ディスプレイ設定が変わった begin MyScreenSize.Reflesh; SpinEdit_Capture_FixedX.MinValue := MyScreenSize.DesktopRect.Left; SpinEdit_Capture_FixedX.MaxValue := MyScreenSize.DesktopRect.Right-1; SpinEdit_Capture_FixedY.MinValue := MyScreenSize.DesktopRect.Top; SpinEdit_Capture_FixedY.MaxValue := MyScreenSize.DesktopRect.Bottom-1; end; procedure TForm_Setting.SpinEdit_Capture_FixedXChange(Sender: TObject); begin if (Tag = 0) or not(Self.Visible) then begin Exit; end; if (CheckBox_Capture_Pause.Checked) or (CheckBox_Capture_Fixed.Checked) then begin if (Sender = SpinEdit_Capture_FixedX) then begin G_MainForm.FixedPosX := SpinEdit_Capture_FixedX.Value; end else if (Sender = SpinEdit_Capture_FixedY) then begin G_MainForm.FixedPosY := SpinEdit_Capture_FixedY.Value; end; end; end; procedure TForm_Setting.CheckListBox_APITestClickCheck(Sender: TObject); var i: Integer; ls_Declaration: String; // l_List: TStrings; begin App_BugsEyeAPITest.ComboBox_APIList.Items.BeginUpdate; try ls_Declaration := App_BugsEyeAPITest.ComboBox_APIList.Text; App_BugsEyeAPITest.ComboBox_APIList.Items.Clear; for i := 0 to CheckListBox_APITest.Items.Count -1 do begin if (CheckListBox_APITest.Checked[i]) then begin App_BugsEyeAPITest.ComboBox_APIList.Items.AddObject(CheckListBox_APITest.Items[i], CheckListBox_APITest.Items.Objects[i]); end; end; for i := 0 to App_BugsEyeAPITest.ComboBox_APIList.Items.Count -1 do begin if (ls_Declaration = App_BugsEyeAPITest.ComboBox_APIList.Items[i]) then begin App_BugsEyeAPITest.ComboBox_APIList.ItemIndex := i; end; end; finally App_BugsEyeAPITest.ComboBox_APIList.Items.EndUpdate; end; gpcDifferenceListGet(G_APITestDiffList, App_BugsEyeAPITest.TestItems, App_BugsEyeAPITest.ComboBox_APIList.Items); { l_List := nil; try // l_List := TStringList.Create; gpcDifferenceListGet(l_List, App_BugsEyeAPITest.APITestList, App_BugsEyeAPITest.ComboBox_APIList.Items); myDebug.gpcDebug(l_List); finally l_List.Free; end; } end; end.