Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/43: Рейтинг темы: голосов - 43, средняя оценка - 4.88
 Аватар для Dream
158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549

Выделить всю троку в DbGrid

07.05.2010, 12:32. Показов 10787. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Подскажите, как закрасить цветом ВСЮ строку (не ячейку)?

Вот таким образом, при явном указании номера строки, удается закрасить нужную строку:
Delphi
1
If ADOtable1.RecNo=3 then DBGrid1.Canvas.Brush.Color:=clRed;
Но, мне нужно чтобы закрашивалась та строка, которую выбрали.
Делал так:

Delphi
1
2
3
 
IF gdSelected IN State then x:=DBgrid1.DataSource.DataSet.RecNo;
If ADOtable1.RecNo=x then DBGrid1.Canvas.Brush.Color:=clRed;
не помогает, закрашивается только ячейка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.05.2010, 12:32
Ответы с готовыми решениями:

Выделить всю StringGrid комбинацией Ctrl-A
Хочу, чтобы при стандартной комбинации Ctrl-A была выделена вся таблица TStringGrid. Пытаюсь сделать так: void __fastcall...

Как выделить всю текущую строку в Excel?
как выделить всю текущую строку? Excel. если извесно, что в строке 5 ячеек? спасибо

Выделить всю номенклатуру как спецпредложение и новинки
День добрый подскажите как можно выделить что бы вся номенклатура выделилась как Новинка и Спец предложение?

7
2 / 2 / 1
Регистрация: 26.04.2009
Сообщений: 16
09.05.2010, 01:55
Возможно будет полезен следующий код. Так закрашивал цветом строку когда в столбце bolen ставил цифру "1".

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
  begin
  if DBGrid1.DataSource.DataSet.FieldByName('bolen').AsString = '1' then
  begin
     with  DBGrid1.Canvas do
    begin
        Brush.Color:=clyellow;
        FillRect(Rect);
        TextOut(Rect.Left+2,Rect.Top+2,Column.Field.Text);
      end;
  end;
end;
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
09.05.2010, 08:07
Я бы посоветовал использовать вместо стандартного TDBGrid более навороченный TDBGridEh из библиотеки EhLib (не знаю есть ли официально свободная версия, но триал точно получить можно, аесли речь о дипломе/курсовой - большего и не надо). Получите массу интересных визуальных эффектов, а кроме всего прочего в нем процесс раскрашивания ячеек упрощается до элементарного присвоения значений переменной Background в обработчике OnGetCellParams.
0
 Аватар для Dream
158 / 157 / 16
Регистрация: 26.07.2008
Сообщений: 549
09.05.2010, 08:51  [ТС]
Спасибо всем откликнувшимся.
Решение нашел.
Все было намного проще:
в DBgrid - Options - dgRowSelect - True, дает возможность выделить всю строку.
А код:
IF gdSelected IN State then DBGrid.Canvas.Brush.Color - определяет цвет строки.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
09.05.2010, 10:23
Dream, а я хотел подсказать, но думал, что тебе надо именно из одной ячейки это разрисовывать)))

arni,
Цитата Сообщение от arni Посмотреть сообщение
более навороченный TDBGridEh из библиотеки EhLib
вообще с левыми компонентами надо поаккуратнее... а эта библиотека содержит много глюков, да и как по мне - в топку такие навороты, их можно и так получить с простым гридом, если немного подумать, а не кидаться на все, что поможет избавиться от процесса мышления
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
09.05.2010, 10:34
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
в топку такие навороты, их можно и так получить с простым гридом, если немного подумать, а не кидаться на все, что поможет избавиться от процесса мышления
Со временем начинаешь особенно ценить простоту и элегантность кода, возможность не отвлекаться на рутину и заниматься собственно программированием бизнес-логики своих приложенией, а не интерфейсных заморочек. Указанный мною грид действительно "левый", но функциональное богатство позволяет мне за секунды настроить внешний вид, а далее посвятить время тому, за что мне собственно и платят деньги - за обработку данных, а вовсе не за красивый интерфейс, хотя и это требуется само собой. Итак, чем быстрее я проскочу шаг "красивости" и перейду к "бизнес-логика" тем больше заработаю. Дорабатывание напильником TDBGrid или написание замудренных обработчиков к нему считаю пустой тратой времени.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
09.05.2010, 10:41
arni, не мне судить про правильность вашего подхода... но по мне цеплять компоненты с сомнительным по полезности функционалом и корректностью работы как таковой - это не лучшее решение... тем более при этом прога сразу метр минимум накидывает в размере, т.к. надо еще и эти пакеты линковать... а сколько бы мне не рассказывали про терабайтные винты, я придерживаюсь мнения, что прога должна занимать минимально возможное место что на винте, что в памяти... хотя это уже другая история и поэтому останемся каждый при своем мнении...
0
 Аватар для arni
914 / 879 / 62
Регистрация: 06.01.2010
Сообщений: 2,367
Записей в блоге: 6
09.05.2010, 10:45
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
хотя это уже другая история и поэтому останемся каждый при своем мнении...
согласен, похоже приоритеты в разработке у нас совершенно разнятся, и спор не будет полезен никому.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.05.2010, 10:45
Помогаю со студенческими работами здесь

Выделить всю строку в табличном представлении формы.
Привет, коллеги! Нужен совет. Есть форма в табличном представлении. Если установить курсор на левую границу формы, он приобретает вид...

Компонент DBGrid расплывается на всю форму
Почему компонент DBGrid закрывает собой все остальные компоненты?

Поместить в Edit всю строку из DbGrid
подскажите пожалуйста, как всю строчку поместить в эдит. как одну ячейку разобрался Edit1->Text =...

По значению в ячейке выделить определённым цветом всю строку
Добрый вечер! Ну, пожалуйста, необходим макрос: В определённом столбце(R) если значение в ячейке от 0 до 30, то вся строка выделяется...

Нужно выделить всю доступную процессу память блоками по 13 байт
Нужно выделить всю доступную процессу память блоками по 13 байт. Использовать нужно две функции : malloc HeapAlloc При этом нужно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru