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

Вниз

Научите пользоваться DBGridOnDrawColumnCell   Найти похожие ветки 

 
Andrushk   (2002-07-25 14:58) [0]

Короче пусть есть в наборе данных два поля 1 и 2. Рисовать их содержимое в DBGrid"е я хочу сам. То что мне надо рисовать по ONDrawColumnCell в поле 2 зависит от поля 1, но в обработчик передается конкретная колонка, так вот вопрос, как получив колонку 2 узнать что находится в поле 1 в той же самой записи?


 
Lord Warlock ©   (2002-07-25 15:02) [1]

Обратится к колонке 1 напрямую


 
Andrushk   (2002-07-25 15:08) [2]

Это как напрямую? Прямо к DataSet"у? Я бы с удовольствием, но как мне узнать какую запись сейчас отрисовывает обработчик?

Задам вопросс по другому: как узнать какая запись рисуется в Гриде в данный момент?


 
Lord Warlock ©   (2002-07-25 15:14) [3]


> Andrushk

ONDrawColumnCell происходит для каждой записи очень часто. Подумай прежде чем его использовать. Может есть другое решение.



> как узнать какая запись рисуется в Гриде в данный момент


Обращаться можно не к датасету а непосредственно к колонкам своего грида раз ты не изменяешь а только выводишь данные.

DBGrid1.Columns[0].Field.Text если хачешь изменять отображаемое значение.



 
Andrushk   (2002-07-25 15:33) [4]

ок, тогда у меня такой вопрос, если в обработчик передался какой-то Column, в данный момент рисуется поле записи (обзовем ее условно) А, то вернет ли мне строка DBGrid1.Columns[0].Field.Text поле той же записи?


 
Andrushk   (2002-07-25 15:34) [5]

Кстати, по поводу:
ONDrawColumnCell происходит для каждой записи очень часто. Подумай прежде чем его использовать. Может есть другое решение.

а какое еще решение может быть для отрисовки Грида?


 
Lord Warlock ©   (2002-07-25 15:37) [6]


> вернет ли мне строка DBGrid1.Columns[0].Field.Text поле
> той же записи?


да


> а какое еще решение может быть для отрисовки Грида?


смотри шире, может быть имеет смысл создать вычисляемое поле.
ты так и не пояснил смысл своих изисканий. то-ли данные при отображении менять, то-ли шрифт или цвет ячеек/текста ?


 
Andrushk   (2002-07-25 16:07) [7]

Ну если конкретно то ок, не хотел писать потому что длинно и не получается у меня почеловечески объяснить, а второе соображение- знал что если напишу как есть будут советы создать вычисляемое поле, а я не хочу и не уверен что мне этот вариант пойдет.

Ну так вот, полей много, одно поле, обзовем его GroupId - несет в себе номер иконки, которая потом будет в Гриде нарисована, еще одно поле, скажем Name содержит текст, который неплохо было бы вывести рядом с иконкой в одном поле, а само поле Name спрятать, в остальных полях, по некоторым значениям GroupID надо выводить данные, а по некоторым нет (просто чтобы все было пусто), число полей заранее не известно, вот...


 
Andrushk   (2002-07-26 09:03) [8]

Ну спецы, где же вы??????

Я думал мне сразу скажут что делать.


 
Lord Warlock ©   (2002-07-26 09:13) [9]


> Andrushk (26.07.02 09:03)


Типичный случай для вычисляемого поля, в котором еще и икоку придется рисовать


 
Johnmen ©   (2002-07-26 09:45) [10]

>Andrushk

Никаких вычисляемых полей. Только обработка DBGridOnDrawColumnCell, в котором в зависимости от текущ.колонки делай, что надо.
При вызове DBGridOnDrawColumnCell узнать запись - потекущее значениям записи НД.


 
DSmile   (2002-07-26 15:21) [11]

if MainForm.Krtl.Fieldvalues["M2"]="1" then
begin
with DBGrid2.Canvas do
begin
Brush.Color:=clMoneyGreen;
FillRect(Rect);
Font.Color:=clBlack;
Textout(rect.left+2,Rect.Top+2,Column.Field.Text);
end; //end of Canvas
end; //end


 
Alex G u e s t ©   (2002-07-26 15:36) [12]

Почитайте вот это, должно помочь:
http://www.delphikingdom.com/helloworld/dbgridcolor.htm


 
KSergey ©   (2002-07-27 11:41) [13]

Alex G u e s t © (26.07.02 15:36)
Самый правильный и полный ответ.
Единственное, что хотелось бы еще посоветовать - почитайте все статьи этого раздела. Найдете ооочень много интересного (спасибо Елене, что помнит о нас, балбесах).


 
Andrushk   (2002-07-31 16:32) [14]

// http://www.delphikingdom.com/helloworld/dbgridcolor.htm
-Елене, конечно, спасибо, но эта статья не отвечает на мой вопрос, может я плохо объяснил, но в моем случае фишка в том, что чтобы решить что отображать в одном поле, надо знать содержимое другово в той же записи, так вот как имея в обработчике только колонку, рисуемую в данный момент, обратиться к другим полям, рисуемой записи и посмотреть что в них?


 
Johnmen ©   (2002-07-31 16:37) [15]

Прямое обращение к НД ! Уже говорили !
(Что-то неясно ? :))


 
Andrushk   (2002-08-01 09:59) [16]

//Прямое обращение к НД ! Уже говорили !
//(Что-то неясно ? :))
да, сказать человеку "ну ты тупой", не сказав слова "тупой" - это я всегда уважал :-))

мне вот чего непонятно, я знаю содержимое рисуемой ячейки, поле, в котором находиться эта ячейка неуникальное, как в наборе данных я могу искать по неуникальному полю? или при рисовании, в наборе данных запись с рисуемым полем становится текущей, и мне стоит просто обратиться к набору данных, типа DataSet.FieldByName... и я получу знвчение полей находящихся в той же записи, что и рисуемая - что-то я сомневаюсь, но щас проверю.


 
Johnmen ©   (2002-08-01 10:04) [17]

>при рисовании, в наборе данных запись с рисуемым полем >становится текущей, и мне стоит просто обратиться к набору >данных, типа DataSet.FieldByName

Именно !


 
Andrushk   (2002-08-01 10:18) [18]

//> вернет ли мне строка DBGrid1.Columns[0].Field.Text поле
//> той же записи?


//да

блин, не заметил, все, спасибо блин большое, большое блин спасибо, это то что мне надо :-))

последний вопрос снимаю :-)


 
Andrushk   (2002-08-01 10:49) [19]

Всем СПАСИБО :-)



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

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

Наверх




Память: 0.51 MB
Время: 0.011 c
1-71145
wassil
2002-08-13 14:01
2002.08.22
Архив из Delphi


3-70967
megadeth
2002-07-30 12:33
2002.08.22
Работа с DBF, TTable


1-71216
Ksion
2002-08-10 23:08
2002.08.22
Сравнение строчки и текста.


14-71352
~Rand~
2002-07-25 20:38
2002.08.22
Win XP - ограничение доступа на диск С:


1-71103
kronprince
2002-08-12 16:16
2002.08.22
Заполнение TStringList из справочников ???