
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.82] |
![]() |
|
Страницы: (4) 1 [2] 3 4 все ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#16
,
|
|
Проблема:
Есть проблема с combobox. Не получалось программно определить текущее значение выбранного элемента. Решение: Можно воспользоватся такой функцией ![]() ![]() function GetComboSelectKey($Combo,$TypeValue=0) /* возвращает значение ключа(key) или текст выбранной записив Combobox $TypeValue=0 - key, =1 - текст*/ { if ($Combo->Count<1) return ''; $items=$Combo->Items; reset($items); while(list($key, $val)=each($items)) { if ($Combo->readSelected($key)) { if ($TypeValue==0) { return $key; } else { return $val; } } } } |
![]() |
Сообщ.
#17
,
|
|
Проблема:
Никак не пойму, какой метод или свойство у BDGrid содержит текущую выделенную строку и поле. Решение: ![]() ![]() document.getElementById('Edit1').value = DBGrid1.getTableModel().getValue(1, DBGrid1.getFocusedRow()) |
![]() |
Сообщ.
#18
,
|
|
Проблема:
Как центрировать форму с компонентами? Решение: выставляется параметр "Layout.Type" у формы отличающийся от "ABS_XY_LAYOUT"( например "XY_LAYOUT") и присваиваем свойству Alignment значение agCenter |
![]() |
Сообщ.
#19
,
|
|
Проблема:
DBGrid показывает все колонки, хотя в некоторых стоит свойство Visible=false Решение: 1) Открываем модуль dbgrids.inc.php и ищем там такой код: ![]() ![]() $dwidth=$value['Width']; $color=$value['Color']; $fontcolor=$value['FontColor']; $alignment=$value['Alignment']; $fname=$value['Fieldname']; $props=$this->_datasource->DataSet->readFieldProperties($fname); if ($props) { if (array_key_exists('displaywidth',$props)) { $dwidth=$props['displaywidth'][0]; } } echo " $this->Name.getTableColumnModel().setColumnWidth($i,$dwidth);\n"; Добавляем две строки перед или после той строки что я указал последней ![]() ![]() $_Visible=$value['Visible']; //Эту echo " $this->Name.getTableColumnModel().setColumnVisible($i,$_Visible);\n"; //и эту echo " $this->Name.getTableColumnModel().setColumnWidth($i,$dwidth);\n"; //Я поставил перед этой 2) Ну если вручную менять то можно так ![]() ![]() ?> DBGrid1.getTableColumnModel().setColumnWidth(1,50) // размер DBGrid1.getTableColumnModel().setColumnVisible(1, false) // видимость <?php Добавлено в компоненте нет свойства Visible для колонок поэтому там пока через JS ![]() ![]() ListViewBank.getTableColumnModel().setColumnVisible(0, false); |
![]() |
Сообщ.
#20
,
|
|
Проблема:
Где dbgrid хранит текстовые константы? (1 of 9 rows selected) Решение: в файле %Program Files%\CodeGear\Delphi for PHP\1.0\vcl\qooxdoo\framework\script\qx.js в масиве $=[....] лежит каждое слово по отдельности |
![]() |
Сообщ.
#21
,
|
|
Проблема:
Проект в кодировке windows-1251. Использую ajax. Вместо кириллицы получаю корокзяблы Решение: Открываем модуль xajax.inc.php и подправляем строку ![]() ![]() define ('XAJAX_DEFAULT_CHAR_ENCODING', 'utf-8'); // ставим нужную нам кодировку (в данном случаи windows-1251) |
![]() |
Сообщ.
#22
,
|
|
Проблема:
Если нужно закрыть компонент Window при запуске формы, а потом его по кнопке отобразить с помощью JavaScript то при установке свойства невидимости оно вообще не генерируется в код и соотвественно потом не вызывается из JavaScript Решение: ![]() ![]() function PageInfoAfterShow($sender, $params) { echo "<script type=\"text/JavaScript\"> Window1.close(); </script>"; } |
![]() |
Сообщ.
#23
,
|
|
Задача:
Если нужно использовать панель с набором компонентов на ней не в том месте где она установлена на форме, а в произвольном, определяемом неким порядком генерации страницы которым мы должны управлять, то есть использовать эту панель как шаблон Решение: нужно сделать так - ставим панель на форму (например с именем PanelNewCode) - панели устанавливаем в режиме редактирования : ![]() ![]() $this->PanelNewCode->Visible = false; $this->PanelNewCode->Layout->Type = 'REL_XY_LAYOUT'; - прописываем в то место где хотим вставить панель такой код (например встроить панель в таблицу): ![]() ![]() $mycodetable = '<table> <tr><td>здесь встроена моя панель 1-й раз '.$this->PanelNewCode->show(true).'</td></tr> // вставляем панель первый раз <tr><td>здесь встроена моя панель 2-й раз '.$this->PanelNewCode->show(true).'</td></tr> // вставляем панель второй раз </table>'; echo $mycodetable; - однако т.к. PanelNewCode невидимая, то есть проблема если на этой панели есть компоненты у которых прописаны обработчики событий (например кнопка) то vcl не сгенерирует их в страницу, т.к. родитель не видимый решение здесь такое: прописываем сгенерировать код события принудительно (например для кнопки Button1, которая находится на невидимой панели и имеет обработчик события) ![]() ![]() function zakazinfoAfterShow($sender, $params) { echo "<script type=\"text/JavaScript\">"; $this->Button1->dumpJsEvents(); echo "</script>"; } это событие здесь для формы с названием zakazinfo |
![]() |
Сообщ.
#24
,
|
|
Задача:
Передать параметры из формы в форму Например: значение первой колонки из выбранной записи DBGrid1 Решение: ![]() ![]() function BitBtn4JSClick($sender, $params) { ?> if (confirm("Вы уверены, что хотите удалить этого сотрудника?")) { t_id=DBGrid1.getTableModel().getValue(0, DBGrid1.getFocusedRow()); location.href="/formdelete.php?act=delete&id="+t_id; } <?php } в форме formdelete.php получаем в событии BeforeShow($sender, $params) ![]() ![]() $action=$this->input->act; if (is_object($action)) { $del_id=$this->input->id; ... |
![]() |
Сообщ.
#25
,
|
|
Задача:
Нужно управлять DBGrid (или ListView) Решение: 1. установка ширины колонок (JavaScript) ![]() ![]() ListView1.getTableColumnModel().setColumnWidth(0,250); ListView1.getTableColumnModel().setColumnWidth(1,250); DBGrid1.getTableColumnModel().setColumnWidth(0,1); // скрывема колонку путём установки ширины=1 2. добавить значения в ListView ![]() ![]() var rowData = []; rowData = tableModel.getData(); rowData.push(['111', '222','333']); tableModel.setData(rowData); ListView1.getTableModel().setColumnEditable(0, true); // сделать колонку редактируемой ListView1.getTableModel().setColumnEditable(1, true); ListView1.getTableModel().setColumnEditable(2, true); 3. ПОСЧИТАТЬ СУММУ некоторой колонки ![]() ![]() var totcases=1*0 ,totsale=1*0 var model = dbgrid.getTableModel(); var rowCount = model.getRowCount(); for(var row = 0; row < rowCount; row ++ ) { var order=parseInt(model.getValue(5,row)); if (order != model.getValue(5,row)) order=0; var multi=parseInt(model.getValue(10,row)); if (multi != model.getValue(10,row)) multi=1; var price=parseFloat(model.getValue(6,row)); if (price != model.getValue(6,row)) price=0; totcases+=order; totsale+=parseInt(order*multi*price*100)/100; } 4. ПОЛУЧИТЬ ЗНАЧЕНИЕ ЯЧЕЙКИ ![]() ![]() var row = dbgrid1.getFocusedRow(); var col = dbgrid1.getFocusedColumn(); var value=dbgrid1.getTableModel().getValue(col,row); alert('col = '+col+' row = '+row+' cell = '+value); 5. ДИНАМИЧЕСКИ ПРОПИСАТЬ КОЛОНКИ ![]() ![]() function Unit306BeforeShow($sender, $params) { $prop=array(); $prop['products']['products_id']=array('displaylabel'=>array('ID')); $prop['products']['products_quantity']=array('displaylabel'=>array('Quantity')); $this->dboscommerce1->DictionaryProperties=$prop; } 6. ЧАСТО ИСПОЛЬЗУЕМЫЕ МЕТОЫ ![]() ![]() var row = dbgrid.getFocusedRow(); var column = dbgrid.getFocusedColumn(); var value=dbgrid.getTableModel().getValue(col,row); dbgrid.getTableModel().setValue(col,row,value); dbgrid.sortByColumn (col, true); dbgrid.setFocusedCell(col, row, true); dbgrid.getSelectionModel().setSelectionInterval(row, row); 7. ПРИМЕР ПРОГРАММЫ КОТОРАЯ ДЕЛАЕТ ПОИСК ПО DBGRID (проверено, работает) ![]() ![]() function jsDBGfindtext(model,thetext,startingRow,column) { //zips thru a dbgrid to find something var rowCount = model.getRowCount(); for(var row = startingRow; row < rowCount; row ++ ) { var desc = model.getValue(column,row); if (typeof(desc)=="number") desc=desc.toString(); if (typeof(thetext)=="number") thetext=thetext.toString(); desc = desc.toUpperCase(); thetext = thetext.toUpperCase(); if ( desc.indexOf(thetext)>=0) return (row); } return (-1); } //the calling routine from a basic edit function EsearchdbgridJSKeyUp($sender, $params) { ?> var lookfor = findObj('Esearchdbgrid').value; if (lookfor.length < 2) startRow = 0; if (lookfor.indexOf(' ',0)) //use space bar as a look for next occurrence. { var look = lookfor.split(' '); lookfor=look[0]; } if (typeof(startRow)=='undefined') startRow=-1; startRow++; startRow=jsDBGfindtext(dbgrid.getTableModel(),lookfor,startRow,4); if (startRow>-1) { dbgrid.setFocusedCell(5, startRow, true); dbgrid.getSelectionModel().setSelectionInterval(startRow, startRow); } <?php } |
![]() |
Сообщ.
#26
,
|
|
Задача:
Передать содержимое панели(или другого элемента) в другую (копировать) Решение: - ставим на форму панель с чем то - ставим компонент Window1 - на Window1 ставим другую панель и кнопкой в javascripte передаём содержимое в окно Window1 ![]() ![]() document.getElementById("PanelBig_outer").innerHTML = document.getElementById("PanelPowerShow_outer").innerHTML Window1.open(); |
![]() |
Сообщ.
#27
,
|
|
Проблема:
В 1-й версии DelphiForPhp у компонента Query в редакторе колонок нет кнопок переместить колонки вверх, вниз. Это неудобно т.к. если нужно поменять их порядок то приходится перенабирать всё по новой. Решение: Взять 2-й DelphiForPhp (можно демо) и заменить у первого папку Program Files\CodeGear\Delphi for PHP\1.0\plugins на аналогичную от второго (там эти кнопки есть) IDE перезапустить здесь хранятся плагины редакторов свойств компонент, которые можно писать самостоятельно в Delphi (не на Delphi 7, а нужна версия выше) |
![]() |
Сообщ.
#28
,
|
|
в дополнение к FAQ (сообщение #2344473)
Проблема: При добавлении в шаблон SmartyTemplate компонент, которые построены на qx например: TreeView скролл пропадает и не появляется даже с кодом указанным в сообщении FAQ (сообщение #2344473) Решение: ![]() ![]() function mainAfterShow($sender, $params) { // FIX for Qadram's Scrollbar cockup!! ?> <script language="JavaScript" type="text/javascript"> var d = qx.ui.core.ClientDocument.getInstance(); d.setOverflow("auto"); </script> <?php } |
![]() |
Сообщ.
#29
,
|
|
Задача:
В шаблон SmartyTemplate добавить переменную, которая отсутствует как компонент на форме но которую нужно заполнить каким либо значением Решение: вариант шаблона: ![]() ![]() <html> <head> <title>{%$xCaption%}</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body> <table id="mytab" cellspacing="1" cellpadding="1" width="100%" border="1"> <tbody> <tr height="66"> <td> 5678</td> <td> {%$xtemp%}</td> <td> </td> </tr> <tr height="15"> <td> </td> <td> </td> <td> </td> </tr> </tbody> </table> </body> </html> код модуля php (событие onTemplate): ![]() ![]() function Unit5Template($sender, $params) { $template=$params['template']; $template->_smarty->assign('xtemp','1234567890'); $template->_smarty->assign('xCaption','MyTitle'); } |
![]() |
Сообщ.
#30
,
|
|
Проблема:
При подключении к SmartyTemplate некоторых компонент (решение не для всех компонент), например Panel,Label... нужно что бы они растягивались по контейнеру в который входят, например по размеру тега <td>, однако, они туда вставляются с шириной и высотой которую имеют на форме в дизайнере форм. Установка ширины или высоты в инспекторе объектов разрешается только в виде целых чисел, т.е. 100% не проходит. Как сделать 100% ? Решения: 1.Решение 1 - форме на которой находятся компоненты установить Layout.Type = FLOW_LAYOUT - дать команду конкретному компоненту writeAdjustToLayout(True) (по умолчанию там значение False) в этом случае при генерации компонента подставляются не установленные у него на форме высота и ширина, а height:100%;width:100%; ![]() ![]() function Unit9BeforeShow($sender, $params) { $this->Label1->writeAdjustToLayout(True); $this->Panel1->writeAdjustToLayout(True); $this->Button1->writeAdjustToLayout(True); } при этом панель растягивается по тегу в котором находится а Label1 и Button по ширине тега, высота подстраивается под содержимое файл unit1.tpl ![]() ![]() <html> ..... <body> {%$StartForm%} <table width=100% border=1> <tr><td width="150" height="200">{$Panel1}</td><td></td></tr> <tr><td width="150"></td><td></td></tr> <tr><td width="150" height="200">{$Label1}</td><td height="200">{$Button1}</td></tr> {%$EndForm%} </body> </html> если посмотреть код html полученной страницы, то видим следующее: (для вышеприведённого шаблона) ![]() ![]() <html> <body> <form style="margin-bottom: 0" id="Unit9" name="Unit9" method="post" action="/unit9.php"> <table width=100% border=1> <tr><td width="150" height="200"><div id="Panel1_outer"> <table id="Panel1_table" width="100%" height="100%" border="0" cellpadding="0" cellspacing="0" bgcolor="#00FF00" style=" border: 0px solid ; " > <tr> <td style=" font-family: Verdana; font-size: 10px; "><span style=" font-family: Verdana; font-size: 10px; ">Panel1</span> </td> </tr> </table> </div> </td><td></td></tr> <tr><td width="150"></td><td></td></tr> <tr><td width="150" height="200"><div id="Label1_outer"> <div id="Label1" style=" font-family: Verdana; font-size: 10px; background-color: #FF0000;height:100%;width:100%;" > Label1 seefwse we we twer twer twe wer we rwer w</div> </div> </td><td height="200"><div id="Button1_outer"> <input type="submit" id="Button1" name="Button1" value="Button1" onclick="return Button1ClickWrapper(event, document.forms[0].Button1SubmitEvent, 'Button1_Button1Click')" style=" font-family: Verdana; font-size: 10px; height:100%;width:100%;" tabindex="0" /> <input type="hidden" id="Button1SubmitEvent" name="Button1SubmitEvent" value="" /> </div> </td></tr> </form> </body> </html> 2.Решение 2 используем стили файл style.css ![]() ![]() .xx { width: 100%; height: 100%; } файл unit1.tpl ![]() ![]() <html> <link rel="stylesheet" href="style.css"> <body> {%$StartForm%} <table width=100% border=1> <tr><td width="150" height="200">{$Panel1}</td><td></td></tr> <tr><td width="150"></td><td></td></tr> <tr><td width="150" height="200">{$Label1}</td><td height="200">{$Button1}</td></tr> {%$EndForm%} </body> </html> форма в файл Unit10.php на ней Label1, Panel1, Button1 ставим маленьких размеров (что бы видно было масштабиравание) в инспекторе: Label1->Caption = 'Лучше нету того свету, Лучше нету того свету, Лучше нету того свету'; Button1->Style = .xx Unit10->TemplateEngine=SmartyTemplate Unit10->TemplateFileName=unit1.tpl |