Показать сообщение отдельно
  #3  
Старый 02.10.2009, 19:27
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    ComboBox6: TComboBox;
    ComboBox7: TComboBox;
    ComboBox8: TComboBox;
    ComboBox9: TComboBox;
    ComboBox10: TComboBox;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    procedure ComboBoxesChange(Sender: TObject);
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

const
  COMBOBOXCOUNT = 10; // общее количество ComboBox

implementation

{$R *.dfm}

procedure TForm1.ComboBoxesChange(Sender: TObject);
var
  cbTag: Integer;
  cb: TComponent;
begin
  cbTag := (Sender as TComponent).Tag + 1;
  cb := FindComponent('ComboBox' + IntToStr(cbTag));
  if cb = nil then Exit;
  with (cb as TComboBox) do
    if (Sender as TComboBox).Text = '' then
    begin
      Text := '';
      OnChange(cb);
      Visible := False;
    end
    else Visible := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
  cb: TComponent;
begin
  for i := 1 to COMBOBOXCOUNT do
  begin
    { Все ComboBox имеют имя вида ComboBoxn, где n — номер по порядку }
    cb := FindComponent('ComboBox' + IntToStr(i));
    cb.Tag := i;
    (cb as TComboBox).Visible := False;
    (cb as TComboBox).OnChange := ComboBoxesChange;
  end;
  ComboBox1.Visible := True;
end;

end.
Ответить с цитированием