首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

菜鸟来问个有关问题!实现不了想要的结果

2012-02-11 
初学者来问个问题!实现不了想要的结果!Delphi(Pascal) codeunit Unit1interfaceusesWindows, Messages, S

初学者来问个问题!实现不了想要的结果!

Delphi(Pascal) code
unit Unit1;interfaceuses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, StdCtrls;type  TForm1 = class(TForm)    ListBox1: TListBox;    ComboBox1: TComboBox;    Button1: TButton;    Button2: TButton;    Button3: TButton;    Label1: TLabel;    Label2: TLabel;    Label3: TLabel;    procedure Button1Click(Sender: TObject);    procedure Button2Click(Sender: TObject);    procedure Button3Click(Sender: TObject);    procedure FormCreate(Sender: TObject);    procedure ListBox1Click(Sender: TObject);    procedure ComboBox1Change(Sender: TObject);  private    { Private declarations }  public    { Public declarations }  end;var  Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);begin     Form2.ShowModal;end;procedure TForm1.Button2Click(Sender: TObject);begin   listBox1.Items.SaveToFile('chinese.txt');   ComboBox1.Items.SaveToFile('english.txt'); end;procedure TForm1.Button3Click(Sender: TObject); //当按下删除时删除所选begin   listBox1.DeleteSelected;   ComboBox1.DeleteSelected;end;procedure TForm1.FormCreate(Sender: TObject);  //从文件导入列表begin   listBox1.Items.LoadFromFile('chinese.txt');   ComboBox1.Items.LoadFromFile('english.txt');end;procedure TForm1.ListBox1Click(Sender: TObject); //对应显示begin  ComboBox1.ItemIndex:=listBox1.ItemIndex;  end;procedure TForm1.ComboBox1Change(Sender: TObject);begin  listBox1.ItemIndex:=ComboBox1.ItemIndex;end;end.

对应的教程:
第一个视频http://tech.163.com/08/1014/10/4O77E4TP000915SU.html
第二个视频http://tech.163.com/08/1014/10/4O77I3P9000915SU.html
上面的编译没有错,但出现当选中左边的右边出现对应的单词,反过来就不行;还有当选中后删除,右边的最后一个删除不了的,这个到底怎么回事啊,哪位高人给个解释,谢谢了!

[解决办法]
1. ComboBox也应该使用Click事件,而不是Change事件(Change事件是由你在ComboBox中输入才触发的)。
2. (这一点我不确定,因为手边没有Delphi。我印象中是这样的,你自己检验一下)当你删除ListBox中的一项后,ListBox会更改ItemIndex,由此又会触发ListBox.OnClick,并因此修改了ComboBox的ItemIndex。当你删除ListBox最后一项时,ListBox.ItemIndex变成-1,因此ComboBox.ItemIndex也跟着变成-1,然后你再去删当前选中项,肯定是删不到了。
3. 你按照第1点修改了代码,而第2点又是象我说得那样,那么你的代码会造成死循环:ComboBox和ListBox的OnClick事件不停地触发新的OnClick事件……小心!!!

热点排行