Главная страница
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.49 MB
Время: 0.031 c
1-1141138844
RomanH
2006-02-28 18:00
2006.04.02
Изменение индекса в меню


2-1142597848
Report3
2006-03-17 15:17
2006.04.02
Вопрос по Dbgrid


15-1142354254
TListBox
2006-03-14 19:37
2006.04.02
Не грузится Win2000 после замены видеокарты.


15-1141762238
parovoZZ
2006-03-07 23:10
2006.04.02
Подсчитать кол-во строк на MySQL.


3-1139400405
Ega23
2006-02-08 15:06
2006.04.02
Как лучше всего пинговать сервер?