Форум: "Основная";
Текущий архив: 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