Доступ к свойствам компонета созданного во время работы прог

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

Ответить
Alchazar
Сообщения: 23
Зарегистрирован: 13 апр 2005, 10:47
Откуда: LT Vilnius
Контактная информация:

Проблема такая: во время выполнения програмы на форме создаются ComboBox , в них я добавляю список из базы данных и делаю Action OnSelect,

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

 Pan:= TPanel.Create(ScrollBox_Prop);
    with Pan do
    begin
      Parent:=F_GoodsV2.ScrollBox_Prop;
      Visible:= true;
      Top:=(i* 41)+1;
      Left:=0;
      Height:=41;
      Width:=365;
      Name:= 'Pan_Prop'+ IntToStr(i);
      Caption:='';
    end;
  
    Lb:= TLabel.Create(Self);
    with Lb do
    begin
      Parent:=Pan;
      Visible:= true;
      Top:=13;
      Left:=19;
      Height:=13;
      Width:=149;
      Name:= 'Lb_Prop'+ IntToStr(i);
      Caption:=sign;
    end;
// на форме создаются ComboBox
    Cmb:= TComboBox.Create(Self);
    with Cmb do
    begin
      Parent:=Pan;
      Visible:= true;
      Top:=9;
      Left:=180;
      Height:=21;
      Width:=153;
      Name:= 'Cmb_Prop'+ IntToStr(i);
      Text:='';
//делаю Action OnSelect
      onSelect:=Cmb_Select;
    end;

DataMod_Molecule.Q_GoodsProp.SQL.Clear;
      DataMod_Molecule.Q_GoodsProp.SQL.Add('SELECT * FROM Good_Properties WHERE GoodProp_GSignID ="'+SignId+'"');
      DataMod_Molecule.Q_GoodsProp.Open;
      DataMod_Molecule.Q_GoodsProp.First;
      while not DataMod_Molecule.Q_GoodsProp.Eof do
      begin
 // в них я добавляю список из базы данных      
        Cmb.Items.Add(DataMod_Molecule.Q_GoodsProp.FieldValues['GoodProp_Name']);
        DataMod_Molecule.Q_GoodsProp.Next;
      end;
Информацию из ComboBox мне нужхо занести в Memo1, как ето зделать?
Я делаю так -

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

procedure TF_GoodsV2.Cmb_Select(Sender: TObject);
var Cmb: TComboBox;
    Lb: TLabel;
    CmbName: string;
    LbName: string;
    SignId: string;
    prop: string;

begin
 
  CmbName:=Cmb.Name;
  Memo1.Lines.Add(CmbName);
 
end;
ничего невыходит :(
во мремя выполнения этой процедуры выкидывает ошибку.

P.S. количество ComboBox заранее неизвестно
Delphi 7
ICQ 338-030-989
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

какая ошибка? Может таблица в режиме Browse а не Edit?
Изображение
Alchazar
Сообщения: 23
Зарегистрирован: 13 апр 2005, 10:47
Откуда: LT Vilnius
Контактная информация:

А какую таблицу ты имеешь в виду?
Delphi 7
ICQ 338-030-989
Alchazar
Сообщения: 23
Зарегистрирован: 13 апр 2005, 10:47
Откуда: LT Vilnius
Контактная информация:

Ошибка такая:
Access violation at adress 004040C4 in module 'Molecule.exe'. Read of adress 1373FF88.[/img]
Delphi 7
ICQ 338-030-989
Аватара пользователя
LAngel
Сообщения: 277
Зарегистрирован: 30 мар 2005, 08:19
Откуда: Ульяновск
Контактная информация:

используй Sender
т.е.

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

procedure TF_GoodsV2.Cmb_Select(Sender: TObject);
begin
  if Sender is TComboBox then
  Memo1.Lines.Add((Sender as TComboBox).text);
end; 
С уважением, Lost Angel...
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

Alchazar,
какую таблицу
хм... это видимо "музыкой навеяло"(с) глючу я...
LAngel, правильно пишет - ты обращаешься к несозданному локальному объекту Cmb - отсюда ошибка

в приведённом примере ты через Sender получишь тот комбобокс который собсно и вызвал эту процедуру
Изображение
Alchazar
Сообщения: 23
Зарегистрирован: 13 апр 2005, 10:47
Откуда: LT Vilnius
Контактная информация:

Спасибо
Delphi 7
ICQ 338-030-989
Ответить