![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по 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 - вообще не хорошо.