Главная страница
    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.47 MB
Время: 0.046 c
6-1135017409
SergP
2005-12-19 21:36
2006.04.02
Открыть браузер и выполнить POST-запрос


3-1139312754
antoxa2005
2006-02-07 14:45
2006.04.02
Подскажите, а как считать примечание таблицы в БД Access


2-1142863112
Tonich
2006-03-20 16:58
2006.04.02
C++


1-1141025414
SnapIn
2006-02-27 10:30
2006.04.02
Вопрос тем, кто реализовывал проекты с подвязкой ГИС MapInfo


6-1135108056
vladik
2005-12-20 22:47
2006.04.02
Tidftp + буква Я





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский