
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.82] |
![]() |
|
Сообщ.
#1
,
|
|
|
Добрый день!
Вопрос не совсем по теме Delphi for php. Есть html-ая таблица. Необходимо чтобы по выбранной строке таблицы появлялось модальное окно. В дальнейшем в этом модальном окне планируется показывать гистограмму по данным из ячеек выбранной строки, а также в нем будут размещаться ComboBox-ы связанные с базой данных. Я сделал это на ASP.NET, а вот как на php х.з. |
![]() |
Сообщ.
#2
,
|
|
если вопрос чисто по php, то нужно задавать в форум php
если же рассматривать реализацию с использованием vcl и DelphiForPhp, то видится следующее: - делаем компонент - компонент генерирует таблицу и при этом нумеруем теги td каким нибудь образом, но так что бы потом вытащить номер строки и номер колонки(например: <td id=1_2>tram pam pam</td>) - при генерации таблицы встраиваем события onclick с нужным кодом - с помощью события onClick вытаскиваем номер td - расшифровываем номер td и вытаскиваем значение или из ячейки или делаем запрос к базе генерировать в php примерно так можно ![]() ![]() echo '<tableborder=1>'; $val1 = '111'; $val2 = '222'; echo "<tr> <td id=$val1 onclick=alert($val1);>$val1</td> <td id=$val2 onclick=alert($val2);>$val2</td> </tr>"; $val1 = '333'; $val2 = '444'; echo "<tr> <td id=$val3 onclick=alert($val3);>$val3</td> <td id=$val4 onclick=alert($val4);>$val4</td> </tr>"; echo '</table>'; для генерации html таблицы можно попробовать компонент описанный здесь FAQ (сообщение #2480688) открыть модальное окно смотрим здесь FAQ (сообщение #2507943) |
Сообщ.
#3
,
|
|
|
решен
|
Сообщ.
#4
,
|
|
|
А как открывать окна /не знаю как это правильно называется/ наподобие окон /прозвучит глупо, но пытаюсь на пальцах объяснить/ контакта, когда пишешь кому-нить сообщение. Т.е. в отличии модальных окон, эти выходят без рамки. Прошу не смеяться. =)
|
![]() |
Сообщ.
#5
,
|
|
про какую рамку разговор ?
модальное может быть с рамками и без, там смысл в другом смотри здесь так пойдёт: ставь на форму компонент Window например имя у него Window1 будет, тогда: ![]() ![]() // открыть окно function Button8JSClick($sender, $params) { ?> //Add your javascript code here Window1.show(); <?php } // закрыть окно function Button9JSClick($sender, $params) { ?> //Add your javascript code here Window1.close(); <?php } можно так ещё ![]() ![]() function PageInfoAfterShow($sender, $params) { echo "<script type=\"text/JavaScript\"> function PrintPreview() { window.open('print_report.html',null,'target=_blank,status=0,toolbar=0,scrollbars=1,menubar=1'); } </script>"; } // открыть окно function Button8JSClick($sender, $params) { ?> //Add your javascript code here PrintPreview(); <?php } |
Сообщ.
#6
,
|
|
|
С компонентом window - хорошая идея!
Но я имел ввиду немного другое, а именно это ![]() т.е. нажимаем на кнопку, страница затемняется, на передний план выходит другая форма. Вот как такое сделать в D4php. |
![]() |
Сообщ.
#7
,
|
|
Цитата Gluckodrom @ т.е. нажимаем на кнопку, страница затемняется, на передний план выходит другая форма. Вот как такое сделать в D4php. посмотри здесь Компоненты для DelphiForPhp (сообщение #2356199) там есть видео и ссылка на исходник компонента однако имеено так как ты хочеш там я не увидел, хотя очень рядом так как компонент построен на ExtJS, то нужно смотреть на сайт ExtJS вот куча примеров что он может делать http://www.extjs.com/products/js/ здесь всплывающее окно, но без затемнения http://www.extjs.com/deploy/dev/examples/window/hello.html а здесь всплывающие сообщения с затемнением http://www.extjs.com/deploy/dev/examples/message-box/msg-box.html а здесь управляют затемнением http://www.extjs.com/deploy/dev/examples/core/spotlight.html покопай в этом направлении |
Сообщ.
#8
,
|
|
|
Благодарствую за отзывчивость, но это не то. Мое упущение, что не сообщил сразу о том, что хочу видеть в этом "всплывающем" окне другую форму из D4php (все-таки визуальное программирование), а не в рантайме ее создавать.
Может есть еще варианты? |
![]() |
Сообщ.
#9
,
|
|
Цитата Gluckodrom @ а не в рантайме ее создавать как не то! ![]() всё там есть и гораздо больше как Delphi так и DelphiForPhp предполагают умение создавать компоненты вот и создавай компонент ExtJs (посмотри видео) реализует часть фукнций из одноимённой библиотеки посмотри как сделан компонент, посмотри как используется нужная функция в оригинальной библиотеке и сделай свой компонент на базе существующего ------------------------------------ С минимальными затратами времени конечно нужно было тебе этот пример докрутить там всего то перевести окно в модальный режим и покрасить основную форму в серый цвет так пойдёт ? : 1.на форме unit1 компонент Window1 и кнопка Button1 и ещё чего нибудь для демонстрации работы накидай, ну там вторую кнопку, мемо... 2. в инспекторе Winow1->Modal = true; Button1->ButtonType = btNormal; 3. в коде вариант с затемнением ![]() ![]() function Button1JSClick($sender, $params) { ?> //Add your javascript code here document.getElementById('unit1').style.background = 'gray'; // перекрашиваем форму Window1.show(); // открывем модальное окно (всё остальное блокируется пока окно открыто) <?php } function Window1JSClose($sender, $params) { ?> //Add your javascript code here document.getElementById('unit1').style.background = ''; // перекрашиваем форму назад // здесь возможно нужно восстанавличать цвет, а ранее его запоминать в какой то переменной, но в простом случае работает и так <?php } вариант где скрываем основную страницу пока отображаем модальное окно ![]() ![]() function Button1JSClick($sender, $params) { ?> //Add your javascript code here document.getElementById('unit1').style.display = 'none'; //block - отображает страницу или элемент, а none прячет Window1.show(); // открывем модальное окно (всё остальное блокируется пока окно открыто) <?php } function Window1JSClose($sender, $params) { ?> //Add your javascript code here document.getElementById('unit9').style.display = 'block'; //block - отображает страницу или элемент, а none прячет <?php } Добавлено можно ещё здесь посмотреть http://developer.co.ua/posts/view/modalnye_okna_v_veb-prilozhenijax |
Сообщ.
#10
,
|
|
|
Цитата vicis @ так пойдёт ? если так делать, на форме у меня должно быть куча window. это уже запарка. создавать в рантайме тоже неинтересно. поэтому не подходит, хотя идея прикольная. Цитата vicis @ можно ещё здесь посмотреть http://developer.co.ua/posts/view/modalnye...b-prilozhenijax не смог установить Prototype window - обидно. Ругается на то, что такой компонент уже есть, а именно тот же самый window. ModalBox тупо никак не реагирует, хотя все делал по инструкции. Prototype window и ModalBox - именно то, что нужно, т.к. в них встраиваются другие страницы (формы). |
![]() |
Сообщ.
#11
,
|
|
Цитата Gluckodrom @ если так делать, на форме у меня должно быть куча window. это уже запарка. создавать в рантайме тоже неинтересно. поэтому не подходит, хотя идея прикольная. зачем иметь кучу окон грузи туда другую форму DelphiForPhp и все дела ![]() делаем так: Если нужно в окне Windows1 открыть страницу с другого сайта (или со своего сайта другую форму) то нужно поместить на форму окно Window1, на него панель Panel1, а к панели привязать событие ![]() ![]() ..... class Unit2 extends Page { public $Panel1 = null; public $Window1 = null; function Panel1Show($sender, $params) { echo '<iframe src ="http://forums.delphi-php.net/" height="100%" width="100%"></iframe>'; // а так грузиш свою другую форму //echo '<iframe src ="Unit3.php" height="100%" width="100%"></iframe>'; } } ..... а здесь Компоненты для DelphiForPhp (сообщение #2410939) есть ссылка на уже готовый такой компонент |
Сообщ.
#12
,
|
|
|
Цитата vicis @ грузи туда другую форму DelphiForPhp и все дела Хорошее решение! Спасибо! Теперь другой вопрос, как передавать данные с формы на другую форму (ту же модальную в случае использования окон отсюда http://developer.co.ua/posts/view/modalnye...b-prilozhenijax)? В Delphi было просто, загнал форму в Uses и получил доступ к ее компонентам. В D4php загнание приводит к отображению формы. Неужели нужно передавать данные через куки, а при показе второй формы грузить из них? И еще вопрос: куда в D4php прописывать ссылки на скрипты чтобы они появились между тэгами <head></head> (нужно для юзанья тех же всплывающих окон). |
![]() |
Сообщ.
#13
,
|
|
Цитата Gluckodrom @ Теперь другой вопрос, как передавать данные с формы на другую форму почитай faq FAQ (сообщение #2347063) а ещё лучше прочитай как это делается в php Цитата Gluckodrom @ В Delphi было просто, загнал форму в Uses и получил доступ к ее компонентам здесь если загониш в uses рискуеш увидеть её на странице Цитата Gluckodrom @ И еще вопрос: куда в D4php прописывать ссылки на скрипты чтобы они появились между тэгами <head></head> ну наверное сюда ![]() ![]() function Unit1ShowHeader($sender, $params) { echo ' <meta name="author" content="Это я , это я написал этот сайт!!!"> '; } |
Сообщ.
#14
,
|
|
|
Забил на эти окна. Но все равно огромное спасибо!
Решил все-таки юзать пост из FAQ |
Сообщ.
#16
,
|
|
|
Зачем изобретать велосипед? Проще использовать модальные окна из виджетов jQuery. Правда, только в Html5 Builder. А в D4Php вроде есть компонент Window и данный выше пример там не прокатит из-за конфликта QOOXDOO с jQuery (если будут использоваться эти компоненты)
|