Форум: "Базы";
Текущий архив: 2002.08.22;
Скачать: [xml.tar.bz2];
ВнизНаучите пользоваться 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c