请各位帮帮忙
实现功能:
    下拉选项由CheckBox组成,可以多选,选择后在Edit框自动添加相应的选择.
先谢谢了.

解决方案 »

  1.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        ComboBox1: TComboBox;
        Edit1: TEdit;
        CheckBox1: TCheckBox;
        ScrollBox1: TScrollBox;
        CheckBox2: TCheckBox;
        procedure FormCreate(Sender: TObject);
        procedure ComboBox1Click(Sender: TObject);
        procedure ScrollBox1Exit(Sender: TObject);
        procedure CheckBox1Click(Sender: TObject);
        procedure CheckBox2Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
       CheckBoxText : Array [0..1] of string;
       procedure ComboBoxWnd (Var Message : TMessage);  end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.ComboBoxWnd(var Message: TMessage);
    begin
      Case Message.msg of
         WM_LBUTTONDOWN:
         begin
           // show scroll checkbox
          if not ScrollBox1.Visible then
          begin
            ScrollBox1.Visible := False;
            ScrollBox1.Color := clWhite;
            CheckBox1.Left := 2;
            CheckBox1.Top  := 2;
            Checkbox1.Parent :=ScrollBox1;
            CheckBox2.Left := 2;
            CheckBox2.Top  := Checkbox1.Height + 3;
            Checkbox2.Parent :=ScrollBox1;        ScrollBox1.Top := Combobox1.Top + Combobox1.Height ;
            ScrollBox1.Left := Combobox1.Left;
            ScrollBox1.Width := Combobox1.Width;
            ScrollBox1.Visible := True;
            ScrollBox1.SetFocus;
          end else
          begin
            ScrollBox1.Visible := True;
          end;
          Message.Result := 1;
         end;
      else
        Combobox1.Dispatch(Message);
      end;end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      ScrollBox1.Visible := False;
      combobox1.WindowProc := ComboBoxWnd;
    end;procedure TForm1.ComboBox1Click(Sender: TObject);
    begin
      ScrollBox1.Visible := False;
      ScrollBox1.Color := clWhite;
      CheckBox1.Left := 0;
      CheckBox1.Top  := 0;
      Checkbox1.Parent :=ScrollBox1;
      ScrollBox1.Top := Combobox1.Top + Combobox1.Height ;
      ScrollBox1.Left := Combobox1.Left;
      ScrollBox1.Width := Combobox1.Width;
      ScrollBox1.Visible := True;
    end;procedure TForm1.ScrollBox1Exit(Sender: TObject);
    begin
      ScrollBox1.Visible := False;
    end;procedure TForm1.CheckBox1Click(Sender: TObject);
    begin
      if CheckBox1.Checked then
        CheckBoxText[0] := CheckBox1.Caption
      else
        CheckBoxText[0] := '';
      Edit1.Text := CheckBoxText[0] + ';' + CheckBoxText[1];
    end;procedure TForm1.CheckBox2Click(Sender: TObject);
    begin
      if CheckBox2.Checked then
        CheckBoxText[1] := CheckBox2.Caption
      else
        CheckBoxText[1] := '';
      Edit1.Text := CheckBoxText[0] + ';' + CheckBoxText[1];
    end;end.
      

  2.   

    但我想ComboBox的下拉选项,就是那些CheckBox能按照数据库中的记录动态增加阿
      

  3.   

    只要CheckBox是动态加进去就行了.