Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.03.2012, 15:26   #1
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию обращение к определенному полю dbgrideh

привет!
еСть у меня на форме dbgrideh. в нем есть поле типа boolean. как сделать так: пользователь ставит галку в true, а ему сообщение вылазит? написала код (событие onclick на dbgrid), но фигня, сообщение вылазит если пользователь кликнет по любому полю.
Код:
  
    if not dm.NOTE.FieldByName('In_job').AsBoolean then begin // если чекбокс в нуле
      if MessageDlg('Вы действительно хотите отправить?',    
        mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
        dbgrideh3.ReadOnly:= false;
        dm.note.edit;
        dm.note.post;
      end
      else abort
    end
    else begin
      dbgrideh3.ReadOnly:= true;
    end;

Последний раз редактировалось kate158; 27.03.2012 в 15:28.
kate158 вне форума Ответить с цитированием
Старый 27.03.2012, 18:51   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно в BeforeEdit датасета запоминать исходное состояние поля. В AfaterPost значение сравнивать с запомненным и если с False стало True, то выдавать сообщение. Но это отработает только после Post-а. Если поля явно созданы, можно поиграться с событиями OnChange и/или OnSetText фиелда и в нем определять изменилось ли состояние. Так отработает еще до Post-а в момент изменения значения поля
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 27.03.2012 в 21:10.
Аватар вне форума Ответить с цитированием
Старый 28.03.2012, 10:20   #3
kate158
Форумчанин
 
Регистрация: 01.08.2008
Сообщений: 383
По умолчанию

кажется, проблема решилась. есть такая штука как SelectedIndex. она в коде:
Код:
procedure TForm1.DBGridEh3CellClick(Column: TColumnEh);
begin
 if DBGridEh3.SelectedIndex = 2 then begin
      if not dm.NOTE.FieldByName('In_job').AsBoolean then begin
        if MessageDlg('Действительно отправить?',
          mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin
          dbgrideh3.ReadOnly:= false;
          dm.note.edit;
          dm.note.post;
        end
        else abort
      end
      else begin
        dbgrideh3.ReadOnly:= true;
 end;
end;

Последний раз редактировалось kate158; 28.03.2012 в 11:44.
kate158 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И снова суммирование по определенному условию alexsampler Microsoft Office Excel 5 09.08.2011 16:44
Как задать border определенному полю? makar3000 Общие вопросы Delphi 4 03.05.2011 23:09
Обращение к конкретному полю varyat Microsoft Office Access 4 01.03.2011 22:16
сформировать списки по определенному правилу Shindji Помощь студентам 9 17.02.2010 14:55
Обращение к BLOB полю Bayazet БД в Delphi 3 17.03.2009 15:52