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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.04.2010, 15:30   #1
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию Проблемка с ModalResult

Здравствуйте. Подскажите как исправить?

2 кнопки - Ок и Отмена. По ок считываются данные из edita. Пробоема в том, что если edit пустой, то сообщение выскакивает, что edit пуст, но далее окошко закрывается. Вот мне надо сделать так, чтобы после предупреждения о пустоте edita окно не закрывалось, пока не нажмёшь отмену или edit перестанет быть пустым.

Пробовал через CanClose, но тогда через крестик на форме не зактрывается, А надо чтобы крестик или отмена закрывала.
И при ОК тоже закрывалась, но если edit не пуст...

Как поступить?
Arkuz вне форума Ответить с цитированием
Старый 21.04.2010, 16:11   #2
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию

Код:
if Edit1.Text<>'' then
begin
....
Form.Close;
end else
begin
....
end;
nXs вне форума Ответить с цитированием
Старый 21.04.2010, 16:26   #3
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

стоит modal result, форма всегда сама завкрывается при нажатии на кнопку, которая имеет свойство modal result. Ваш код для моего случая не нужен
Arkuz вне форума Ответить с цитированием
Старый 21.04.2010, 16:32   #4
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Уберите у формы кнопку закрыть ("крестик"), можно через свойства формы.
И уже когда нажимаете на кнопку Ok или Отмена там делаете проверку, если поле пустое то выводим сообщение иначе записываем данные и, например, закрываем форму.

А если так нужен крестик закрытия, то делаем кнопку самостоятельно с данной пиктограммой и там прописываем наше условие закрытия.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.

Последний раз редактировалось ArtInt; 21.04.2010 в 16:35.
ArtInt вне форума Ответить с цитированием
Старый 21.04.2010, 17:48   #5
Arkuz
Форумчанин
 
Аватар для Arkuz
 
Регистрация: 22.09.2007
Сообщений: 540
По умолчанию

ясно, спасибо.
Arkuz вне форума Ответить с цитированием
Старый 22.04.2010, 00:19   #6
пауэрлифтинг
Заблокирован
 
Регистрация: 11.12.2009
Сообщений: 133
По умолчанию

if Edit1.Text<>'' then
showmessage('едит пуст')
else ModalResult:=idok
пауэрлифтинг вне форума Ответить с цитированием
Старый 22.04.2010, 06:38   #7
Andrei
Форумчанин
 
Регистрация: 20.06.2007
Сообщений: 270
По умолчанию

Пишите процедуру на событие OnCloseQuery вашей формы что-то наподобии:

Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 CanClose := False;
 if length(lblEditName.Text) > 0 then CanClose := true  
 else ShowMessage('едит1 пуст');
end;
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько?

(с) Библия. Вольный перевод с древнееврейского.
Andrei вне форума Ответить с цитированием
Старый 22.04.2010, 17:25   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Код:
procedure Tform.buttonOkclick(sender: TObject);
begin
if edit1.text<>'' then
//  modalresult:=mrok
else 
  modalresult:=mrnone;
end;
Код:
// для события Edi1.onchnage
procedure Tform.Editchnage(sender: TObject);
begn // на кнопку нельзя будет нажать пока в edit1 ничего нет
  self.buttonOk.enabled:=(self..edit1.text<>'');
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 22.04.2010 в 17:30.
evg_m вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПРОБЛЕМКА Kirill99 Помощь студентам 8 19.04.2010 18:51
DoClose и ModalResult selenux Общие вопросы Delphi 2 17.02.2010 16:05
Проблемка Lacrimoso Общие вопросы C/C++ 11 24.09.2009 23:14
проблемка lucky Паскаль, Turbo Pascal, PascalABC.NET 1 12.05.2009 22:32