我的Delphi 7表格中有一个TComboBox,里面有一些项目。
在OnChange
事件中,我会根据选择的项目进行一些处理,但在此处理过程中,我可能希望恢复到之前选择的项目。
以编程方式,我想要像
这样的东西ComboBox.ItemIndex := oldItemIndex;
问题是我不知道如何获得oldItemIndex
。
我尝试在OnCloseUp
事件中定义一个(全局)变量,但ItemIndex已经有了新选择的ItemIndex。
我还尝试在oldItemIndex
事件中保存OnEnter
。虽然这可以在第一次控制聚焦时保存oldItemIndex
,但如果焦点保留在其中则不起作用,因此只在项目第一次更改时才有效。
在OnChange事件处理程序内部获取ComboBox中最后一个选定项目的最简单方法是什么?
答案 0 :(得分:6)
这样做的一种方法是:
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事件之外的变量的情况下执行此操作:
procedure TForm1.ComboBox1Change(Sender: TObject);
const
PRIOR_INDEX : integer = 0;
begin
showmessage(ComboBox1.Items[PRIOR_INDEX]);
PRIOR_INDEX := ComboBox1.ItemIndex;
end;
为此,您需要打开项目选项/编译器并检查"可分配的类型常量"