Procedure TForm1.Combobox1Select(Sender:TObject);
begin
Combobox1.Text:='000';
showmessage('ok');
end;建立Form1,加入Combobox1,给Combobox1加入选项
123
456
789而上面的事件过程中的代码,实现combobox选择后,combobox强行赋值为000,但执行一下就会发现,如果是用键盘按1从而选择123,combobox是变成000了,出现ok提示框后,也还是000;
但如果是用鼠标直接选择123,combobox是变成000,但出现ok提示框后,combobox又变回123了。
用上下方向键选择123,也是同样情况。高手指点,如何解决这个问题?是不是控件的BUG???
begin
Combobox1.Text:='000';
showmessage('ok');
end;建立Form1,加入Combobox1,给Combobox1加入选项
123
456
789而上面的事件过程中的代码,实现combobox选择后,combobox强行赋值为000,但执行一下就会发现,如果是用键盘按1从而选择123,combobox是变成000了,出现ok提示框后,也还是000;
但如果是用鼠标直接选择123,combobox是变成000,但出现ok提示框后,combobox又变回123了。
用上下方向键选择123,也是同样情况。高手指点,如何解决这个问题?是不是控件的BUG???
解决方案 »
- TADOQUERY 很怪的问题
- IdTCPServer能否与IdTCPServer通讯
- left join 语句,求简化写法...
- GetDriveType取得的驱动器类型不对,什么问题?
- 怎样用SocketConnection进行连接呢
- ExitWindowsEx在win2000下如何使用
- 有哪位高手有DELPHI7安装包程序,最好支持中文?
- 数据库操作的问题!高手请进!
- winxp下局域网问题
- 在用qrrichtext赋值打印的时候,后面总是要空行,如何去掉这些空行
- 兄弟们,帮帮忙200分求Delphi6.0 sp2 ,我的电脑老是中招,不能使用QUICKREPORT,以前做的报表也打不开了,重装安装WINDOWS2K又好了,不能
- 判断edit内容输入对错
在Combobox选择过程中你非得强行给他赋值'000', 当然在选择操作时只能显示'000'了
------------------
第1种情况:输入1,
combobox显示000
showmessage显示ok
最后combobox显示000------------------
第2种情况:用上下键选择123
combobox显示000
showmessage显示ok
最后combobox显示000------------------
第3种情况:用鼠标选择123
combobox显示000
showmessage显示ok
最后combobox显示123其实我真正想实现的目的是选择过程中增加数据处理过程,为了问题清楚才写出上面的问题。
真正的程序是:
Procedure TForm1.Combobox1Select(Sender:TObject);
begin
Combobox1.Text:=copy(Combobox1.Text,1,1);
end;建立Form1,加入Combobox1,给Combobox1加入选项
1-正常
2-禁止
3-注销Combobox1选项中,数字为实际使用的,汉字部分只是说明,但不能参与具体运算,所以要在选择后处理一下,只留前面实际使用的数字部分。哪位有更好的解决方法???
很少在选的过程中对鼠标经过的数据做处理啊。
1-正常
2-禁止
3-注销例如要选择‘2-禁止’项,鼠标点选后,combobox框中应该显示‘2-禁止’。
但我需要在鼠标点选后,让combobox框中显示‘2’。这下说清楚了吧!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, SUIComboBox;type
TForm1 = class(TForm)
ComboBox1: TComboBox;
procedure FormCreate(Sender: TObject);
procedure ComboBox1Select(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1-正常');
ComboBox1.Items.Add('2-禁止');
ComboBox1.Items.Add('3-注销');
end;procedure TForm1.ComboBox1Select(Sender: TObject);
begin
ComboBox1.Text:=Copy(ComboBox1.Text,1,1);
showmessage('ok');
end;end.
干脆把完整代码贴出来。我的目的就是:
在选择‘1-正常’后,在Combobox框里显示‘1’。
在选择‘2-禁止’后,在Combobox框里显示‘2’。
在选择‘3-注销’后,在Combobox框里显示‘3’。
如何实现?
试试在Combobox框里输入1、2、或3的数字选择,和鼠标点选,有何不同!
正常情况下,在Combobox框里输入数字2,在Combobox框里会显示‘2-禁止’,
但因为有如下处理代码:
Procedure TForm1.Combobox1Select(Sender:TObject);
begin
Combobox1.Text:=copy(Combobox1.Text,1,1);
end;
所以选择后,在Combobox框里会显示‘2’,去掉了‘-禁止’。但用鼠标选择,开始Combobox框里会显示‘2’,然后showmessage显示‘ok’后,Combobox框里最后还是显示‘2-禁止’。
另外更正,鼠标点选和上下键选择结果相同,我上面说错了!
procedure TForm1.ComboBox1Select(Sender: TObject);
var
index:integer;
begin
index := ComboBox1.ItemIndex;
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1');
ComboBox1.Items.Add('2');
ComboBox1.Items.Add('3');
ComboBox1.ItemIndex := index;
end;procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1-正常');
ComboBox1.Items.Add('2-禁止');
ComboBox1.Items.Add('3-注销');
end;
比如combobox框里显示‘2’时,按出下拉选择框,此时combobox框里变成显示‘2-禁止’,
如果不用鼠标选择一个下拉框中的选项,而用鼠标点击其他地方的话,下拉框消失后,combobox框里还是显示‘2-禁止’。所以,根据你的代码更改如下,就是增加了一个CLOSEUP事件代码:procedure TForm1.ComboBox1Select(Sender: TObject);
var
index:integer;
begin
index := ComboBox1.ItemIndex;
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1');
ComboBox1.Items.Add('2');
ComboBox1.Items.Add('3');
ComboBox1.ItemIndex := index;
end;procedure TForm1.ComboBox1DropDown(Sender: TObject);
begin
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1-正常');
ComboBox1.Items.Add('2-禁止');
ComboBox1.Items.Add('3-注销');
end;procedure TForm1.ComboBox1CloseUp(Sender: TObject);
var
index:integer;
begin
index := ComboBox1.ItemIndex;
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1');
ComboBox1.Items.Add('2');
ComboBox1.Items.Add('3');
ComboBox1.ItemIndex := index;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Clear;
ComboBox1.Items.Add('1-正常');
ComboBox1.Items.Add('2-禁止');
ComboBox1.Items.Add('3-注销');
end;procedure TForm1.ComboBox1Select(Sender: TObject);
begin
ComboBox1.Text:=Copy(ComboBox1.Text,1,1);
showmessage('ok');
end;用鼠标点选选项2,结果是‘2-禁止’
输入数字2自动选择选项2,结果是‘2’