На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
  
> Динамическое создание контролов
    Подскажите пожалуйста, как создать контрол программно? Например, есть кнопка, по нажатию на которую создаётся новая кнопка, которая тоже имеет свои обработчики событий.
      Примерно так
      ExpandedWrap disabled
                 $B = new Button($this);
                 $B->Caption = 'qqqq';
                 $B->Name = 'B100';
                 $B->Parent = $this->Panel1;

      А вообще-то такая тема подымалась не раз, есть она как раз в соседнем топике про присвоение скриптов кнопке, ответов еще нет, т.к. vicis от меня никак
      не может получить внятного ответа, что у меня не работает.
      Сообщение отредактировано: Eremeev -
        С созданием разобрался(прошу прощения тема действительно поднималась). А как добавить обработчик, который находится в другом файле или лучше вообще в текстовом поле бд?
          Цитата d_murzin @
          в текстовом поле бд

          это как ?
            Код создания ($B = new Button($this);... и т.д.) контрола сидит в текстовом поле таблицы, вытягиваем и по строчкам в eval(). очень коряво выглядит, но работало. Вопрос, можно ли прилепить к контролу(классу) метод извне?
              Цитата d_murzin @
              как добавить обработчик, который находится в другом файле

              метод в другом файле
              ExpandedWrap disabled
                <?php
                      function MyClickNew($sender, $params)
                    {
                     $sender->Caption = 'newproc1_'.rand(1,10);  //time();
                    }
                ?>


              вызываем по нажатию кнопки

              ExpandedWrap disabled
                    function Button2Click($sender, $params)
                    {
                     MyClickNew($sender, $params);
                    }


              или так
              ExpandedWrap disabled
                     // начальный метод обработки события кнопки
                    function Button2Click($sender, $params)
                    {
                     $sender->Caption = 'test'.rand(1,10);  //time();
                    }
                 
                    // переходничок :)
                    function MyClick($sender, $params)
                    {
                     MyClickNew($sender, $params);
                    }
                 
                    // заменяем обработчик
                    function Button3Click($sender, $params)
                    {
                    $this->Button2->OnClick =MyClick;
                    }
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0308 ]   [ 15 queries used ]   [ Generated: 3.05.24, 19:08 GMT ]