Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.55.42] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте. Изучаю потихоньку d4php. И назрел такой вопрос. Использую Template Engine - SmartyTemplate. Не могу понять, если я хочу вывести просто какой-нибудь текст в определённую часть страницы (во всю ширену), как это сделать? Такие объекты как Label и Panel имеют фиксированную ширину в пикселях. Можно ли как-нибудь сделать что бы объект занимал 100% ширины ячейки таблицы, в которой он находится?
|
Сообщ.
#2
,
|
|
|
Цитата Urdigor @ Такие объекты как Label и Panel имеют фиксированную ширину в пикселях. Можно ли как-нибудь сделать что бы объект занимал 100% ширины ячейки таблицы, в которой он находится? можно используй стили Так работает: файл 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 код модуля: <?php //Includes require_once("vcl/vcl.inc.php"); use_unit("styles.inc.php"); use_unit("forms.inc.php"); use_unit("extctrls.inc.php"); use_unit("stdctrls.inc.php"); //Class definition class Unit10 extends Page { public $Label1 = null; public $Panel1 = null; public $Button1 = null; function Unit10BeforeShow($sender, $params) { $this->Button1->Width = '100% '; $this->Button1->Height = '100% '; $this->Panel1->Width = '100% '; $this->Panel1->Height = '100% '; $this->Label1->Width = '100% '; $this->Label1->Height = '100% '; } } global $application; global $Unit10; //Creates the form $Unit10=new Unit10($application); //Read from resource file $Unit10->loadResource(__FILE__); //Shows the form $Unit10->show(); ?> вроде всё работает по сути стиль только для кнопки понадобился, остальные и так работают кроме высоты кнопки - там генерируется div вокруг неё и по этому высота стиля не применяется как убрать не знаю |
Сообщ.
#3
,
|
|
|
2 vicis: Спасибо огромное, всё получилось! А никак нельзя это через IDE задать? Что бы лишнего кода не писать?
|
Сообщ.
#4
,
|
|
|
Цитата Urdigor @ А никак нельзя это через IDE задать? Что бы лишнего кода не писать? попробуй поиграться с этими параметрами FAQ (сообщение #2344474) |
Сообщ.
#5
,
|
|
|
ViktorXP спасибо, попробую. Хотя тоже не очень удобно..
|
Сообщ.
#6
,
|
|
|
а где удобно ?
где ты видел удобнее и как ты хочеш что бы оно работало ? кнопка по спецификации html не должна растягиваться в процентах однако стилями можно может тебе FrontPage или SharePoint больше для этого подойдёт ? попробуй там интрфейсную часть сделать |
Сообщ.
#7
,
|
|
|
Кнопки мне не нужно растягивать Сейчас есть необходимость растянуть Label и Panel. Удобнее я нигде не видел, да и вроде как негде увидеть Но было бы гораздо удобнее если бы сразу через IDE свойство Width можно было бы выставить в 100% (но там к сожалению как я понял можно задать размер только в пикселах).
|
Сообщ.
#8
,
|
|
|
думаю. что это можно легко решить созданием своих компонентов на базе label и panel
и тогда в дальнейшем вопрос этот отпадёт. но нужно будет использовать эти компоненты в компонентах переопределить свойства width и height так что бы указывать можно было не только целые числа, а проценты и в дальнейшем отрисовывать с помощью или стиля или вычисяь значение и присваивать в phpвнтри компонента |
Сообщ.
#9
,
|
|
|
посмотрел код компонент
обнаружил следующее если использовать SmartyTemplate то можно форме на которой находятся компоненты установить 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 по ширине тега, высота подстраивается под содержимое если посмотреть код 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> |
Сообщ.
#10
,
|
|
|
У меня при выполнении кода программы, Label увеличивается по высоте и уходит за пределы окна.
Как добиться появления скролинга? (Нужен скрол) |
Сообщ.
#11
,
|
|
|
нужно просто форум перечитать или поиском воспользоваться
FAQ (сообщение #2344473) |
Сообщ.
#12
,
|
|
|
Ни как не получается добавить скрол к форме. Пробовал использовать TemplateEngine и TemplateFilename, результат тотже.
Не хватает знаний... |
Сообщ.
#13
,
|
|
|
у меня работает как описано в приведённой ссылке
браузер IE 1.если без шаблонов а просто использовать формы прописываеш форме событие function Unit1JSLoad($sender, $params) { ?> //Add your javascript code here d.setOverflow("scroll"); <?php } попробуй другие варианты document.documentElement.style.overflow = "auto"; d.setOverflow("scrollY"); d.setOverflow("scrollX"); 2. для SmartyTemplate это не работает нужно делать так function Unit8AfterShow($sender, $params) { echo '<script type=\"text/JavaScript\"> d.setOverflow("scroll"); // d.setOverflow("scrollY"); или эти функции // d.setOverflow("scrollX"); </script>'; } правда у меня и без них скролл появляется возможно у тебя там стили какие то перекрывают я пробовал на простом примере шаблона unit1.tpl <html> <body> {$StartForm} <table width=300 border=1> <tr><td width="150" height="200"></td><td></td></tr> <tr><td width="150"></td><td></td></tr> <tr><td width="150" height="200"></td><td height="200">{$Button1}</td></tr> {$EndForm} </body> </html> скролл появляется только если элементы страницы не влазят в браузер |
Сообщ.
#14
,
|
|
|
У меня на форме используется TreeView, как только убрал его, скрол на форме появился.
А он мне нужен - с ним легче саздать необходимый дизайн. |
Сообщ.
#15
,
|
|
|
этот код работает на форме вместе с TreeView
function Unit1JSLoad($sender, $params) { ?> //Add your javascript code here d.setOverflow("scroll"); <?php } |
Сообщ.
#16
,
|
|
|
TemplateEngine = SmartyTemplate
TemplateFilename = unit1.tpl В шаблонах ни как не идет. Где-то туплю. Без шаблона, работает все как надо... unit1.tpl <html> {%$HeaderCode%} <body> {%$StartForm%} <table width=300 border=1> <tr><td width="150" height="200">1</td><td>2{%$TreeView1%}</td></tr> <tr><td width="150">3</td><td>4</td></tr> <tr><td width="150" height="200">5</td><td height="200">6{%$Button1%}</td></tr> {%$EndForm%} </body> </html> <?php require_once("vcl/vcl.inc.php"); //Включаем модули use_unit("comctrls.inc.php"); use_unit("forms.inc.php"); use_unit("extctrls.inc.php"); use_unit("stdctrls.inc.php"); //Определяем класс class Unit4 extends Page { public $TreeView1 = null; public $Button1 = null; function Unit4JSLoad($sender, $params) { ?> //Добавьте ваш javascript код здесь d.setOverflow("scroll"); <?php } } global $application; global $Unit4; //Создаем форму $Unit4=new Unit4($application); //Загрузка из файла ресурсов $Unit4->loadResource(__FILE__); //Показываем форму $Unit4->show(); ?> |
Сообщ.
#17
,
|
|
|
а что именно не так? формируются ли шаблоны в папку C:\tmp\? или может была удалена папка tmp с диска "С"?
Добавлено хотя последние версия уже в виндовую темп папку ложит. тогда нужно пошарить там на наличия сформированного шаблона. |
Сообщ.
#18
,
|
|
|
C:\tmp\for_smarty_templates.txt - есть какой-то файл, но он 0Kb
c:\Documents and Settings\Admin\Local Settings\Temp\ - тоже множество файлов, но ...??? Пробовал другие компоненты имеющие скрол DBGrid, ListView - с ними при использоанием шаблона скрол пропадает. Memo - нет. Что-то в {%$HeaderCode%} пишется, что уничтожает скрол.? |
Сообщ.
#19
,
|
|
|
а а я подумал что шаблон вообще не формируется.
Цитата nstur @ Что-то в {%$HeaderCode%} пишется, что уничтожает скрол.? Нет. они в других местах отключают под себя скрол. прикол в том что при скроле+шаблоне скрол работает не корректно. (скролиш страничку а компонент на своем месте стоит) |
Сообщ.
#20
,
|
|
|
вроде нашёл для SmartyTemplate
сделай так 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 } у меня работает нашёл здесь http://forums.delphi-php.net/general-discussion/2656-fix-loss-scrollbars.html и ещё на эту тему http://forums.delphi-php.net/general-website-design/3234-cannot-display-dbgrid-using-smarty.html |
Сообщ.
#21
,
|
|
|
Спасибо!!!
Вроде все работает. Думаю сливки, с этой ветки, надо в FAQ перебросить. |