combobox多级联动问题

jokelzhung 2013-01-17 04:55:42
如有3个combobox,他们的item是不能相同的。
如果有数据项1、2、3,combobox1选中1,那么combobox2只能选2或3;combobox1选中1,combobox2选中3,那么combobox3只能选2。

应该描述清楚了吧 请高手赐教

...全文
226 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
无语孩童 2013-01-22
  • 打赏
  • 举报
回复
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TfrmMain }

  TfrmMain = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Label1: TLabel;
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

var
  sList: TStringList;

{$R *.lfm}

{ TfrmMain }

procedure TfrmMain.ComboBox1Change(Sender: TObject);
begin
  sList.Text := ComboBox1.Items.Text;
  sList.Delete(ComboBox1.Items.IndexOf(ComboBox1.Text));
  ComboBox2.Items := sList;
  ComboBox3.Items := sList;
end;

procedure TfrmMain.ComboBox2Change(Sender: TObject);
begin
  sList.Text := ComboBox2.Items.Text;
  sList.Delete(ComboBox2.Items.IndexOf(ComboBox2.Text));
  ComboBox3.Items := sList;
end;

procedure TfrmMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  FreeAndNil(sList);
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  sList := TStringList.Create;
end;

end.
-HelloWorld- 2013-01-19
  • 打赏
  • 举报
回复
处理的思路是:当某个ComboBox选中A的时候,在其他的ComboBox的Item中删除A就行了,楼上代码就是个例子
simonhehe 2013-01-17
  • 打赏
  • 举报
回复
procedure TForm5.cbb1Change(Sender: TObject);
begin
  cbb2.Items.Clear;
  cbb2.Text := '';

  cbb3.Items.Clear;
  cbb3.Text := '';

  cbb2.Items.Text := cbb1.Items.Text;
  cbb2.Items.Delete(cbb2.Items.IndexOf(cbb1.Text));
  cbb2.text := '';
end;

procedure TForm5.cbb2Change(Sender: TObject);
begin
  cbb3.Items.Clear;
  cbb3.Text := '';

  cbb3.Items.Text := cbb2.Items.Text;
  cbb3.Items.Delete(cbb3.Items.IndexOf(cbb2.Text));
  cbb3.text := '';
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
  cbb1.text := '';
  cbb2.text := '';
  cbb3.text := '';

  cbb1.Items.Add('aa');
  cbb1.Items.Add('bb');
  cbb1.Items.Add('cc');
  cbb1.Items.Add('dd');
end;

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧