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


Страницы: (4) « Первая ... 2 3 [4]  все  ( Перейти к последнему сообщению )  
> Delphi for PHP (RAD PHP XE, HTML5 Builder ): FAQ
    Задача: выполнить цепочку AJAX процедур, когда одна вызывает выполнение другой
    Решение:

    Рассмотрим на примере двух DBGrid работающих по принципу Master-Detail
    При изменении строки в первом гриде вызываем ajax процедуру на фильтрацию данных во втором гриде.
    А после перечитывания и отрисовки данных второго грида автоматически вызываем ajax процедуру для вывода сообщений или выполнения других функций на JS.

    На форме:
    DBGrid1, DBGrid2, Edit1, AjaxScripter1
    Оба грида подключены к одной и той же таблице (через соответствующие компоненты), у которой ключевое поле TEST_ID.
    При выборе записи в первой таблице возьмём значение TEST_ID этой записи, пропишем его в Edit1 и отфильтруем по нему DBGrid2 (через компонент Table2, к которому подключен грид).
    После этого установим фокус на первую строку во второй таблице и выведем сообщение.

    ExpandedWrap disabled
        function DBGrid1JSRowChanged($sender, $params)
            {
            ?>
            params = DBGrid1.getTableModel().getValue(0, DBGrid1.getFocusedRow());
       
            <?php
            echo $this->DBGrid1->ajaxCall("xxx",  array("DBGrid1"));
       
            ?>
       
            <?php
       
            }
       
            function xxx($sender, $params)
            {
            $this->Edit1->Text = $params[0];
            $this->Table2->Filter = "TEST_ID=$params[0]";
            $this->Table2->refresh();
            $this->AjaxScripter1->Script = '
                  //DBGrid1.getTableColumnModel().setColumnVisible(0, false);  - здесь мы могли бы установить видимость колонки в гриде или сделать другие установки
                  var xx =document.getElementById("Edit1").value;
                  DBGrid2.getSelectionModel().setSelectionInterval(0, 0);
                  ';
            }
       
       
          function Page10AfterShow($sender, $params)
          {
                    echo '
                        <script type="text/JavaScript">
                                DBGrid1.getTableColumnModel().setColumnVisible(0, false);
                                DBGrid2.getTableColumnModel().setColumnVisible(0, false);
                        </script>
                        ';
       
          }
          function DBGrid2JSRowChanged($sender, $params)
            {
            ?>
            params = DBGrid2.getTableModel().getValue(0, DBGrid2.getFocusedRow());
       
            <?php
       
            echo $this->DBGrid1->ajaxCall("yyy",  array("DBGrid2"));
       
            ?>
       
            <?php
       
            }
       
       
       
            function yyy($sender, $params)
            {
            $this->AjaxScripter1->Script = '
                  alert(\'Я сработал после обновления грида 2\');
                  ';
            }


    компонент AjaxScripter не входит в стандартную поставку, но давно описан здесь
    Delphi for PHP (RAD PHP XE): Компоненты (сообщение #2410953)

    Сообщения были разделены в тему "Пустая вкладка при старте проекта"
      Задача: Получить список методов объекта JS
      Решение: используем функцию
      ExpandedWrap disabled
          function Page1BeforeShow($sender, $params)
           {
        echo '
        <script type="text/javascript">
         
        function fnShowProps(obj, objName){
          var result = "";
          for (var i in obj)
              result += objName + "." + i + " = " + obj[i] + "<br />\n";
          document.write(result);
        }
        </script>
        ';
           }
           function Label1JSClick($sender, $params)
           {
               ?>
               //begin js
               //  fnShowProps(window.location, "location");
               //  fnShowProps(Label1, "Label1");
               fnShowProps(LabeledEdit1, "LabeledEdit1");
         
               //end
               <?php
           }


      Сообщения были разделены в тему "пытаюсь разместить пробную страничку на хостинге"
        Проблема: Deployment Wizard не всегда копирует нужные файлы в папку rpcl
        Решение:

        делает это самостоятельно
        1. выполняем Deployment Wizard
        2. создаём файл copy_rpcl.bat
        кидаем его в ту директорию, в которую экспортировали проект
        3. выполняем

        содержимое copy_rpcl.bat
        ExpandedWrap disabled
          @echo off
           
          rem кидаем файл в нужную папку и запускаем, файлы будут скопированы в подпапку этой папки
           
          set folderRPCLsource=C:\Program Files\Embarcadero\RadPHP\3.0\rpcl
           
          rem папка куда копировать (если rpcl, то скопирует в текущую папку, в подпапку rpcl)
          set folderRPCLdest=rpcl
           
          cls;
          echo 1 - копировать всю папку RPCL (не включая svn)
          echo 2 - копировать только необходимый минимум папок RPCL (не включая svn)
          echo 0 - прекратить это безобразие :)
          echo;
           
          set /P variantcopy="Введите вариант копирования: "
           
              if "%variantcopy%" == "1"  goto all  ELSE goto minimum
              if "%variantcopy%" == "0"  goto end1
          :minimum
           
            rem здесь сами себе задаём минимум необходимых папок
           
            mkdir "%folderRPCLdest%"
            xcopy "%folderRPCLsource%" "%folderRPCLdest%\*.php" /Y
           
            mkdir "%folderRPCLdest%\qooxdoo"
            xcopy "%folderRPCLsource%\qooxdoo" "%folderRPCLdest%\qooxdoo" /R/E/K/Y
           
            mkdir "%folderRPCLdest%\adodb"
            xcopy "%folderRPCLsource%\adodb" "%folderRPCLdest%\adodb" /R/E/K/Y
           
            mkdir "%folderRPCLdest%\js"
            xcopy "%folderRPCLsource%\js" "%folderRPCLdest%\js" /R/E/K/Y
           
            mkdir "%folderRPCLdest%\xajax"
            xcopy "%folderRPCLsource%\xajax" "%folderRPCLdest%\xajax" /R/E/K/Y
           
            mkdir "%folderRPCLdest%\language"
            xcopy "%folderRPCLsource%\language" "%folderRPCLdest%\language" /R/E/K/Y
           
            mkdir "%folderRPCLdest%\smarty"
            xcopy "%folderRPCLsource%\smarty" "%folderRPCLdest%\smarty" /R/E/K/Y
           
            echo 'Скопирован необходимый МИНИМУМ';
            goto end;
           
          :all
            mkdir "%folderRPCLdest%"
            xcopy "%folderRPCLsource%" "%folderRPCLdest%" /R/E/K/Y
            echo 'Скопировано ВСЁ';
            goto end;
           
           
          :end
          pause
          :end1


        теперь в папке экспорта находятся нужные файлы для переноса на сервер
          Проблема: QDBGrid1 на QWindow1 не работает, работает когда оба просто на форме
          Решение:

          ExpandedWrap disabled
               function QWindow1BeforeShow($sender, $params)
               {
               $this->QDBGrid1->dumpRPC();
             
               }
            Проблема: В RadPhp XE не получается подключится к MSSQL 2000 с помощью DataExplorer
            Решение: Качаем новый клиент MSSQL отсюда
            http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c
            а конкретно этот: http://go.microsoft.com/fwlink/?LinkId=123717&clcid=0x409
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:




            Рейтинг@Mail.ru
            [ Script execution time: 0,0339 ]   [ 15 queries used ]   [ Generated: 28.03.24, 21:28 GMT ]