Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

andreybear

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
{
Поля:
ID - идентификатор записей (на этом поле основан ключ целевой таблицы БД);
BOOL - поле, которое отвечает за отображение "положения" ("вкл", "выкл")
колонки таблицы c Properties = RadioGroup.
В Items создан 1 TcxRadioGroupItem, свойства Type = Smallint, Value = 1.
}
procedure TForm1.DBVeiwEditChanged(Sender: TcxCustomGridTableView;
  AItem: TcxCustomGridTableItem);
// Событие, возникающее при изменении записи в таблице
var RecID: integer; // идентификтор исходной записи
begin
  // Если изменяется целевая колонка (можно также проверить по имени колонки)
    if AItem.Index = 0 then
      // Если записей в наборе больше 1
    if odsTest.RecordCount > 1 then
    begin
        // Идентификатор текущей записи
      RecID := odsTestID.AsInteger;
      {
      Можно записать odsTest.RecNo, только надо проверить
      допустима ли навигация по "по номеру записи", например,
      var RecNo: integer;
      ...
      if odsTest.IsSequenced then
        RecNo := odsTest.RecNo;
      Либо использовать навигацию по закладкам для возврата к текущей записи.
      var BkMrk: TBookmark;
      ...
      BkMrk := odsTest.GetBook;
      }
      // Отключение связанных с DataSet контролов
      odsTest.DisableControls;
      // Установка "курсора" на первую запись набора
      odsTest.First;
      // Перебор всех записей набора
      while not odsTest.Eof do
      begin
        // Если идентификатор записи не равен исходному
        if odsTestID.AsInteger <> RecID then
        begin
            // Если RadioButton в состоянии "вкл"
            if odsTestBOOL.AsInteger <> 0 then
            begin
              // Первод набора в режим редактирования
                odsTest.Edit;
            // Установка значения поля
              odsTestBOOL.Value := 0;
            {
            Либо odsTest['BOOL'] := 0;
            Либо odsTest.FieldByName('BOOL').AsInteger := 0;
              Либо odsTest.FieldValues['BOOL'] := 0;
            Либо odsTest.Fields[0].AsInteger := 0;
            }
            // "Подтверждение" записи
              odsTest.Post;
            end; // if odsTestBOOL.AsInteger <> 0 then
        end // if odsTestID.AsInteger <> RecID then
        // Иначе установка RadioButton в положение "вкл", если не установлен
        else
            if odsTestBOOL.Value <> 1 then
          begin
            odsTest.Edit;
            odsTestBOOL.Value := 1;
            odsTest.Post;
          end; // if odsTestBOOL.Value <> 1 then
        // Следующая запись набора
          odsTest.Next;
      end; // while not odsTest.Eof do
      // Возврат к исходной записи
      odsTest.SearchRecord('ID', RecID, [srFromBeginning]);
      {
      Либо odsTest.Locate('ID', RecID, []);
      Если записывался odsTest.RecNo, то odsTest.RecNo := RecNo;
      Если создавалась закладка, то
      if odsTest.BookmarkValid(BkMrk) then
      begin
        odsTest.GotoBookmark(BkMrk);
        odsTest.FreeBookmark(BkMrk);
      end;
      }
      // Подключение связанных с DataSet контролов
      odsTest.EnableControls;
    end;
end;

Всего записей: 132 | Зарегистр. 21-07-2011 | Отправлено: 17:52 11-01-2012
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Использование DevExpress (часть 4)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru