Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.02;
Скачать: [xml.tar.bz2];

Вниз

Вопрос по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.052 c
2-1142597848
Report3
2006-03-17 15:17
2006.04.02
Вопрос по Dbgrid


15-1141823371
xayam
2006-03-08 16:09
2006.04.02
Delphi + WebMoney


15-1142005389
ArtemESC
2006-03-10 18:43
2006.04.02
Пневмоника


15-1141752066
Layner
2006-03-07 20:21
2006.04.02
Можно ли в метро/по городу спокойно ходить с ноутбучной сумкой


15-1142237899
balepa
2006-03-13 11:18
2006.04.02
Процессы и сокеты





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский