как обратиться к программно созданному объекту

отредактировано November 2014 Раздел: FastReport 4.0
в диалоговой форме программно создаю ComboBox
   var
     box: TfrxComboBoxControl;
     i: integer;
begin
     box := TfrxComboBoxControl.Create(Panel1);
     box.Name := 'box1';
     box.SetBounds(10,10,100,20);
      for i := 1 to 4 do
        begin
         box.Items.Add(IntToStr(i));
        end;
end;
как взять данные из этого ComboBox
переменнная := box1.Text;
или
переменнная := box.Text;
не помогает

Комментарии

  • Stalker4Stalker4 123
    отредактировано 02:06
    delavar написал: »
    в диалоговой форме программно создаю ComboBox
    как взять данные из этого ComboBox
    Ну если надо взять сразу все, то
    box.Items.Text
    а если один элемент, то
    box.Items[<номер элемента>]




  • отредактировано 02:06
    Ну мне не надо все
    ComboBox это элемент с выпадающим списком, я из списка выбираю нужное и дальше программа должна составить отчет с учетом выбранного в ComboBox
    поэтому box.Items.Text не катит, но доже и это если-б работало

    FastReport сообщает
    неопределенный идентификатор "box"
    
    то же и с "box1"
  • gpigpi
    отредактировано 02:06
    Такой скрипт у меня работает:
    var
       box: TfrxComboBoxControl;
       i: integer;
    
    procedure Button1OnClick(Sender: TfrxComponent);
    begin
      ShowMessage(box.Text);
    end;
    
    begin
         box := TfrxComboBoxControl.Create(Panel1);
         box.Name := 'box1';
         box.SetBounds(10,10,100,20);
          for i := 1 to 4 do
            begin
             box.Items.Add(IntToStr(i));
            end;
    end.
    
  • отредактировано November 2014
    Спасибо gpi
    Понял, элемент "box" нужно объявить глобально, но возникла следующая проблема
    по имени к "box" обратиться не получается, т.е.
    ShowMessage(box1.Text);
    
    не работает

    это нормально?

    ComboBox у меня создается динамически от 4 до 8 штук, в зависимости от того что находится в БД, каждому box присваивать другое имя получается бесполезно
    box.Name := 'box1';
    box.Name := 'box2';
    и т.д.

    нужно создавать именно
    var
    box1, box2, ... : TfrxComboBoxControl;
  • gpigpi
    отредактировано 02:06
    ShowMessage(TfrxComboBoxControl(Report.FindObject('Box1')).Text);
    
  • отредактировано 02:06
    Спасибо за ответы, работает


Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.