Одесса: °С (вода °С)
Киев: 0°С

Тема: DBGrid в Delphi

Ответить в теме
Показано с 1 по 6 из 6
  1. Вверх #1
    Новичок
    Пол
    Мужской
    Возраст
    33
    Сообщений
    39
    Репутация
    15

    По умолчанию DBGrid в Delphi

    Вопрос в том как выделять цветом текущую строку (выбранную) в DBGrid, не используя при этом dgRowSelected (ну или просто сохранив возможность редактирования значений прямо в таблице). Понятно что нужно использовать обработчик события onDrawColumnCell, но как в нем определить именно текущую сторку непонятно...
    Желательно использовать именно TDBGrid, а не создавать новые классы на основе TCustomDBGrid...


  2. Вверх #2
    Бывалый
    Аватар для fatman
    Пол
    Мужской
    Возраст
    40
    Сообщений
    8,626
    Репутация
    1312
    TDBGrid, равно как и просто TStringGrid - являются наследниками основного класса TCustomGrid. А в нем на самом начальном уровне определены свойства TCustomGrid.Row и TCustomGrid.Col, значения которых выдают координаты текущей выделеной ячейки. Это тебе для получения ячейки в фокусе. А вообще, для строкового выделения есть спецально придуманное множество TCustomGrid.Options, которое надо выставить в TCustomGrid.Options:=[goRowSelect]

  3. Вверх #3
    Новичок
    Пол
    Мужской
    Возраст
    33
    Сообщений
    39
    Репутация
    15
    Если быть более точным, то TDBGrid является наследником TCustomDBGrid, а вот уже этот класс является наследником TCustomGrid. В нашем случае это важно поскольку в TCustomDBGrid "спецально придуманное множество TCustomGrid.Options" имеющее тип TGridOptions переопределено как TCustomDBGrid.Options, но уже имеющее тип TDBGridOptions, что приводит к несоответствию типов при прямом использовании TCustomGrid.Options:=[goRowSelect]. Это во-первых. Во-вторых при использовании более правильного свойства dgRowSelect в TDBGrid нельзя изменять данные. Вот что по этому поводу в хелпе написано: The user can select an entire row, as well as selecting individual cells. If Options includes dgRowSelect, dgEditing and dgAlwaysShowEditor are ignored.
    А на счет получения текущей ячейки имеющей фокус, это ведь не проблема, есть масса способов... Вопрос в том как выделить всю строку.

  4. Вверх #4
    Частый гость Аватар для AmonRa
    Пол
    Мужской
    Адрес
    ...есть город, который я вижу во сне...
    Сообщений
    701
    Репутация
    26
    Сейчас Delphi не стоит, но должно быть что-то типа
    if State = чеготоSelected then ABrush.Color := clColor;
    Wild White Water

  5. Вверх #5
    Постоялец форума Аватар для kvo
    Пол
    Мужской
    Адрес
    Одесса
    Сообщений
    1,495
    Репутация
    106
    Цитата Сообщение от el_Wild
    Вопрос в том как выделять цветом текущую строку (выбранную) в DBGrid, не используя при этом dgRowSelected (ну или просто сохранив возможность редактирования значений прямо в таблице). Понятно что нужно использовать обработчик события onDrawColumnCell, но как в нем определить именно текущую сторку непонятно...
    Желательно использовать именно TDBGrid, а не создавать новые классы на основе TCustomDBGrid...
    Я так понял тебе нужно чтоб курсор бегал по ячейкам и при этом текущая строка была подсвечена. В этом случае TCustomGrid.Options:=[goRowSelect] не подойдет. Если ты не против сторонних библиотек откачай библиотеку ehLib http://www.farpost.com/personal/dmitryb/RUS/ (для эксСНГ бесплатная), тамошний грид намного превосходит стандартный по возможностям. Подсветка строки включается выставлением соответствующего проперти.

  6. Вверх #6
    Новичок
    Пол
    Мужской
    Возраст
    33
    Сообщений
    39
    Репутация
    15
    Всем спасибо за советы... Проблему решил, но не так как хотелось. Пришлось вводить глобальную переменную -- номер текущей строки и подвешать измененение этого параметра на событие AfterScroll в ClientDataSet'e, а потом при перерисовке просто проверяю сопадает ли номер текущей записи с этой переменной. Если да, то рисуем другим цветом...


Ответить в теме

Похожие темы

  1. Изоброжения и Delphi
    от Shadow_exe в разделе Программирование
    Ответов: 9
    Последнее сообщение: 20.10.2006, 22:47
  2. компилятор для Delphi
    от oz(skyline) в разделе Программирование
    Ответов: 3
    Последнее сообщение: 25.06.2006, 22:36
  3. Подскажите Delphi 6
    от U391 в разделе Программирование
    Ответов: 11
    Последнее сообщение: 22.05.2006, 11:05
  4. помогите в Delphi 7
    от U391 в разделе Программирование
    Ответов: 6
    Последнее сообщение: 22.05.2006, 10:57
  5. Delphi 7
    от Shadow_exe в разделе Программирование
    Ответов: 29
    Последнее сообщение: 26.03.2006, 15:54

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения