Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2012, 09:26   #1
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию отменить действие кнопки else

кнопка работает с ДБедит, при нажатии которой заполненный дб вводит имя в базу, если же его забыли заполнить вылазиет сообщение что запонить и только потом можно будет приступить.

Цитата:
begin
if DBEdit1.Text='' then
Application.MessageBox('Необходимо заполнить поле для имени',
'Внимание!', MB_ICONINFORMATION or MB_OK);
else
подскажите, что написать после елсе, чтобы если дб='' кнопка не запускала процессы за которые она отвечает, но работала когда поле будет заполнено. сообщение у меня вылазиет. но дейсвтия всё равно начинаются
m1zantrop вне форума Ответить с цитированием
Старый 09.06.2012, 09:34   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
if DBEdit1.Text = '' then
begin
Application.MessageBox('Необходимо заполнить поле для имени', 'Внимание!', MB_ICONINFORMATION or MB_OK);
Exit;
end;
// Запись в БД
Shouldercannon вне форума Ответить с цитированием
Старый 09.06.2012, 09:36   #3
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Код:
if DBEdit1.Text = '' then
begin
Application.MessageBox('Необходимо заполнить поле для имени', 'Внимание!', MB_ICONINFORMATION or MB_OK);
Exit;
end;
// Запись в БД
спасибо, но в таком случае не будет вылезать сообщение. и пользователь может не понять, чего от него хотят
m1zantrop вне форума Ответить с цитированием
Старый 09.06.2012, 09:37   #4
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

а, вот теперь всё) спасибо
m1zantrop вне форума Ответить с цитированием
Старый 09.06.2012, 09:38   #5
BARNEY
Участник клуба
 
Регистрация: 23.04.2009
Сообщений: 1,058
По умолчанию

ну если коротко и с этим куском кода и с маленьким извращением, тогда процедура не прерывается

Код:
begin
if DBEdit1.Text='' then
begin
Application.MessageBox('Необходимо заполнить поле для имени',
'Внимание!', MB_ICONINFORMATION or MB_OK);
while DBEdit1.Text='' do
begin
application.procesmesan... //чёто там
end
end
else
Если вам человек помог, не стесняйтесь говорить спасибо (весы под аватаром)
BARNEY вне форума Ответить с цитированием
Старый 09.06.2012, 10:23   #6
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

допёр, пользователь же может на крестик нажать и всё, как и это предотвратить? подскажите пожалуйста. чтобы при нажатии на крестик, тоже самое вылазило. типо пока не заполнишь поле и не подтвердишь нажатием кнопки, выйти нельзя
m1zantrop вне форума Ответить с цитированием
Старый 09.06.2012, 10:49   #7
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Обрабатывай Form.OnClose:
Код:
procedure Form1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if Trim(DBEdit1.Text) = '' then begin
      Application.MessageBox('Заполните имя', 'Внимание', MB_OK or MB_ICONSTOP);
      DBEdit1.SetFocus();
      Action := caNone;
   end;
end;
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 09.06.2012, 10:57   #8
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

Цитата:
Сообщение от ych_del Посмотреть сообщение
Обрабатывай Form.OnClose:
Код:
procedure Form1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   if Trim(DBEdit1.Text) = '' then begin
      Application.MessageBox('Заполните имя', 'Внимание', MB_OK or MB_ICONSTOP);
      DBEdit1.SetFocus();
      Action := caNone;
   end;
end;
спасибо. а используя этот код

Цитата:
begin
if messagedlg('Вы действительно хотите выйте из программы?,
mtconfirmation, [mbYes, mbNo], 0) = mrNo then
canclose := false;
end;
можно как нибудь ес и ноу заменить на да и нет?)
m1zantrop вне форума Ответить с цитированием
Старый 09.06.2012, 11:05   #9
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Не использовать MessageDlg, а юзать MessageBox. В твоем случае - так:

Код:
if Application.MessageBox('Вы действительно хотите выйте из программы?', PChar(Application.Title), MB_YESNO or MB_ICONQUESTION) = mrNo
then CanClose := False;
Или даже вот так:

Код:
begin
   CanClose := Application.MessageBox('Вы действительно хотите выйте из программы?', PChar(Application.Title), MB_YESNO or MB_ICONQUESTION) = mrYes;
end;
Вообще, почитай хелп про MessageBox - с ним работать существенно удобнее.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 09.06.2012, 11:09   #10
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

спасибо =)
m1zantrop вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отменить сортировку в NextGrid George2010 Компоненты Delphi 3 09.01.2011 16:34
Можно ли отменить последние действие? casio23 Общие вопросы Delphi 4 29.12.2010 19:16
Отменить предыдущее действие на канве rubik Общие вопросы Delphi 4 19.04.2010 22:52
Как отменить поток RIO Общие вопросы Delphi 11 12.10.2009 00:29
Действие для кнопки segail Microsoft Office Excel 7 25.07.2009 19:04