Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.08.26;
Скачать: CL | DM;

Вниз

Можно ли как-нибудь выделить одну ячейку в DBGride?   Найти похожие ветки 

 
WFS ©   (2007-08-01 11:53) [0]

Коллеги, добрый день!
Мне нужно выделить одну ячейку любым способом:  Цветом, шрифтом или чем нибудь типа того.
Проблема в том, что понятие, например, шрифта, применимо ко всему дбгриду. Менять цвет я пытался через DBgrid.Canvas, но ничего не получилось.
Может у кого нибудь есть более умные варианты или предложения:)


 
Плохиш ©   (2007-08-01 11:56) [1]

OnDrawColumnCell


 
WFS ©   (2007-08-01 12:27) [2]

Спасибо!


 
WFS ©   (2007-08-01 12:45) [3]

Наверно, вы не так поняли.
Допустим, у меня в дб гриде 10 рядов и 10 колонок.
Мне нужно выделить те колонки, которые не пустые, например [2,5] и [5,6], то есть, чтобы они выделялись не каким то событием, а в каком то другом событии, например в Form.Create. И нужно, чтобы они сохранялись выделенными на протяжении работы всей программы.


 
Dib@zol ©   (2007-08-01 12:48) [4]

Посмотри код обработчика выданного тебе события. Затем используй Copy-Paste, Люк.


 
Плохиш ©   (2007-08-01 12:49) [5]


> WFS ©   (01.08.07 12:45) [3]

"Выделение" ячейки - это отрисовка данной ячейки по алгоритму связанному с условием выделения. При отрисовке ячейки вызывается событие OnDrawColumnCell, вот в нём и нужно изменять параметры отрисовки в зависимости от условий.


 
WFS ©   (2007-08-01 13:17) [6]

Понятно, я немного с параметрами не разберусь

Вот я пишу:

{-----}
DBNavigator1.BtnClick(nbnext);
for i:=1 to 10 do
if Table1.fields.fields[i].asstring <>"" then
   DBGrid1.OnDrawColumnCell (Sender:TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);

 Немного непонятно с параметрами:
   Sender я так и оставляю.
  DataCol в данном случае - это i
 Что делать с остальными?
Rect характеризует координаты, которые я не использую, где их брать
Column - это просто множество столбцов
State - это набор , я незнаком с эти типом.


 
Плохиш ©   (2007-08-01 13:19) [7]


> WFS ©   (01.08.07 13:17) [6]

А справку по OnDrawColumnCell слабо прочитать? Лучше тупо топтать кнопки?


 
WFS ©   (2007-08-01 13:22) [8]

У меня нет хелпа в делфи


 
Игорь Шевченко ©   (2007-08-02 10:12) [9]


> У меня нет хелпа в делфи


Зачем стер ?


 
WFS ©   (2007-08-02 11:39) [10]

я не стирал, версия то пиратская:)


 
Игорь Шевченко ©   (2007-08-02 11:40) [11]

WFS ©   (02.08.07 11:39) [10]

Даже в пиратской версии есть help.  еще лучше скачай бесплатную Turbo Delphi 2006 Explorer и будь чист перед законом:)


 
WFS ©   (2007-08-02 11:45) [12]

А,если нетрудно, может напишешь, как например, выделить ячейку, к примеру [2,5]? А то все дают какие то непонятные советы, а напрямую никто не напишет.
PS: Тока если это действительно несложно.
Мне просто интересно


 
Игорь Шевченко ©   (2007-08-02 11:49) [13]


> А,если нетрудно, может напишешь, как например, выделить
> ячейку, к примеру [2,5]?


В DBGrid-е никак. Сам посуди, сейчас она [2,5], а после перемещения скроллбара она уже [2,7]. В DBGrid ты можешь выделить конкретное поле (столбец) поле конкретной записи (строка с непостоянным номером)


 
Плохиш ©   (2007-08-02 11:49) [14]


> WFS ©   (01.08.07 13:22) [8]
> У меня нет хелпа в делфи

На, пользуйся

OnDrawColumnCell (Ereignis von TCustomDBGrid)


Das Ereignis OnDrawColumnCell wird ausgel&#246;st, wenn im Gitter eine Zelle gezeichnet werden muss.

Delphi-Syntax:

property OnDrawColumnCell: TDrawColumnCellEvent;

C++ Syntax:

__property TDrawColumnCellEvent OnDrawColumnCell = {read=FOnDrawColumnCell, write
=FOnDrawColumnCell};

Beschreibung

Mit einer Ereignisbehandlungsroutine f&#252;r OnDrawColumnCell k&#246;nnen Sie eine benutzerdefinierte Anzeigeroutine f&#252;r die Daten in den Gitterzellen bereitstellen. Die Darstellung in der Zelle erfolgt mit den Methoden der Eigenschaft Canvas.

Eine OnDrawColumnCell-Ereignisbehandlungsroutine kann die Methode DefaultDrawColumnCell aufrufen, damit das datensensitve Datengitter den Datenwert in die Zelle schreibt. Die Methode DefaultDrawColumnCell kann die Ereignisbehandlungsroutine OnDrawColumnCell kann erweitern, um visuelle Auswahl- und Fokusselektoren bereit zu stellen.

Hat DefaultDrawing den Wert True, werden die Daten bereits vor dem Ereignis OnDrawColumnCell in die Zelle geschrieben, und das Fokusrechteck wird nach dem Ereignis OnDrawColumnCell f&#252;r die markierten Zellen angezeigt.

Hinweis: Hat die Eigenschaft State der Eigenschaft Columns den Wert csDefault, wird das Ereignis OnDrawDataCell vor dem Ereignis OnDrawColumnCell ausgel&#246;st. Das Ereignis OnDrawDataCell ist veraltet und dient nur der Abw&#228;rtskompatibilit&#228;t. Geben Sie nicht gleichzeitig Ereignisbehandlungsroutinen f&#252;r die Ereignisse OnDrawDataCell und OnDrawColumnCell an.


 
WFS ©   (2007-08-02 11:58) [15]

Ich nicht deutsch sprechen.
Schreiben portugiesisch:)))


 
Dib@zol ©   (2007-08-02 12:03) [16]

> Ich nicht deutsch sprechen.
> Schreiben portugiesisch:)))

Deutsch schnell LERNEN!!!
Schnell, du, russische Scwein!
Was zum Teuffel ist hier schwer?

ЗЫ Фраза из обихода нашей немки ;D


 
Игорь Шевченко ©   (2007-08-02 12:31) [17]

правила надо чтить, уважаемые.


 
Dib@zol ©   (2007-08-02 12:38) [18]

Удалено модератором


 
Игорь Шевченко ©   (2007-08-02 12:49) [19]

Dib@zol ©   (02.08.07 12:38) [18]

Тебе не сделать перерыв для изучения грамматики русского языка ?


 
Dib@zol ©   (2007-08-02 13:02) [20]

Удалено модератором
Примечание: Offtopic



Страницы: 1 вся ветка

Текущий архив: 2007.08.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.023 c
1-1181824064
INJCAL
2007-06-14 16:27
2007.08.26
CRC32


8-1162570365
Кевларвестов Семен
2006-11-03 19:12
2007.08.26
Чем бы выдернуть инфу из видео файла?


15-1185443684
Cerberus
2007-07-26 13:54
2007.08.26
Symbian


15-1183204733
turbouser
2007-06-30 15:58
2007.08.26
Советские фильмы


15-1185274519
Kerk
2007-07-24 14:55
2007.08.26
2800 квадратных метров ткани