Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли как-нибудь выделить одну ячейку в DBGride? [D7, XP]


WFS ©   (2007-08-01 11:53:00) 

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


Dib@zol   (2007-08-02 13:02:00) [1]

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


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

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

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


Dib@zol   (2007-08-02 12:38:00) [3]

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


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

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


Dib@zol   (2007-08-02 12:03:00) [5]

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

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

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


WFS   (2007-08-02 11:58:00) [6]

Ich nicht deutsch sprechen.
Schreiben portugiesisch:)))


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


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

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

OnDrawColumnCell (Ereignis von TCustomDBGrid)


Das Ereignis OnDrawColumnCell wird ausgelö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ür OnDrawColumnCell können Sie eine benutzerdefinierte Anzeigeroutine fü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ü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öst. Das Ereignis OnDrawDataCell ist veraltet und dient nur der Abwärtskompatibilität. Geben Sie nicht gleichzeitig Ereignisbehandlungsroutinen für die Ereignisse OnDrawDataCell und OnDrawColumnCell an.


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


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


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


WFS   (2007-08-02 11:45:00) [9]

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


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

WFS ©   (02.08.07 11:39) [10]

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


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

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


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


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


Зачем стер ?


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

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


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


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

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


WFS   (2007-08-01 13:17:00) [15]

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

Вот я пишу:

{-----}
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 12:49:00) [16]


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

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


Dib@zol   (2007-08-01 12:48:00) [17]

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


WFS   (2007-08-01 12:45:00) [18]

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


WFS   (2007-08-01 12:27:00) [19]

Спасибо!


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

OnDrawColumnCell


Наверх

Титульная страница Поиск, карта сайта Написать письмо