Delphi 如何在OnChange事件之前获取ComboBox ItemIndex?

Delphi 如何在OnChange事件之前获取ComboBox ItemIndex?,delphi,combobox,delphi-7,Delphi,Combobox,Delphi 7,我有一个Delphi7表单中的TComboBox,里面有一些项目。 在OnChange事件中,我根据选择的项目进行一些处理,但在此处理过程中,我可能希望恢复到以前选择的项目 从编程的角度来说,我想要 ComboBox.ItemIndex := oldItemIndex; 问题是我不知道如何获取oldItemIndex 我尝试在OnCloseUp事件中定义一个全局变量,但ItemIndex已经存在新的选定ItemIndex。 我还尝试在OneNet事件上保存oldItemIndex。虽然这可用于

我有一个Delphi7表单中的TComboBox,里面有一些项目。 在OnChange事件中,我根据选择的项目进行一些处理,但在此处理过程中,我可能希望恢复到以前选择的项目

从编程的角度来说,我想要

ComboBox.ItemIndex := oldItemIndex;
问题是我不知道如何获取oldItemIndex

我尝试在OnCloseUp事件中定义一个全局变量,但ItemIndex已经存在新的选定ItemIndex。 我还尝试在OneNet事件上保存oldItemIndex。虽然这可用于在控件第一次获得焦点时保存oldItemIndex,但如果焦点保持在其中则不起作用,因此仅在项目第一次更改时有效


在OnChange事件处理程序中获取组合框中最后选定项的最简单方法是什么?

一种方法如下:

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FPriorIndex : integer;
  public
  end;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  showmessage(ComboBox1.Items[FPriorIndex]);
  FPriorIndex := ComboBox1.ItemIndex;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.ItemIndex := 0;
  FPriorIndex := ComboBox1.ItemIndex;
end;
如何在OnChange事件之外没有变量的情况下执行此操作:


为此,您需要打开项目选项/编译器并检查可分配的类型化常量,一种方法如下:

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Edit1: TEdit;
    procedure ComboBox1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    FPriorIndex : integer;
  public
  end;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
  showmessage(ComboBox1.Items[FPriorIndex]);
  FPriorIndex := ComboBox1.ItemIndex;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ComboBox1.ItemIndex := 0;
  FPriorIndex := ComboBox1.ItemIndex;
end;
如何在OnChange事件之外没有变量的情况下执行此操作:


为此,您需要打开项目选项/编译器并检查可分配类型常量

我做了类似的操作,但是我想知道是否有一种方法不涉及在OnChange的作用域之外使用变量。@ricardomenzer我编辑了我的答案,以包括一种在OnChange事件之外不使用变量的方法,这就是我所说的。非常好的解决方案。答案被接受。谢谢。我做了类似的事情,但想知道是否有一种方法不涉及在OnChange的作用域之外使用变量。@ricardomenzer我编辑了我的答案,以包括一种在OnChange事件之外不使用变量的方法,这就是我所说的。非常好的解决方案。答案被接受。谢谢