Текущий архив: 2006.04.02;
Скачать: CL | DM;
ВнизВопрос по Dbgrid Найти похожие ветки
← →
Report3 (2006-03-17 15:17) [0]У Dbgrid есть возможность работать с каждой ячейкой и строкой. Если в настройках отметить dgRowSelect=True, то автоматически выделяется вся строка, что в рамках моей программы очень удобно. Однако, возникает проблема. Если работать с Dbgrid таким образом, то выключается возможность редактировать каждую ячейку, что не есть хорошо. Можно ли совместить возможности? Т.е выделить всю строку и при этом иметь возможность редактировать каждую ячейку Dbgrid?
← →
ZeroDivide © (2006-03-17 15:41) [1]Редактировать данные прямо в DBGrid - вообще не хорошо.
← →
Плохиш © (2006-03-17 15:42) [2]Для начала нужно ответить на вопрос "Вам шашечки или ехать?"
Отрисовывай выделение строки самостоятельно в OnDrawColumnCell.
← →
Stakan © (2006-03-17 15:42) [3]ZeroDivide © (17.03.06 15:41) [1]
Спорный вопрос
← →
PoetOfDelphi © (2006-03-17 16:17) [4]Можно отключить RowSelect на время редактирования:
with SomeDBGrid do
options:=options-[dgRowSelect];
← →
Плохиш © (2006-03-17 16:29) [5]
> PoetOfDelphi © (17.03.06 16:17) [4]
> Можно отключить RowSelect на время редактирования
Остаются только поймать "время редактирования", если при dgRowSelect редактирование в гриде запрещено ;-)
← →
49 Cent (2006-03-17 16:40) [6]Наверное, оптимальным решением было бы 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;
Проблема в том, что этот код позволяет выделить нужным цветом только редактируемую ячейку. А как выделить всю строку, но другим цветом?
← →
PoetOfDelphi © (2006-03-17 16:44) [7]
> Остаются только поймать "время редактирования", если при
> dgRowSelect редактирование в гриде запрещено ;-)
:). Сотрю - и точно. Не бейте ногами...
Поэтому остаётся или
редактировать данные где-нть не в гриде,
> Отрисовывать выделение строки самостоятельно в OnDrawColumnCell.
← →
msguns © (2006-03-17 16:48) [8]При редактировании в гриде будет масса подводных камней, начиная от контроля корректности вводимых данных и заканчивая обменом изменений с сервером.
Граблей будет море
← →
Amoeba © (2006-03-17 17:43) [9]
> msguns © (17.03.06 16:48) [8]
> При редактировании в гриде будет масса подводных камней,
> начиная от контроля корректности вводимых данных и заканчивая
> обменом изменений с сервером.
> Граблей будет море
Но большинство возможных проблем все же легко решаемо.
← →
Report3 (2006-03-17 17:43) [10]Не хотелось бы встревать в разговор умных людей, но хотелось бы верунться к основной мысли своего вопроса (хотелось бы напомнить, что принято предложение отрисовывать самостоятельно строки).
Суть вопроса в следующем:
Выделил ячейку строки (есть возможность редактировать) и строка выделилась одним цветом, а ячейка в которой идет редактирование другим цветом. Путем поисков нашел пример.
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;
Проблема в том, что этот код позволяет выделить нужным цветом только редактируемую ячейку. А как выделить всю строку, но другим цветом?
← →
Report3 (2006-03-17 17:48) [11]Прочитал вопрос и чувствую плохо сформулировал мысль. Попробую еще раз. Исходим из мысли, что dgRowSelect=false, т.е при клике на Dbgrid выделяется только ячейка, а не вся строка. Теперь необходимо выделенную ячейку покрасить к примеру зеленым, а строку, в которой находится выделенная ячейка покрасить скажим красным. Как такое сделать?
← →
49 Cent (2006-03-18 01:13) [12]Прочитал вопрос и чувствую плохо сформулировал мысль. Попробую еще раз. Исходим из мысли, что dgRowSelect=false, т.е при клике на Dbgrid выделяется только ячейка, а не вся строка. Теперь необходимо выделенную ячейку покрасить к примеру зеленым, а строку, в которой находится выделенная ячейка покрасить скажим красным. Как такое сделать?
Страницы: 1 вся ветка
Текущий архив: 2006.04.02;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.046 c