На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> Модальное окно , Как создать модальное окно
    Добрый день!
    Вопрос не совсем по теме Delphi for php.
    Есть html-ая таблица. Необходимо чтобы по выбранной строке таблицы появлялось модальное окно.
    В дальнейшем в этом модальном окне планируется показывать гистограмму по данным из ячеек выбранной строки, а также в нем будут размещаться ComboBox-ы связанные с базой данных.

    Я сделал это на ASP.NET, а вот как на php х.з.
    Сообщение отредактировано: Prosto_Coder -
      если вопрос чисто по php, то нужно задавать в форум php
      если же рассматривать реализацию с использованием vcl и DelphiForPhp,
      то видится следующее:
      - делаем компонент
      - компонент генерирует таблицу и при этом нумеруем теги td каким нибудь образом, но так что бы потом вытащить номер строки и номер колонки(например: <td id=1_2>tram pam pam</td>)
      - при генерации таблицы встраиваем события onclick с нужным кодом
      - с помощью события onClick вытаскиваем номер td
      - расшифровываем номер td и вытаскиваем значение или из ячейки или делаем запрос к базе


      генерировать в php примерно так можно
      ExpandedWrap disabled
         
        echo '<tableborder=1>';
         
        $val1 = '111';
        $val2 = '222';
        echo "<tr>
            <td id=$val1 onclick=alert($val1);>$val1</td>
            <td id=$val2 onclick=alert($val2);>$val2</td>
        </tr>";
        $val1 = '333';
        $val2 = '444';
        echo "<tr>
            <td id=$val3 onclick=alert($val3);>$val3</td>
            <td id=$val4 onclick=alert($val4);>$val4</td>
        </tr>";
        echo '</table>';


      для генерации html таблицы можно попробовать компонент описанный здесь FAQ (сообщение #2480688)

      открыть модальное окно смотрим здесь FAQ (сообщение #2507943)
      Сообщение отредактировано: vicis -
        решен
          А как открывать окна /не знаю как это правильно называется/ наподобие окон /прозвучит глупо, но пытаюсь на пальцах объяснить/ контакта, когда пишешь кому-нить сообщение. Т.е. в отличии модальных окон, эти выходят без рамки. Прошу не смеяться. =)
            про какую рамку разговор ?
            модальное может быть с рамками и без, там смысл в другом смотри здесь
            так пойдёт:
            ставь на форму компонент Window
            например имя у него Window1 будет, тогда:

            ExpandedWrap disabled
              // открыть окно
                             function Button8JSClick($sender, $params)
                             {
               
                             ?>
                             //Add your javascript code here
               
                               Window1.show();
               
                            
                             <?php
               
                             }
               
              // закрыть окно
                             function Button9JSClick($sender, $params)
                             {
               
                             ?>
                             //Add your javascript code here
               
                             Window1.close();
               
                            
                             <?php
               
                             }

            можно так ещё

            ExpandedWrap disabled
                             function PageInfoAfterShow($sender, $params)
                             {
                             echo "<script type=\"text/JavaScript\">
               
                                function PrintPreview()
                                  {
                                window.open('print_report.html',null,'target=_blank,status=0,toolbar=0,scrollbars=1,menubar=1');
                                  }
                                  </script>";
                             }
               
              // открыть окно
                             function Button8JSClick($sender, $params)
                             {
               
                             ?>
                             //Add your javascript code here
               
                               PrintPreview();
               
                            
                             <?php
               
                             }
            Сообщение отредактировано: vicis -
              С компонентом window - хорошая идея!
              Но я имел ввиду немного другое, а именно это
              user posted image

              т.е. нажимаем на кнопку, страница затемняется, на передний план выходит другая форма. Вот как такое сделать в D4php.
                Цитата Gluckodrom @
                т.е. нажимаем на кнопку, страница затемняется, на передний план выходит другая форма. Вот как такое сделать в D4php.

                посмотри здесь Компоненты для DelphiForPhp (сообщение #2356199)
                там есть видео и ссылка на исходник компонента
                однако имеено так как ты хочеш там я не увидел, хотя очень рядом
                так как компонент построен на ExtJS, то нужно смотреть на сайт ExtJS
                вот куча примеров что он может делать
                http://www.extjs.com/products/js/
                здесь всплывающее окно, но без затемнения http://www.extjs.com/deploy/dev/examples/window/hello.html
                а здесь всплывающие сообщения с затемнением http://www.extjs.com/deploy/dev/examples/message-box/msg-box.html
                а здесь управляют затемнением http://www.extjs.com/deploy/dev/examples/core/spotlight.html

                покопай в этом направлении
                Сообщение отредактировано: vicis -
                  Благодарствую за отзывчивость, но это не то. Мое упущение, что не сообщил сразу о том, что хочу видеть в этом "всплывающем" окне другую форму из D4php (все-таки визуальное программирование), а не в рантайме ее создавать.

                  Может есть еще варианты?
                  Сообщение отредактировано: Gluckodrom -
                    Цитата Gluckodrom @
                    а не в рантайме ее создавать

                    как не то! :rtfm:
                    всё там есть и гораздо больше
                    как Delphi так и DelphiForPhp предполагают умение создавать компоненты
                    вот и создавай
                    компонент ExtJs (посмотри видео) реализует часть фукнций из одноимённой библиотеки
                    посмотри как сделан компонент, посмотри как используется нужная функция в оригинальной библиотеке
                    и сделай свой компонент на базе существующего
                    ------------------------------------
                    С минимальными затратами времени конечно нужно было тебе этот пример докрутить
                    там всего то перевести окно в модальный режим и покрасить основную форму в серый цвет

                    так пойдёт ? :

                    1.на форме unit1 компонент Window1 и кнопка Button1
                    и ещё чего нибудь для демонстрации работы накидай, ну там вторую кнопку, мемо...

                    2. в инспекторе Winow1->Modal = true;
                    Button1->ButtonType = btNormal;

                    3. в коде
                    вариант с затемнением
                    ExpandedWrap disabled
                                     function Button1JSClick($sender, $params)
                                     {
                       
                                     ?>
                                     //Add your javascript code here
                                      document.getElementById('unit1').style.background = 'gray'; // перекрашиваем форму
                                      Window1.show(); // открывем модальное окно (всё остальное блокируется пока окно открыто)
                       
                                     <?php
                       
                                     }
                       
                                     function Window1JSClose($sender, $params)
                                     {
                       
                                     ?>
                                     //Add your javascript code here
                                      document.getElementById('unit1').style.background = ''; // перекрашиваем форму назад
                                      // здесь возможно нужно восстанавличать цвет, а ранее его запоминать в какой то переменной, но в простом случае работает и так
                                     <?php
                       
                                     }



                    вариант где скрываем основную страницу пока отображаем модальное окно
                    ExpandedWrap disabled
                                     function Button1JSClick($sender, $params)
                                     {
                       
                                     ?>
                                     //Add your javascript code here
                                      document.getElementById('unit1').style.display = 'none';  //block - отображает страницу или элемент, а none прячет
                                      Window1.show(); // открывем модальное окно (всё остальное блокируется пока окно открыто)
                       
                                     <?php
                       
                                     }
                       
                                     function Window1JSClose($sender, $params)
                                     {
                       
                                     ?>
                                     //Add your javascript code here
                                      document.getElementById('unit9').style.display = 'block';  //block - отображает страницу или элемент, а none прячет
                                     <?php
                       
                                     }


                    Добавлено
                    можно ещё здесь посмотреть http://developer.co.ua/posts/view/modalnye_okna_v_veb-prilozhenijax
                    Сообщение отредактировано: vicis -
                      Цитата vicis @
                      так пойдёт ?

                      если так делать, на форме у меня должно быть куча window. это уже запарка.
                      создавать в рантайме тоже неинтересно. поэтому не подходит, хотя идея прикольная.

                      Цитата vicis @
                      можно ещё здесь посмотреть http://developer.co.ua/posts/view/modalnye...b-prilozhenijax

                      не смог установить Prototype window - обидно. Ругается на то, что такой компонент уже есть, а именно тот же самый window.
                      ModalBox тупо никак не реагирует, хотя все делал по инструкции.

                      Prototype window и ModalBox - именно то, что нужно, т.к. в них встраиваются другие страницы (формы).
                        Цитата Gluckodrom @
                        если так делать, на форме у меня должно быть куча window. это уже запарка.
                        создавать в рантайме тоже неинтересно. поэтому не подходит, хотя идея прикольная.

                        зачем иметь кучу окон
                        грузи туда другую форму DelphiForPhp и все дела :ph34r:

                        делаем так:

                        Если нужно в окне Windows1 открыть страницу с другого сайта (или со своего сайта другую форму)
                        то нужно поместить на форму окно Window1, на него панель Panel1, а к панели привязать событие

                        ExpandedWrap disabled
                          .....
                                  class Unit2 extends Page
                                  {
                                         public $Panel1 = null;
                                         public $Window1 = null;
                                         function Panel1Show($sender, $params)
                                         {
                           
                                        
                                                 echo '<iframe src ="http://forums.delphi-php.net/" height="100%" width="100%"></iframe>';
                           
                                                 // а так грузиш свою другую форму
                                                 //echo '<iframe src ="Unit3.php" height="100%" width="100%"></iframe>';
                           
                                         }
                           
                                  }
                          .....



                        а здесь Компоненты для DelphiForPhp (сообщение #2410939) есть ссылка на уже готовый такой компонент
                        Сообщение отредактировано: vicis -
                          Цитата vicis @
                          грузи туда другую форму DelphiForPhp и все дела

                          Хорошее решение! Спасибо!

                          Теперь другой вопрос, как передавать данные с формы на другую форму (ту же модальную в случае использования окон отсюда http://developer.co.ua/posts/view/modalnye...b-prilozhenijax)? В Delphi было просто, загнал форму в Uses и получил доступ к ее компонентам. В D4php загнание приводит к отображению формы. Неужели нужно передавать данные через куки, а при показе второй формы грузить из них?

                          И еще вопрос: куда в D4php прописывать ссылки на скрипты чтобы они появились между тэгами <head></head> (нужно для юзанья тех же всплывающих окон).
                            Цитата Gluckodrom @
                            Теперь другой вопрос, как передавать данные с формы на другую форму

                            почитай faq FAQ (сообщение #2347063)

                            а ещё лучше прочитай как это делается в php

                            Цитата Gluckodrom @
                            В Delphi было просто, загнал форму в Uses и получил доступ к ее компонентам

                            здесь если загониш в uses рискуеш увидеть её на странице

                            Цитата Gluckodrom @
                            И еще вопрос: куда в D4php прописывать ссылки на скрипты чтобы они появились между тэгами <head></head>

                            ну наверное сюда

                            ExpandedWrap disabled
                                     function Unit1ShowHeader($sender, $params)
                                     {
                                     echo '
                                       <meta name="author" content="Это я , это я написал этот сайт!!!">
                                       ';
                               
                                     }
                              Забил на эти окна. Но все равно огромное спасибо!
                              Решил все-таки юзать пост из FAQ
                                Неплохое видео по созданию модальных окон
                                youtube
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0468 ]   [ 16 queries used ]   [ Generated: 28.03.24, 13:11 GMT ]