Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.23;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
4-1102007354
grigory
2004-12-02 20:09
2005.01.23
Пометить кластер как сбойный!


14-1105145875
Kerk
2005-01-08 03:57
2005.01.23
вот.. нашел баг в форуме и клиенте...


1-1104926082
zt50
2005-01-05 14:54
2005.01.23
Переименовать файл


1-1105093809
Hadroran
2005-01-07 13:30
2005.01.23
Цветные строки в ExpressQuantumGrid


3-1103545326
ivc_andr
2004-12-20 15:22
2005.01.23
Как переустановить драйвер ODBC в Win 2000 Server?