На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
  
> Свойство Align , Как установить свойство Align
    Добрый день!
    Подскажите пожалуста, как можно задать у компонента opengrid, page свойство Align скажем "alClient"
      На сколько я помню, свойство Align работает только у компонент ExtJS
        Спасибо за ответ!
        Да, но если посмотреть файл Controls.inc.php то там есть такие строчки:
        define('alNone','alNone');
        define('alTop','alTop');
        define('alBottom','alBottom');
        define('alLeft','alLeft');
        define('alRight','alRight');
        define('alClient','alClient');
        define('alCustom','alCustom');

        *********************

        function readAlign() { return $this->_align; }
        function writeAlign($value) { $this->_align=$value; }
        function defaultAlign() { return alNone; }

        оно же где-то учитывается, значит как-то его можно использовать, может быть и неявно....

        если набрать в редакторе $this->opengrid1-> ... то мы видим Align как Property

        Другими словами - мне нужно добиться, чтобы при изменении размера окна браузера, opengrid всегда занимал полностью окно и не было горизонтальной прокрутки, или же отловить событие OnResize окна браузера
        Сообщение отредактировано: kryura -
          где то учитывается, но где непонятно :)
          думаю нигде, сделано на будущее
          ну вот возьми и сам учти

          варианты (с другими компонентами, попробуй сделать по аналогии)
          1)
          Delphi for PHP (RAD PHP XE): FAQ (сообщение #2344510)
          2)
          ExpandedWrap disabled
            //Как поставить QIFrame1 на QWindow1 и при ихменении рахмеров последнего менять и размеры вложенного
                function QWindow1JSResize($sender, $params)
                {
                    ?>
                    //begin js
                                    QIFrame1.setWidth(QWindow1.getWidth()-20);
                                    QIFrame1.setHeight(QWindow1.getHeight()-30);
             
                    //end
                    <?php
                }

          3)
          Задача
          как сделать что бы размер меню сверху и центральной панели отслеживали ширину окна браузера
          т.е. работали типа свойства клиент у панели

          сначала делаем перехват двух событий браузера
          ExpandedWrap disabled
                function Page2JSLoad($sender, $params)
                {
                    ?>
                    //begin js
                    window.onresize=refresh_my_controls;
                    window.onfocus=refresh_my_controls;
                    //end
                    <?php
             
                }

          теперь вставляем несколько функций Javascript
          - для определения размеров браузера
          - для перерисовки типового объекта, который отрисовывается с '_outer'
          - функция вызываемая при изменении размеров браузера и при передача ему фокуса
          ExpandedWrap disabled
                function Page2BeforeShow($sender, $params)
                {
                echo '
                <script type="text/javascript">
             
            // return [pageWidth,pageHeight,windowWidth,windowHeight]
            function  getPageSize(){
                   var xScroll, yScroll;
                   if (window.innerHeight && window.scrollMaxY) {
                           xScroll = document.body.scrollWidth;
                           yScroll = window.innerHeight + window.scrollMaxY;
                   } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
                           xScroll = document.body.scrollWidth;
                           yScroll = document.body.scrollHeight;
                   } else if (document.documentElement && document.documentElement.scrollHeight > document.documentElement.offsetHeight){ // Explorer 6 strict mode
                           xScroll = document.documentElement.scrollWidth;
                           yScroll = document.documentElement.scrollHeight;
                   } else { // Explorer Mac...would also work in Mozilla and Safari
                           xScroll = document.body.offsetWidth;
                           yScroll = document.body.offsetHeight;
                   }
                   var windowWidth, windowHeight;
                   if (self.innerHeight) { // all except Explorer
                           windowWidth = self.innerWidth;
                           windowHeight = self.innerHeight;
                   } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
                           windowWidth = document.documentElement.clientWidth;
                           windowHeight = document.documentElement.clientHeight;
                   } else if (document.body) { // other Explorers
                           windowWidth = document.body.clientWidth;
                           windowHeight = document.body.clientHeight;
                   }
                   // for small pages with total height less then height of the viewport
                   if(yScroll < windowHeight){
                           pageHeight = windowHeight;
                   } else {
                           pageHeight = yScroll;
                   }
                   // for small pages with total width less then width of the viewport
                   if(xScroll < windowWidth){
                           pageWidth = windowWidth;
                   } else {
                           pageWidth = xScroll;
                   }
             
                   return [pageWidth,pageHeight,windowWidth,windowHeight];
            }
             
            // set Width for Object use _outer
            function xSetWidthQObject(ObjName,ScrollWidth)
            {
                                    var pSize = getPageSize();//get array [pageWidth,pageHeight,windowWidth,windowHeight]
                                    var xLeft = (document.getElementById(ObjName+"_outer").style.left).toString().replace("px", "");
                                    var xWidth =pSize[2]-ScrollWidth-xLeft;
                                    eval(ObjName).setWidth(xWidth);
                                    document.getElementById(ObjName+"_outer").style.width =xWidth+"px";
            }
             
            // function for all object resize
            function refresh_my_controls(){
                                    xSetWidthQObject("QIFrame2",20)
                                    xSetWidthQObject("QMainMenu1",20)
                                    // add new object for resize
                                    // т.е. сюда вставляем все объекты, которые нужно перерисовать
            }
             
             
            </script>
             
                ';
             
                }
            Спасибо за ответ!
            На первый взгляд то что нужно.

            Завтра буду пробовать... потом сообщу результат

            Есть одно замечание в Delphi для определения ширины скролла я пользовался функцией

            GetSystemMetrics(SM_CXHSCROLL) в пикселах, из winApi

            Возможно ли таким образом узнать ширину скролла с помощью JS, для функции
            function xSetWidthQObject(ObjName,ScrollWidth)
              странно у меня почему-то не работает эта строчка

              eval(ObjName).setWidth(xWidth);
              Сообщение отредактировано: kryura -
                Цитата kryura @
                странно у меня почему-то не работает эта строчка

                eval(ObjName).setWidth(xWidth);

                у меня тоже.
                  MainMenu1.setWidth(document.body.clientWidth-scrollwidth);
                  OpenGrid1.setWidth(document.body.clientWidth-scrollwidth);
                  если записать вот так, то первая строка работает, а вторая нет пробовал
                  так
                  jQuery('#OpenGrid1').setWidth(document.body.clientWidth-scrollwidth);
                  тоже не работает

                  вопрос как можно изменить ширину Opengrid с помощью JS
                    должно быть так,однако jQuery('#OpenGrid1_outer').setWidth(document.body.clientWidth-scrollwidth);
                    или попробуй лучше так jQuery('#OpenGrid1_outer').css('width',document.body.clientWidth-scrollwidth);
                    Надо добавить к имени '_outer',но это видимо для контейнера,если правильно понимаю.
                    Посмотри код страницы и найди там как прописана OpenGrid1 и хорошо бы покопаться в исходниках,должен же быть там метод установки размеров.
                    Вообще, в среде есть неплохая справка по jQuery. Смотри там какие методы есть.
                    Сообщение отредактировано: Alex2011 -
                      Цитата kryura @
                      странно у меня почему-то не работает эта строчка

                      уточняю
                      обычно я всё пробую сначала в ie
                      а потом уже, если получится, в других браузерах
                      может в браузере проблема
                      ну и сначала пробуй на простом проекте
                      код сейчас не проверял, но раз он у меня записан, значит работал
                      Цитата kryura @
                      Возможно ли таким образом узнать ширину скролла с помощью JS

                      http://www.google.com.ua/search?hl=ru&q=%D...&rlz=1I7ADFA_ru
                        Спасибо за ответ!
                        Цитата kryura @

                        должно быть так,однако jQuery('#OpenGrid1_outer').setWidth(document.body.clientWidth-scrollwidth);
                        или попробуй лучше так jQuery('#OpenGrid1_outer').css('width',document.body.clientWidth-scrollwidth);

                        не работает, вернее значения записываются но размер на экране не меняется
                        пробовал IE, Opera


                        Спасибо ширина скролла определяется
                        Сообщение отредактировано: kryura -
                          Все мои изыскания за сегодня привели к тому что работает вот такая строчка

                          jQuery("#OpenGrid1").width(document.body.clientWidth-scrollwidth);

                          адекватно изменяется ширина столбцов с данными, но остается неизменной ширина самого контейнера и ширина заголовков столбцов, в результате получается несоответствие положения столбцов с данными и заголовков столбцов.....
                            Всем Спасибо за ответы.
                            Задачу немного решил таким способом: (коряво конечно но лучшего не смог нечего придумать)

                            ExpandedWrap disabled
                              function Page1JSLoad($sender, $params)
                                  {
                                      ?>
                                     //begin js
                                       window.onresize=refresh_my_controls;
                                     //end
                                      <?php
                                  }
                               
                               
                               
                                  function Page1BeforeShow($sender, $params)
                                  {
                                  if ($_GET['width'])
                                  {
                                    $kor=15;
                                    $width=$_GET['width']-$kor;
                                    $height=$_GET['height']-5;
                               
                                    $this->OpenGrid1->Width=$width;
                                    $this->OpenGrid1->Height=$height-$this->OpenGrid1->Top;
                                    $this->MainMenu1->Width=$width;
                                  }
                               
                               
                              echo '
                                <script type="text/javascript">
                               
                              function refresh_my_controls()
                                          {
                                               var tt = (document.getElementById("OpenGrid1_outer").style.width).toString().replace("px", "");
                                                 //var scrollwidth=getScrollBarWidth();
                                                 scrollwidth=20;
                                                var width=document.body.clientWidth-scrollwidth; // ширина
                                                if (tt==width)
                                                {
                                                 // alert(tt+" - "+width);
                                                }
                                                else
                                                {
                                                  var height=document.body.clientHeight; // высота
                                                  window.location.href = "Zajava.php?width=" + width +"&height=" + height;
                                                  document.getElementById("OpenGrid1_outer").style.width =width+"px";
                                                   jQuery("#OpenGrid1").width(width);
                                                }
                               
                                             }
                              </script>
                                ';
                              }
                            Сообщение отредактировано: kryura -
                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                            0 пользователей:


                            Рейтинг@Mail.ru
                            [ Script execution time: 0,0342 ]   [ 15 queries used ]   [ Generated: 7.05.24, 18:23 GMT ]