Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.118.137.243] |
|
Сообщ.
#1
,
|
|
|
Добрый день!
Подскажите пожалуста, как можно задать у компонента opengrid, page свойство Align скажем "alClient" |
Сообщ.
#2
,
|
|
|
На сколько я помню, свойство Align работает только у компонент ExtJS
|
Сообщ.
#3
,
|
|
|
Спасибо за ответ!
Да, но если посмотреть файл 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 окна браузера |
Сообщ.
#4
,
|
|
|
где то учитывается, но где непонятно
думаю нигде, сделано на будущее ну вот возьми и сам учти варианты (с другими компонентами, попробуй сделать по аналогии) 1) Delphi for PHP (RAD PHP XE): FAQ (сообщение #2344510) 2) //Как поставить QIFrame1 на QWindow1 и при ихменении рахмеров последнего менять и размеры вложенного function QWindow1JSResize($sender, $params) { ?> //begin js QIFrame1.setWidth(QWindow1.getWidth()-20); QIFrame1.setHeight(QWindow1.getHeight()-30); //end <?php } 3) Задача как сделать что бы размер меню сверху и центральной панели отслеживали ширину окна браузера т.е. работали типа свойства клиент у панели сначала делаем перехват двух событий браузера function Page2JSLoad($sender, $params) { ?> //begin js window.onresize=refresh_my_controls; window.onfocus=refresh_my_controls; //end <?php } теперь вставляем несколько функций Javascript - для определения размеров браузера - для перерисовки типового объекта, который отрисовывается с '_outer' - функция вызываемая при изменении размеров браузера и при передача ему фокуса 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> '; } |
Сообщ.
#5
,
|
|
|
Спасибо за ответ!
На первый взгляд то что нужно. Завтра буду пробовать... потом сообщу результат Есть одно замечание в Delphi для определения ширины скролла я пользовался функцией GetSystemMetrics(SM_CXHSCROLL) в пикселах, из winApi Возможно ли таким образом узнать ширину скролла с помощью JS, для функции function xSetWidthQObject(ObjName,ScrollWidth) |
Сообщ.
#6
,
|
|
|
странно у меня почему-то не работает эта строчка
eval(ObjName).setWidth(xWidth); |
Сообщ.
#7
,
|
|
|
Цитата kryura @ странно у меня почему-то не работает эта строчка eval(ObjName).setWidth(xWidth); у меня тоже. |
Сообщ.
#8
,
|
|
|
MainMenu1.setWidth(document.body.clientWidth-scrollwidth);
OpenGrid1.setWidth(document.body.clientWidth-scrollwidth); если записать вот так, то первая строка работает, а вторая нет пробовал так jQuery('#OpenGrid1').setWidth(document.body.clientWidth-scrollwidth); тоже не работает вопрос как можно изменить ширину Opengrid с помощью JS |
Сообщ.
#9
,
|
|
|
должно быть так,однако jQuery('#OpenGrid1_outer').setWidth(document.body.clientWidth-scrollwidth);
или попробуй лучше так jQuery('#OpenGrid1_outer').css('width',document.body.clientWidth-scrollwidth); Надо добавить к имени '_outer',но это видимо для контейнера,если правильно понимаю. Посмотри код страницы и найди там как прописана OpenGrid1 и хорошо бы покопаться в исходниках,должен же быть там метод установки размеров. Вообще, в среде есть неплохая справка по jQuery. Смотри там какие методы есть. |
Сообщ.
#10
,
|
|
|
Цитата kryura @ странно у меня почему-то не работает эта строчка уточняю обычно я всё пробую сначала в ie а потом уже, если получится, в других браузерах может в браузере проблема ну и сначала пробуй на простом проекте код сейчас не проверял, но раз он у меня записан, значит работал Цитата kryura @ Возможно ли таким образом узнать ширину скролла с помощью JS http://www.google.com.ua/search?hl=ru&q=%D...&rlz=1I7ADFA_ru |
Сообщ.
#11
,
|
|
|
Спасибо за ответ!
Цитата kryura @ должно быть так,однако jQuery('#OpenGrid1_outer').setWidth(document.body.clientWidth-scrollwidth); или попробуй лучше так jQuery('#OpenGrid1_outer').css('width',document.body.clientWidth-scrollwidth); не работает, вернее значения записываются но размер на экране не меняется пробовал IE, Opera Спасибо ширина скролла определяется |
Сообщ.
#12
,
|
|
|
Все мои изыскания за сегодня привели к тому что работает вот такая строчка
jQuery("#OpenGrid1").width(document.body.clientWidth-scrollwidth); адекватно изменяется ширина столбцов с данными, но остается неизменной ширина самого контейнера и ширина заголовков столбцов, в результате получается несоответствие положения столбцов с данными и заголовков столбцов..... |
Сообщ.
#13
,
|
|
|
Всем Спасибо за ответы.
Задачу немного решил таким способом: (коряво конечно но лучшего не смог нечего придумать) 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> '; } |