Создание компонента во время работы

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

Ответить
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Всем привет, ни разу не делал такую вещь, хотя думаю это не сложно, подскажите, у меня есть на форме компонент Комбобокс1 и кнопка, хочу чтоб по кнопке рядом с первым появился еще один бокс, и со списком данных из первого.
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

ну это и правда легко

Код: Выделить всё

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ComboBoxChange(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i:integer;
  fl:boolean;
begin
  With TComboBox.Create(Self) do
    begin
      OnChange:=ComboBoxChange;
      fl:=True;
      Parent:=Self;
      for i:=0 to Self.ComponentCount-2 do
        If Self.Components[i] is TComboBox then
          begin
            If fl then
              begin
                fl:=False;
                Items.Assign(TComboBox(Self.Components[i]).Items);
              end;
            Top:=TComboBox(Self.Components[i]).Top;
            If Left<TComboBox(Self.Components[i]).Left+TComboBox(Self.Components[i]).Width+10 then Left:=TComboBox(Self.Components[i]).Left+TComboBox(Self.Components[i]).Width+10;
          end;
    end;
end;

procedure TForm1.ComboBoxChange(Sender: TObject);
begin
  Caption:=Caption+TComboBox(Sender).Text+', ';
end;

end.
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Dr_Grizzly
Сообщения: 407
Зарегистрирован: 13 сен 2004, 12:05
Откуда: Курган
Контактная информация:

Большое СПАСИБО! Только еще один вопрос, теперь как обращатся к новым компонентам??? Мне теперь нада в Едит1 запихнуть данные выбранные в боксах через запятую. ;)
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Вариантов много самый удобный и простой создать списочек и в нем хранить имена созданных элементов и уже напрямую по имени обращяться...
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

[quote="Dr_Grizzly"]Большое СПАСИБО! Только еще один вопрос, теперь как обращатся к новым компонентам??? Мне теперь нада в Едит1 запихнуть данные выбранные в боксах через запятую. ]

смотри последние 5 строчек кода =)
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Blood_Magic
Сообщения: 273
Зарегистрирован: 30 июн 2005, 14:53

Duncon писал(а):Вариантов много самый удобный и простой создать списочек и в нем хранить имена созданных элементов и уже напрямую по имени обращяться...
Проще уж создать TList и хранить компоненты а не имена =)
- Чем юзер похож на обезьяну?
- Он жмет на все, что жмется, дергает все, что дергается и крутит все, что крутится.
- Чем юзер отличается от обезьяны?
- У обезьяны хватает ума не воспроизводить ту последовательность, которая приводит к краху системы.
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

Вариантов много...
Ответить