Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Закрытие формы / 12 сообщений из 12, страница 1 из 1
26.05.2020, 12:05
    #39962121
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
Здравствуйте, подскажите как программно закрыть форму. При
Код: pascal
1.
Self.Close

выполняются события onCloseQuery и onClose, нужно чтобы форма просто закрывалась, без захода в эти события
...
Рейтинг: 0 / 0
26.05.2020, 12:20
    #39962131
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
neteurt,

зачем это нужно?
...
Рейтинг: 0 / 0
26.05.2020, 12:22
    #39962133
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
makhaon, там есть проверки которые срабатывают при закрытие, я делаю отдельную кнопку с закрытием, при нажатие которой не должно быть лишних вопросов
...
Рейтинг: 0 / 0
26.05.2020, 12:24
    #39962134
Vizit0r
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
что-то мешает в обработчике этой кнопки ставить какую-то пепеременную в true, а в OnClose проверять эту переменную?

Ну так, чтоб не чесать пяткой ухо.
...
Рейтинг: 0 / 0
26.05.2020, 12:35
    #39962150
neteurt
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
а
Код: pascal
1.
Self.Free

подойдет для моего случая?
...
Рейтинг: 0 / 0
26.05.2020, 12:48
    #39962164
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
neteurt,

Код: pascal
1.
2.
3.
4.
5.
6.
procedure TForm1.Button1Click(Sender: TObject);
begin
  OnCloseQuery := nil;
  OnClose := nil;
  Close;
end;
...
Рейтинг: 0 / 0
26.05.2020, 22:57
    #39962553
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
neteurt
Здравствуйте, подскажите как программно закрыть форму.

Self.Close

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

Подумайте немного, что будет дальше. Завтра Вам понадобятся ещё две кнопки: одна, которая должна выполнить OnCloseQuery и не выполнять OnClose, и вторая, которая должна выполнить OnClose и не выполнять OnCloseQuery. Будете просить ещё два метода закрытия формы для этих случаев? А потом узнаете про OnDestroy и количество необходимых методов вырастет до восьми?

Теперь подумайте немного о сути событийно-ориентированного программирования. То, что Вы написали, можно описать так: при выполнении таких-то условий задать пользователю такой-то вопрос, иначе не задавать. Теперь требования изменились, и нужно, чтобы в одном из случаев, когда старая логика задаёт вопрос, он не задавался. Вопрос уже Вам: что для этого нужно изменить?

alekcvp

Решение, конечно, рабочее, но из тех, что стоит по возможности избегать. Советовать его не стоит, тем более автору такого уровня. Представьте себе, во что превратится его код, если он начнёт делать в подобной манере всё более и более сложную логику.

Автору: кстати, если у Вас будет желание в одном месте кода сделать Button.Enabled := false, в другом месте кода Button.Enabled := true, а в третьем ещё что-нибудь подобное - сразу знайте, что это лажа и стопроцентный путь к говнокоду. Лучше сразу спросите, как правильно.
...
Рейтинг: 0 / 0
27.05.2020, 03:18
    #39962615
northener
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
softwarer
neteurt
Здравствуйте, подскажите как программно закрыть форму.


alekcvp

Решение, конечно, рабочее, но из тех, что стоит по возможности избегать. Советовать его не стоит, тем более автору такого уровня. Представьте себе, во что превратится его код, если он начнёт делать в подобной манере всё более и более сложную логику.

Не соглашусь на 100%, что не стоит такое решение предлагать. Оно хоть и "решение Y", но абсолютно точно отвечает на вопрос ТС.
Тем более, что никто не приставил нож к горлу ТС и не потребовал ответить зачем такое ему нужно.
...
Рейтинг: 0 / 0
27.05.2020, 03:20
    #39962617
DarkMaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
northener,

22139629

В общем - вполне нормальный путь, если знаешь, зачем это нужно.
...
Рейтинг: 0 / 0
27.05.2020, 03:56
    #39962621
northener
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
softwarer
neteurt
Здравствуйте, подскажите как программно закрыть форму.

Автору: кстати, если у Вас будет желание в одном месте кода сделать Button.Enabled := false, в другом месте кода Button.Enabled := true, а в третьем ещё что-нибудь подобное - сразу знайте, что это лажа и стопроцентный путь к говнокоду. Лучше сразу спросите, как правильно.

Ну а это утверждение я вообще не понимаю!
Такое поведение визуальных контролов более чем нормальное.
Например пока пользователь что-то не введет куда-то, кнопка должна быть недоступной для нажатия. Тем более что и пользователь это видит своими глазами.
Или вы что-то иное вспомнили?
...
Рейтинг: 0 / 0
27.05.2020, 03:59
    #39962623
northener
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
DarkMaster
northener,

22139629

В общем - вполне нормальный путь, если знаешь, зачем это нужно.

Конечно.
...
Рейтинг: 0 / 0
27.05.2020, 10:29
    #39962707
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Закрытие формы
northener
Ну а это утверждение я вообще не понимаю!

Подозреваю, имеется в виду что включаться/выключаться кнопка должна только в одном месте (процедуре), чтобы не приходилось потом по всем исходникам искать почему она выключена, если должна быть включена и т.п...
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Закрытие формы / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]