На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
Дорогие друзья! Поздравляем вас с днём Победы!
msm.ru
! ПРАВИЛА РАЗДЕЛА
Прежде чем задать вопрос, зайдите в раздел FAQ, возможно там уже есть ответ на него.
Если вы хотите вставить код в сообщение, то пожалуйста выделяйте его тегом [code=dfp] ... [/сode].
Для этого используйте кнопку [code=dfp] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Delphi for PHP.
Модераторы: ViktorXP, vicis
  
> Ширина объекта , в %, возможно ли?
    Здравствуйте. Изучаю потихоньку d4php. И назрел такой вопрос. Использую Template Engine - SmartyTemplate. Не могу понять, если я хочу вывести просто какой-нибудь текст в определённую часть страницы (во всю ширену), как это сделать? Такие объекты как Label и Panel имеют фиксированную ширину в пикселях. Можно ли как-нибудь сделать что бы объект занимал 100% ширины ячейки таблицы, в которой он находится?
      Цитата Urdigor @
      Такие объекты как Label и Panel имеют фиксированную ширину в пикселях. Можно ли как-нибудь сделать что бы объект занимал 100% ширины ячейки таблицы, в которой он находится?

      можно
      используй стили

      Так работает:
      файл style.css
      ExpandedWrap disabled
        .xx {
                width: 100%;
                height: 100%;
        }


      файл unit1.tpl

      ExpandedWrap disabled
        <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

      код модуля:
      ExpandedWrap disabled
        <?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();
         
        ?>



      вроде всё работает 8-)
      по сути стиль только для кнопки понадобился, остальные и так работают
      кроме высоты кнопки - там генерируется div вокруг неё и по этому высота стиля не применяется
      как убрать не знаю
      Сообщение отредактировано: vicis -
        2 vicis: Спасибо огромное, всё получилось! :) А никак нельзя это через IDE задать? Что бы лишнего кода не писать?
          Цитата Urdigor @
          А никак нельзя это через IDE задать? Что бы лишнего кода не писать?

          попробуй поиграться с этими параметрами
          FAQ (сообщение #2344474)
            ViktorXP спасибо, попробую. Хотя тоже не очень удобно..
              а где удобно ?
              где ты видел удобнее и как ты хочеш что бы оно работало ?
              кнопка по спецификации html не должна растягиваться в процентах
              однако стилями можно

              может тебе FrontPage или SharePoint больше для этого подойдёт ?
              попробуй там интрфейсную часть сделать
                Кнопки мне не нужно растягивать :) Сейчас есть необходимость растянуть Label и Panel. Удобнее я нигде не видел, да и вроде как негде увидеть :) Но было бы гораздо удобнее если бы сразу через IDE свойство Width можно было бы выставить в 100% (но там к сожалению как я понял можно задать размер только в пикселах).
                  думаю. что это можно легко решить созданием своих компонентов на базе label и panel
                  и тогда в дальнейшем вопрос этот отпадёт. но нужно будет использовать эти компоненты
                  в компонентах переопределить свойства width и height так что бы указывать можно было не только целые числа, а проценты
                  и в дальнейшем отрисовывать с помощью или стиля или вычисяь значение и присваивать в phpвнтри компонента
                    посмотрел код компонент
                    обнаружил следующее
                    если использовать SmartyTemplate
                    то можно форме на которой находятся компоненты установить Layout.Type = FLOW_LAYOUT
                    и дать команду конкретному компоненту writeAdjustToLayout(True) (по умолчанию там значение False)
                    в этом случае при генерации компонента подставляются не установленные у него на форме высота и ширина, а height:100%;width:100%;

                    делаем так:
                    ExpandedWrap disabled
                                     function Unit9BeforeShow($sender, $params)
                                     {
                                     $this->Label1->writeAdjustToLayout(True);
                                     $this->Panel1->writeAdjustToLayout(True);
                                     $this->Button1->writeAdjustToLayout(True);
                       
                       
                                     }


                    при этом панель растягивается по тегу в котором находится
                    а Label1 и Button по ширине тега, высота подстраивается под содержимое

                    если посмотреть код html полученной страницы, то видим следующее:
                    (для вышеприведённого шаблона)

                    
                    ExpandedWrap disabled
                      <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>
                      У меня при выполнении кода программы, Label увеличивается по высоте и уходит за пределы окна.
                      Как добиться появления скролинга? (Нужен скрол)
                        нужно просто форум перечитать или поиском воспользоваться
                        FAQ (сообщение #2344473)
                          Ни как не получается добавить скрол к форме. Пробовал использовать TemplateEngine и TemplateFilename, результат тотже.
                          Не хватает знаний... :wall:
                          Сообщение отредактировано: nstur -
                            у меня работает как описано в приведённой ссылке
                            браузер IE

                            1.если без шаблонов а просто использовать формы
                            прописываеш форме событие
                            ExpandedWrap disabled
                                             function Unit1JSLoad($sender, $params)
                                             {
                               
                                             ?>
                                             //Add your javascript code here
                                             d.setOverflow("scroll");
                               
                                             <?php
                               
                                             }


                            попробуй другие варианты
                            ExpandedWrap disabled
                                             document.documentElement.style.overflow = "auto";
                                               d.setOverflow("scrollY");
                                               d.setOverflow("scrollX");

                            2. для SmartyTemplate это не работает
                            нужно делать так
                            ExpandedWrap disabled
                                             function Unit8AfterShow($sender, $params)
                                             {
                                             echo '<script type=\"text/JavaScript\">
                                                    d.setOverflow("scroll");
                               
                                               // d.setOverflow("scrollY");  или эти функции
                                               // d.setOverflow("scrollX");
                               
                                                  </script>';
                               
                               
                                             }


                            правда у меня и без них скролл появляется
                            возможно у тебя там стили какие то перекрывают

                            я пробовал на простом примере шаблона
                            unit1.tpl
                            ExpandedWrap disabled
                              <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>


                            скролл появляется только если элементы страницы не влазят в браузер
                            Сообщение отредактировано: vicis -
                              У меня на форме используется TreeView, как только убрал его, скрол на форме появился.
                              А он мне нужен - с ним легче саздать необходимый дизайн.
                                этот код работает на форме вместе с TreeView
                                ExpandedWrap disabled
                                                 function Unit1JSLoad($sender, $params)
                                                 {
                                   
                                                 ?>
                                                 //Add your javascript code here
                                                 d.setOverflow("scroll");
                                   
                                                 <?php
                                   
                                                 }
                                  TemplateEngine = SmartyTemplate
                                  TemplateFilename = unit1.tpl

                                  В шаблонах ни как не идет. Где-то туплю. Без шаблона, работает все как надо...

                                  unit1.tpl
                                  ExpandedWrap disabled
                                    <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>


                                  ExpandedWrap disabled
                                    <?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();
                                    ?>
                                  Сообщение отредактировано: nstur -
                                    а что именно не так? формируются ли шаблоны в папку C:\tmp\? или может была удалена папка tmp с диска "С"?

                                    Добавлено
                                    хотя последние версия уже в виндовую темп папку ложит. тогда нужно пошарить там на наличия сформированного шаблона.
                                      C:\tmp\for_smarty_templates.txt - есть какой-то файл, но он 0Kb
                                      c:\Documents and Settings\Admin\Local Settings\Temp\ - тоже множество файлов, но ...???

                                      Пробовал другие компоненты имеющие скрол DBGrid, ListView - с ними при использоанием шаблона скрол пропадает.
                                      Memo - нет.
                                      Что-то в {%$HeaderCode%} пишется, что уничтожает скрол.?
                                        а а я подумал что шаблон вообще не формируется.

                                        Цитата nstur @
                                        Что-то в {%$HeaderCode%} пишется, что уничтожает скрол.?

                                        Нет. они в других местах отключают под себя скрол. прикол в том что при скроле+шаблоне скрол работает не корректно. (скролиш страничку а компонент на своем месте стоит)
                                          вроде нашёл для SmartyTemplate
                                          сделай так

                                          ExpandedWrap disabled
                                               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
                                            Спасибо!!!
                                            Вроде все работает.
                                            Думаю сливки, с этой ветки, надо в FAQ перебросить.
                                            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                            0 пользователей:


                                            Рейтинг@Mail.ru
                                            [ Script execution time: 0,2558 ]   [ 15 queries used ]   [ Generated: 11.05.24, 08:17 GMT ]