Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DBGridEh заблокировать определенную запись 
:(
    Опции темы
Delphist
Дата 13.11.2006, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

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



Скажите, пожалуйста, как в DBGridEh заблокировать определенную запись. Т.е. есть несколько записей отображающиеся в DBGridEh'е, которые можно редактировать, но некоторые записи мне нужно сделать не редактируемыми.


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Akella
Дата 13.11.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

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



Это лучше сделать в событии BeforEdit самого датасета, т.е. там нужно проверить программно, можно ли редактировать ту или иную запись. А можно проверять в BeforPost

Код

procedure TfmPrava.fibdsUsersBeforePost(DataSet: TDataSet);
begin
  if UserExists(Dataset) then begin
    MessageBox(handle, PAnsiChar('Пользователь с этим именем уже существует.'+#13+#10+'Пользователь относится к группе: '+UserGroup(Dataset.FieldByName('Name').AsString)), 'Ошибка', MB_ICONSTOP or MB_OK);

    abort;
    exit;
  end;

  if (AnsiUpperCase(VarToStr(DataSet.FieldByName('NAME').OldValue)) = 'АДМИНИСТРАТОР') and
     (DataSet.FieldByName('NAME').OldValue <> DataSet.FieldByName('NAME').NewValue)
  then begin
    MessageBox(Application.Handle,
               'Пользователя с именем Администратор изменять нельзя!',
               'ВНИМАНИЕ!',
               MB_ICONERROR or MB_OK);

    abort;
    DataSet.Cancel;
  end;

 if (AnsiUpperCase(VarToStr(DataSet.FieldByName('NAME').OldValue)) = 'АДМИНИСТРАТОР') and
    (DataSet.FieldByName('Deleted').NewValue = 'T')
 then begin
   MessageBox(Application.Handle,
              'Пользователя с именем Администратор удалять нельзя!',
              'ВНИМАНИЕ!',
              MB_ICONERROR or MB_OK);

    DataSet.FieldByName('Deleted').NewValue := 'F';
    abort;
    DataSet.Cancel;
  end;
end;



Добавлено @ 11:19 
Код

procedure TfmPrava.fibdsUsersBeforeEdit(DataSet: TDataSet);
begin
  if DataSet.FieldByName('NAME').asString)) = 'Вася' then abort;
end;

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

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

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


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


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

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

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


 




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


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

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