Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Вниз

Запретить снятие фокуса   Найти похожие ветки 

 
chir   (2005-01-12 02:15) [0]

Допустим есть Edit, с которого не надо снимать фокус пока текста в Edit"e нет (т.е. пока он пустой фокус должен оставаться на нем). Как это сделать?


 
Jel ©   (2005-01-12 02:39) [1]

procedure TForm1.Edit1Exit(Sender: TObject);
begin
 with (Sender as tEdit) do begin
   if Text = "" then begin
     Beep;
     SetFocus;
   end;
 end;
end;


 
chir   (2005-01-12 02:50) [2]

нет, нет.

такой механизм не подходит, т.к. фокус сначала теряется, а потом возвращается.

При потере фокуса идет запись в базу, где нельзя записывать пустоту... конечно программа завершает работу... :(

Вот в чем проблема.


 
bulkas   (2005-01-12 02:52) [3]

а трудно запретить чтоб не писала в базу если "пустота" ?


 
Jel ©   (2005-01-12 02:55) [4]


> При потере фокуса идет запись в базу

Может тогда стоит обратить внимание на DBEdit и Commit/Rollback?


 
chir   (2005-01-12 03:05) [5]

не,...
интересует именно возможность задержки фокуса либо Enable := false для всех объектов формы.

DBEdit и тому подобное не годятся.
запретить запись в базу тоже трудно...

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


 
aus   (2005-01-12 03:48) [6]

Не проверял, но может быть:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
with (Sender as tEdit) do begin
  if Text = "" then begin
    Beep;
    Abort;
  end;
end;
end;


 
ASoft   (2005-01-12 04:28) [7]

> либо Enable := false для всех объектов формы.[5]
Т.е., пока в поле не введен текст, Enable=False для каких объектов формы? Кнопки, которая осуществляет запись в базу?
Все же при выходе из поля напрямую запись в базу производить было б не желательно.
Но попробуй:
procedure TForm1.EditExit(Sender: TObject);
begin
with (Sender as TEdit) do
if Text="" then
 begin
  Message.Beep(10);
  ActiveControl:=(Sender as TEdit)
end
else
{запись данного поля в базу}
end;
end;


 
ЮЮ ©   (2005-01-12 04:30) [8]

>При потере фокуса идет запись в базу, где нельзя записывать пустоту

Прям так сама и идёт? В твоем же коде, наверное. Там и проверяй, заполнен ли едит, данные из которого ты запишешь и если нет, то и фокусируйся на нём, без записи


 
ASoft   (2005-01-12 04:44) [9]

А теперь без ошибок:
procedure TForm1.EditExit(Sender: TObject);
begin
 with (Sender as TEdit) do
  if Text="" then
   begin
    MessageBeep(10);
    ActiveControl:=(Sender as TEdit)
   end
   else
    {запись данного поля в базу}
end;


 
chir   (2005-01-12 16:23) [10]

[8] - грамотная идея.
вчера ночь. уже мозг совсем не работал... :)

ps: [6] - Abort не работал



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.037 c
3-1103201708
YurikGL
2004-12-16 15:55
2005.01.23
Access, поле Memo и null


14-1104929753
esu
2005-01-05 15:55
2005.01.23
форматировщик html кода


1-1104883532
Phantomouse
2005-01-05 03:05
2005.01.23
Вызов окна в MDI


11-1087538847
TRUF
2004-06-18 10:07
2005.01.23
EnhCombos KOL Component


14-1104751852
vecna
2005-01-03 14:30
2005.01.23
Кто какие подарки получил на НГ?! =)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский