Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проверить едиты на заполнение и вывести MessageDl, как реализовать  
:(
    Опции темы
kovalenko123
Дата 22.7.2008, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Привет всем программистам как реализовать проверку едитов чтоб для каждого не заполненного выводилось сообшение и чтоб этот едит еше покрасился в другой цвет Заранее спасибо.

Код

if (sEdit1.text='') then MessageDlg ('Заполни Edit1!', mtWarning, [mbOK], 0) or
   (sedit2.text='') then MessageDlg ('Заполни Edit2!', mtWarning, [mbOK], 0)
else
 with Adotable1 do Begin
  insert;
    FindField('1').AsString:=sEdit1.Text;
    FindField('2').AsString:=sEdit2.Text;

          Post;         
 


на этот код  он ругается на then во втором едите; 
PM MAIL ICQ   Вверх
strikerok
Дата 22.7.2008, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.6.2008
Где: Ekaterinburg

Репутация: нет
Всего: нет



Код


if (sEdit1.text='') then MessageDlg ('Заполни Edit1!', mtWarning, [mbOK], 0);
if (sedit2.text='') then MessageDlg ('Заполни Edit2!', mtWarning, [mbOK], 0);
 with Adotable1 do Begin
  insert;
    FindField('1').AsString:=sEdit1.Text;
    FindField('2').AsString:=sEdit2.Text;
          Post;   


Это сообщение отредактировал(а) strikerok - 22.7.2008, 21:43
PM MAIL WWW ICQ Skype   Вверх
kovalenko123
Дата 22.7.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



strikerok  он должен вывести сообшение и покрасить едит в красный цвет например 

а где else он же без него будет в базу записывать (пустые строки) 
ставлю else он опять ругается на then как быть ?? 

Это сообщение отредактировал(а) kovalenko123 - 22.7.2008, 21:48
PM MAIL ICQ   Вверх
strikerok
Дата 22.7.2008, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.6.2008
Где: Ekaterinburg

Репутация: нет
Всего: нет



Код

if (sEdit1.text='') then 
 begin 
  MessageDlg ('Заполни Edit1!', mtWarning, [mbOK], 0);
  Edit1.Color:=clRed; // это красный цвет, остальные цвета посмотри в свойстве Color
 end;
if (sedit2.text='') then
 begin
  MessageDlg ('Заполни Edit2!', mtWarning, [mbOK], 0);
  Edit2.Color:=clRed;
 end;
  
with Adotable1 do Begin
 insert;
  FindField('1').AsString:=sEdit1.Text;
  FindField('2').AsString:=sEdit2.Text;
     Post; 


Добавлено через 2 минуты и 31 секунду
Цитата(kovalenko123 @ 22.7.2008,  21:41)
strikerok  он должен вывести сообшение и покрасить едит в красный цвет например 

а где else он же без него будет в базу записывать (пустые строки) 
ставлю else он опять ругается на then как быть ??

Почему не будет, должен записать. Потому что после проверки if если в поле Едит чтото записано то выполнится следующее действие, а следующим действием является записать содержимого поля в таблицу)))

Добавлено через 4 минуты и 8 секунд
ааа я тоже чето намудрил, щас подожди подумаю )))
PM MAIL WWW ICQ Skype   Вверх
kovalenko123
Дата 22.7.2008, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: 1
Всего: 1



Все спасибо огромное там еше тока  два else добавить надо после  endov и получиться "крутой код" с проверкой; 
Еше Раз спасибо 
PM MAIL ICQ   Вверх
strikerok
Дата 22.7.2008, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 3.6.2008
Где: Ekaterinburg

Репутация: нет
Всего: нет



Код


if (sEdit1.text='') then 
 begin 
  MessageDlg ('Заполни Edit1!', mtWarning, [mbOK], 0);
  Edit1.Color:=clRed; // это красный цвет, остальные цвета посмотри в свойстве Color
 end
else
 if (sedit2.text='') then
  begin
   MessageDlg ('Заполни Edit2!', mtWarning, [mbOK], 0);
   Edit2.Color:=clRed;
  end
else
 begin
   
  with Adotable1 do Begin
   insert;
    FindField('1').AsString:=sEdit1.Text;
    FindField('2').AsString:=sEdit2.Text;
     Post;
 end;


PM MAIL WWW ICQ Skype   Вверх
pseud
Дата 23.7.2008, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



kovalenko123, 
strikerok, 
а если на форме 20 едитов, то на каждый инвалид будем стопать валидацию?
с точки зрения у важения юзера ты должен проверить все едиты и по не валидным вывести месаги одновременно.


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Poseidon
Дата 23.7.2008, 10:07 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Код

procedure CheckEdit(Form: TForm);
var
i: integer;
begin
with Form do
for i:= 0 to ControlCount-1 do
  if Controls[i] is TEdit
  then
    if TEdit(Controls[i]).Text = ''
    then
      begin
      MessageDlg ('Заполни '+TEdit(Controls[i]).Name,
                   mtWarning, [mbOK], 0);
      TEdit(Controls[i]).Color:= clRed;
      end;
end;


Использовать примерно так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
CheckEdit(Form1)
end;



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pseud
Дата 23.7.2008, 10:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Poseidon, -1.
ИМХО - месага должна быть максимум ОДНА, чтоб не заставлять юзера 100 раз жать ОК.
Но у казать ошибки заполнения едитов необходимо все.
Приблизительно так.
ИМХО - конечно.

user posted image


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
aleksh
Дата 23.7.2008, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 609
Регистрация: 8.7.2008

Репутация: 3
Всего: 13



(морально устарело пока писалось)

Это сообщение отредактировал(а) aleksh - 23.7.2008, 10:39
PM MAIL   Вверх
Poseidon
Дата 23.7.2008, 10:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



Цитата(pseud @  23.7.2008,  10:29 Найти цитируемый пост)
ИМХО - месага должна быть максимум ОДНА, чтоб не заставлять юзера 100 раз жать ОК.Но у казать ошибки заполнения едитов необходимо все.
Ну блын, придрались smile

Код

procedure CheckEdit(Form: TForm);
var
i: integer;
mess: boolean;
begin
mess:= False;
with Form do
for i:= 0 to ControlCount-1 do
  if Controls[i] is TEdit
  then
    if TEdit(Controls[i]).Text = ''
    then
      begin
      if not mess
      then
        begin
        MessageDlg ('Не все поля заполнены', mtWarning, [mbOK], 0);
        mess:= True;
        end;
      TEdit(Controls[i]).Color:= clRed;
      end
  else TEdit(Controls[i]).Color:= clWindow;
end;





Это сообщение отредактировал(а) Poseidon - 23.7.2008, 10:53


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
pseud
Дата 23.7.2008, 11:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



Poseidon, если брать указанный тобой пример, то он, с моей точки зрения, должен выглядеть так:

Код

procedure CheckEdit(AForm: TForm);
var
  i: Integer;
  mess: Boolean;
  edt: TEdit;
begin
  mess := False;
  with AForm do
  begin
    for i := 0 to ControlCount-1 do
      if Controls[i] is TEdit then
      begin
        edt := TEdit(Controls[i]);
        if edt.Text = '' then
        begin
          edt.Color := clRed;
          mess := True;
        end else
          edt.Color := clWindow;
      end;

    if mess then
      MessageDlg ('Не все поля заполнены', mtWarning, [mbOK], 0);
  end;
end;



Это сообщение отредактировал(а) pseud - 23.7.2008, 11:23


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.