Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по Dbgrid


Report3 ©   (2006-03-17 15:17:00) 

У Dbgrid есть возможность работать с каждой ячейкой и строкой. Если в настройках отметить dgRowSelect=True, то автоматически выделяется вся строка, что в рамках моей программы очень удобно. Однако, возникает проблема. Если работать с Dbgrid таким образом, то выключается возможность редактировать каждую ячейку, что не есть хорошо. Можно ли совместить возможности? Т.е выделить всю строку и при этом иметь возможность редактировать каждую ячейку Dbgrid?


49 Cent   (2006-03-18 01:13:00) [1]

Прочитал вопрос и чувствую плохо сформулировал мысль. Попробую еще раз. Исходим из мысли, что dgRowSelect=false, т.е при клике на Dbgrid выделяется только ячейка, а не вся строка. Теперь необходимо выделенную ячейку покрасить к примеру зеленым, а строку, в которой находится выделенная ячейка покрасить скажим красным. Как такое сделать?


Report3   (2006-03-17 17:48:00) [2]

Прочитал вопрос и чувствую плохо сформулировал мысль. Попробую еще раз. Исходим из мысли, что dgRowSelect=false, т.е при клике на Dbgrid выделяется только ячейка, а не вся строка. Теперь необходимо выделенную ячейку покрасить к примеру зеленым, а строку, в которой находится выделенная ячейка покрасить скажим красным. Как такое сделать?


Amoeba   (2006-03-17 17:43:00) [3]


> msguns ©   (17.03.06 16:48) [8]
> При редактировании в гриде будет масса подводных камней,
>  начиная от контроля корректности вводимых данных и заканчивая
> обменом изменений с сервером.
> Граблей будет море

Но большинство возможных проблем все же легко решаемо.


Report3   (2006-03-17 17:43:00) [4]

Не хотелось бы встревать в разговор умных людей, но хотелось бы верунться к основной мысли своего вопроса (хотелось бы напомнить, что принято предложение отрисовывать самостоятельно строки).

Суть вопроса в следующем:
Выделил ячейку строки (есть возможность редактировать) и строка выделилась одним цветом, а ячейка в которой идет редактирование другим цветом. Путем поисков нашел пример.

IF  gdSelected   IN State
Then Begin
TDBGrideh(Sender).Canvas.Brush.Color:=$00C4E1FF;
TDBGrideh(Sender).Canvas.Font.Color:=clBlack;
TDBGrideh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
End;

Проблема в том, что этот код позволяет выделить нужным цветом только редактируемую ячейку. А как выделить всю строку, но другим цветом?


msguns   (2006-03-17 16:48:00) [5]

При редактировании в гриде будет масса подводных камней, начиная от контроля корректности вводимых данных и заканчивая обменом изменений с сервером.
Граблей будет море


PoetOfDelphi   (2006-03-17 16:44:00) [6]


> Остаются только поймать "время редактирования", если при
> dgRowSelect редактирование в гриде запрещено ;-)

:). Сотрю - и точно. Не бейте ногами...
Поэтому остаётся или
редактировать данные где-нть не в гриде,

> Отрисовывать выделение строки самостоятельно в OnDrawColumnCell.


49 Cent   (2006-03-17 16:40:00) [7]

Наверное, оптимальным решением было бы dgRowSelect запретить, но каждый раз программно выделять строку, ячейка которой выделена. И все бы хорошо, но ламер я жуткий... оно и понятно... Делфийския знания приобритены в антисанитарных условиях :)

Задумка такая. Выделил ячейку строки и строка выделилась одним цветом, а ячейка в которой идет редактирование другим цветом. Путем поисков нашел пример.

IF  gdSelected   IN State
Then Begin
TDBGrideh(Sender).Canvas.Brush.Color:=$00C4E1FF;
TDBGrideh(Sender).Canvas.Font.Color:=clBlack;
TDBGrideh(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State);
End;

Проблема в том, что этот код позволяет выделить нужным цветом только редактируемую ячейку. А как выделить всю строку, но другим цветом?


Плохиш   (2006-03-17 16:29:00) [8]


> PoetOfDelphi ©   (17.03.06 16:17) [4]
> Можно отключить RowSelect на время редактирования

Остаются только поймать "время редактирования", если при dgRowSelect редактирование в гриде запрещено ;-)


PoetOfDelphi   (2006-03-17 16:17:00) [9]

Можно отключить RowSelect на время редактирования:
with SomeDBGrid do
 options:=options-[dgRowSelect];


Плохиш   (2006-03-17 15:42:00) [10]

Для начала нужно ответить на вопрос "Вам шашечки или ехать?"
Отрисовывай выделение строки самостоятельно в OnDrawColumnCell.


Stakan   (2006-03-17 15:42:00) [11]

ZeroDivide ©   (17.03.06 15:41) [1]
Спорный вопрос


ZeroDivide   (2006-03-17 15:41:00) [12]

Редактировать данные прямо в DBGrid - вообще не хорошо.


Наверх

Титульная страница Поиск, карта сайта Написать письмо