+ Ответить в теме
Показано с 1 по 21 из 21
  1. #1

    Как из функции запретить закрытие формы?

    И так...нужно чтобы при запросе на закрытие выполнялась функция которая запрещала закрытие формы.
    Про событие "Запрос на закрытие" знаю, переменная $canClose мне тоже известна)) проблема в том, что такой способ не сработает, если значение переменной $canClose присваивать из функции, вот такие пироги...
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  2. #2
    В функцию $canClose = false;
    в запросе на закрытие myFunc1();
    Последний раз редактировалось Карпатов Олег; 04.02.2012 в 19:46.

  3. #3
    Цитата Сообщение от Карпатов Олег Посмотреть сообщение
    В функцию $canClose = false
    в запросе на закрытие myFunc1();
    Оно не будет так работать!
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  4. #4
    Мастер Аватар для kazer_xxx
    Регистрация
    08.01.2011
    Адрес
    Копейск
    Сообщений
    1,148
    Надо использовать указатели
    UPD:
    Для 2.x версии
    Вложения
    Последний раз редактировалось kazer_xxx; 04.02.2012 в 19:54.
    Как хочу быть красненьким и с надписью "Админ"

  5. Пользователь сказал cпасибо:

    Let4ik_Russia (04.02.2012)

  6. #5
    Спасибо, вроде то что нужно, где можно узнать о них (указателях) подробнее? просто ни разу с этим не сталкивался
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  7. #6
    Мастер Аватар для kazer_xxx
    Регистрация
    08.01.2011
    Адрес
    Копейск
    Сообщений
    1,148
    Цитата Сообщение от Let4ik_Russia Посмотреть сообщение
    Спасибо, вроде то что нужно, где можно узнать о них (указателях) подробнее? просто ни разу с этим не сталкивался
    Я тоже раньше о них ни сном, ни духом, но потом вычитал про них в книжке по C/C++, и стал применять в свои проектах.http://php.su/learnphp/?re
    Последний раз редактировалось kazer_xxx; 04.02.2012 в 20:16.
    Как хочу быть красненьким и с надписью "Админ"

  8. Пользователь сказал cпасибо:

    Let4ik_Russia (04.02.2012)

  9. #7
    Админ Аватар для vGhost
    Регистрация
    27.07.2011
    Адрес
    Самара
    Сообщений
    2,033
    Я терпеть ненавижу php.su за то что у них документация не всегда верная и часто вводит в заблуждение, она не обновляется и не соответствует действительности, по этому я рекомендую более хорошую и полную, а главное официальную доку по этой теме: http://www.php.net/manual/ru/language.references.php

    __________________________________________________ ________
    Угу, угу... А потом достал из морозильной камеры - и степлером его, степлером!
    Для новичков
    __________________________________________________ ________
    Я практически совсем не задаю вопросов, не думали почему? Потому что я пользуюсь поиском и всегда нахожу ответы на свои вопросы!

  10. 2 пользователя(ей) сказали cпасибо:

    kazer_xxx (04.02.2012), Let4ik_Russia (04.02.2012)

  11. #8
    Блин, не удобно получается...при таком раскаладе надо в функцию передавать параметр, а если создавать событие с помощью функции set_event, там как раз таки и низя параметр указать(
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  12. #9
    Админ Аватар для vGhost
    Регистрация
    27.07.2011
    Адрес
    Самара
    Сообщений
    2,033
    Значит что то не правильно делаете, код в студию, как set_event, так и самой ф-и. А также укажите версию ds

    __________________________________________________ ________
    Угу, угу... А потом достал из морозильной камеры - и степлером его, степлером!
    Для новичков
    __________________________________________________ ________
    Я практически совсем не задаю вопросов, не думали почему? Потому что я пользуюсь поиском и всегда нахожу ответы на свои вопросы!

  13. #10
    Цитата Сообщение от vGhost Посмотреть сообщение
    Значит что то не правильно делаете, код в студию, как set_event, так и самой ф-и. А также укажите версию ds
    PHP код:
    set_eventc('FUpDate')->self'onCloseQuery''LockCloseForm(&$canClose)' ); //Вот тут ошибка ))

    Function LockCloseForm(&$canClose)
    {
        
    $canClose False;

    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  14. #11
    Админ Аватар для vGhost
    Регистрация
    27.07.2011
    Адрес
    Самара
    Сообщений
    2,033
    Цитата Сообщение от Let4ik_Russia Посмотреть сообщение
    PHP код:
    set_eventc('FUpDate')->self'onCloseQuery''LockCloseForm(&$canClose)' ); //Вот тут ошибка ))

    Function LockCloseForm(&$canClose)
    {
        
    $canClose False;

    Первая ошибка, вы забыли $self
    Второе, в 2.0.0.9 это не будет работать, надо так:

    PHP код:
    set_eventc('FUpDate')->self'onCloseQuery''LockCloseForm' );

    Function 
    LockCloseForm($self, &$canClose)
    {
        
    $canClose False;
        
    __setVarEx($canClose);
        Return 
    $canClose;


    __________________________________________________ ________
    Угу, угу... А потом достал из морозильной камеры - и степлером его, степлером!
    Для новичков
    __________________________________________________ ________
    Я практически совсем не задаю вопросов, не думали почему? Потому что я пользуюсь поиском и всегда нахожу ответы на свои вопросы!

  15. #12
    Скрытый текст:
    Цитата Сообщение от vGhost Посмотреть сообщение
    Первая ошибка, вы забыли $self
    Второе, в 2.0.0.9 это не будет работать, надо так:

    PHP код:
    set_eventc('FUpDate')->self'onCloseQuery''LockCloseForm' );

    Function 
    LockCloseForm($self, &$canClose)
    {
        
    $canClose False;
        
    __setVarEx($canClose);
        Return 
    $canClose;



    К сожалению не работает:
    Fatal error: Only variables can be passed by reference in ....
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  16. #13
    Админ Аватар для vGhost
    Регистрация
    27.07.2011
    Адрес
    Самара
    Сообщений
    2,033
    Цитата Сообщение от Let4ik_Russia Посмотреть сообщение
    К сожалению не работает:
    А, да, да, всё правильно, ошибся, не из той DS проекта скопипастил, вот:
    PHP код:
    Function LockCloseForm($self$canClose False

    __________________________________________________ ________
    Угу, угу... А потом достал из морозильной камеры - и степлером его, степлером!
    Для новичков
    __________________________________________________ ________
    Я практически совсем не задаю вопросов, не думали почему? Потому что я пользуюсь поиском и всегда нахожу ответы на свои вопросы!

  17. #14
    Прекрасно)) Спасибо большое от души, Вы мне помогли много проблем решить))

    А вот про этот момент можете подробнее рассказать?
    PHP код:
    __setVarEx(); 
    Последний раз редактировалось Let4ik_Russia; 04.02.2012 в 21:58.
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  18. #15
    А еще интересует такой момент, существует ли такой метод, который запрещает закрытие формы по ее имени? ну что то вроде c("Form1")->NotClose? чтобы можно было из любого места в программе управлять закрытием той или иной формы
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  19. #16
    Супер Модератор Аватар для xsnakes
    Регистрация
    14.03.2010
    Адрес
    Пятигорск
    Сообщений
    2,295
    Делаешь дополнительную проверку имени формы! Но и надо знать где писать! А узнаешь, если поймёшь логику!
    PHP код:
    if($form->name == "form1"){
     
    // закрываем

    Как же много геморроя... Кашу какую-то варишь... Всё можно сделать проще, если знать, что ты там делаешь....

  20. #17
    Цитата Сообщение от xsnakes Посмотреть сообщение
    Как же много геморроя... Кашу какую-то варишь... Всё можно сделать проще, если знать, что ты там делаешь....
    Дак все просто...у меня при появлении формы выполняется функция копирования директории выбранной пользователем, форма открывается модально, я пытаюсь сделать проверку если функция выполняется, то форму закрыть низя ни каким способом, как только функция закончила выполняться, форма может закрыться..мне не хочется делать для каждой формы отдельную функцию, поэтому и вопросы появляются))

    UPD: я вполне уверен что истина где то рядом, вот я ее и ищу)
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  21. #18
    Супер Модератор Аватар для xsnakes
    Регистрация
    14.03.2010
    Адрес
    Пятигорск
    Сообщений
    2,295
    оО зачем отдельную функцию? В каждой форме пиши одну и туже функцию запрета закрытия формы!

  22. #19
    Цитата Сообщение от xsnakes Посмотреть сообщение
    оО зачем отдельную функцию? В каждой форме пиши одну и туже функцию запрета закрытия формы!
    а зачем мне писать почти одно и то же несколько раз? а если у меня 10 форм, а если больше?

    UPD: В общем суть задумки в том чтобы программа сама решала можно закрыть форму или нет, в зависимости от статуса (Выполняется или завершена) какой либо функции. Статус функции можно указать в любой переменной. а при запросе на закрытие формы мы узнаем какая форма у нас активна, проверяем перееменную в которой находится статус функции и делаем вывод можно закрыть или нет.
    Последний раз редактировалось Let4ik_Russia; 05.02.2012 в 11:47.
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

  23. #20
    Супер Модератор Аватар для xsnakes
    Регистрация
    14.03.2010
    Адрес
    Пятигорск
    Сообщений
    2,295
    А что ты хотел? Надож им сказать, чтобы они делали что-то!
    Вот поэтому существует динамика! В DS3 делается так:
    PHP код:
    c("Form1")->onCloseQuery = function(){myFunc1(&$canClose);};
    c("Form2")->onCloseQuery = function(){myFunc1(&$canClose);};
    c("Form3")->onCloseQuery = function(){myFunc1(&$canClose);};
    c("Form4")->onCloseQuery = function(){myFunc1(&$canClose);}; 
    Назначаешь события формам!
    Но тут хз работать будет или нет, там ещё колдовать надо! Быть можт так надо писать...
    PHP код:
    c("Form1")->onCloseQuery = function(&$canClose){myFunc1(&$canClose);}; 

  24. #21
    Собственно вот чего я добивался, получилось не очень изящно, нужно максимально оптимизировать
    Жмете на кнопку "Старт" статус функции меняется на 'running', соответственно программу вы не закроете, нажмете "Стоп" сможете закрыть программу.
    А теперь к чему все это делалось: Теперь я могу в одной функции описать действия для каждой формы проекта, а так же можно запретить или разрешить закрытие формы в зависимости от значения переменной, еще + в том что если много форм, то можно в цикле назначить им это событие. Спасибо vGhost...
    Вложения
    http://pxeboot.narod.ru/
    Использую DevelStudio version 2.0.0.9 plus

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения