![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка поля на обязательность [D5]
segor © (2004-08-13 09:56:00)Надо вместо стандартного сообщения типа "Field ... must have a value" выводить свое сообщение (до Post).
пробовал
for i := 0 to FieldCount - 1 do
begin
Fields[i].OnValidate := doValidate;
end;
procedure TVocEditClass.doValidate(Sender : TField);
begin
if Sender.Required
then raise Exception.Create('Не введено значение в поле!!!');
inherited;
end;
ни херась не выводит. все по старому.
HELP!!!
Ega23 (2004-08-13 10:40:00) [1]а если default поставить? :о)
Lvitaliy (2004-08-13 10:38:00) [2]попробуй BEFORE POST
46_55_41_44 (2004-08-13 10:38:00) [3]Ну ты же сам создаешь их... то есть прописываешь их создание...
так вот...
Можно так
for i := 0 to form1.ComponentCount -1 do
begin
if (form1.Components[i] is Tedit) then //например
if (form1.Components[i] as Tedit).Text = '' then
...
end;
segor (2004-08-13 10:34:00) [4]сообразил
до вызова post делаем
for i := 0 to FieldCount - 1 do
begin
if Fields[i].Required and (Fields[i].Value = null)
then
begin
Fields[i].FocusControl;
raise Exception.Create(format('Не введено значение в поле [%s]!!!' ,[Fields[i].FieldName]));
end;
end;
segor (2004-08-13 10:30:00) [5]формы на которых редактируются значения полей - создаются динамически
доступа к компонентам на форме нет.
есть только TDataset, который редактируется и его метод post
46_55_41_44 (2004-08-13 10:27:00) [6]Вот пример того как я это делаю...
Пишу функцию
function InitVal: Boolean;
begin
Result := False;
if DelRSpace(edt_ID.Text) = '' then
begin
MessageBox(Application.Handle, PChar('Please fill ID field!'), PChar('Error'), MB_ICONEXCLAMATION);
edt_ID.SetFocus;
Exit;
end;
... //все остальные условия
Result := True;
end;
...
а затем...
procedure Tform1.btn_saveClick(Sender: TObject);
begin
if Not InitVal then
exit;
...
end;
работает нормально... все довольны )))
46_55_41_44 (2004-08-13 10:24:00) [7]Слушай я например несколько лет подряд пищу вещи такого типа...
и в чем траблы не понятно..
Ты же ведь сам например даешь ExecSql или Table.Append ..
так вот перед этим и проверяй условия заполнения полей... ведь значения, которые ты будешь давать этим полям юзер наверно должен заполнить во всяких там TEdit, TCurrencyEdit или TCombobox... проверяй просто до ExecSql или Append...
Мне честное слово не понятно в чем проблемы!!
segor (2004-08-13 10:19:00) [8]то можно определить тип исключения
он будет что то вроде databaseerror
а таких может быть скока угодно, не обязательно то что мне нада
DenK_vrtz (2004-08-13 10:11:00) [9]>segor
а если подумать? :)
segor (2004-08-13 10:07:00) [10]в Application Exception's бывают разные
определить что именнно не введено значение - нельзя
DenK_vrtz (2004-08-13 10:02:00) [11]Application.OnException
Application.ShowException