Главная страница
    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.047 c
6-1099476097
vic_vm
2004-11-03 13:01
2005.01.23
Контроль правильности открытия страницы в WebBrowser


3-1103623973
juice
2004-12-21 13:12
2005.01.23
Кодировки, русские символы


6-1099557535
AngelOKES
2004-11-04 11:38
2005.01.23
Socket и отправка файла в обе стороны


4-1102049336
dr Tr0jan
2004-12-03 07:48
2005.01.23
Недокументированные виды хуков: WH_HARDWARE


1-1105039721
Raider
2005-01-06 22:28
2005.01.23
Как изменить цвет одной строки в RichEdit е, и в ListView е ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский