Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.5 MB
Время: 0.066 c
1-1140796690
Belorus
2006-02-24 18:58
2006.04.02
Загрузка памяти программой


15-1142180329
Piter
2006-03-12 19:18
2006.04.02
Программа для "замедления" mp3


4-1136969518
menart
2006-01-11 11:51
2006.04.02
оброботка сообщение при записи диска


8-1130477605
Idx
2005-10-28 09:33
2006.04.02
Как убрать черные(слишком темные) тений в ImageList


15-1141077808
SkyRanger
2006-02-28 01:03
2006.04.02
У системы Windows Vista будет шесть версий