Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
14-71372
RV
2002-07-25 09:39
2002.08.22
Игра Пятнашки. Хелп ми


1-71174
Юра
2002-08-13 11:41
2002.08.22
Добавить новую страницу в TPageControl


1-71102
Uran
2002-08-12 14:25
2002.08.22
Защита от копирования дисков


3-70972
nick_sniper
2002-08-01 15:56
2002.08.22
Синхронизация нескольких удаленных БД


4-71420
Sword
2002-06-18 19:31
2002.08.22
Спасите! Не знаю как копировать





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