Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.07.2010, 22:59   #1
>Sergeevich<
 
Регистрация: 12.07.2010
Сообщений: 5
Вопрос Исскуство работы с StringGrid

Добрый день, а быть может ночи!
Может я Вам и покажусь лентяем, быть может уже где-нибудь была освещена данная проблема, но, я позволю себе повториться и спросить вновь: кто знает?
Значит проблема вот в чем: создаю я небольшую базу данных, представление которой является список элемента StringGrid.
А необходимо следующее: менять фон ячеек, но чтобы текст оставался виден!!!
Я множество находил исходников, где было показано как менять цвет ячейки, но при изменении такового, текста видно не было, тобиш он просто закрашивался!!!
Подскажите, плиз, каким образом это возможно реализовать, желательно с исходником!!

Заранее всем благодарен, кто останется неравнодушен моей теме!

P.S.
Вот один из примеров:
http://www.sql.ru/forum/actualthread.aspx?tid=152945
>Sergeevich< вне форума Ответить с цитированием
Старый 13.07.2010, 03:27   #2
Lokos
Форумчанин
 
Регистрация: 29.09.2009
Сообщений: 587
Радость

а что если после того как вы поменяли цвет ячейки заново написать в нее текст
Lokos вне форума Ответить с цитированием
Старый 13.07.2010, 06:04   #3
rdama
Форумчанин
 
Аватар для rdama
 
Регистрация: 25.07.2009
Сообщений: 533
По умолчанию

А почему БД и StringGrid? Почему не DBGrid?
Маразм крепчал. Еноты пели...
R-style Dataknowlege Access Member Account (RDAMA)
rdama вне форума Ответить с цитированием
Старый 13.07.2010, 08:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
>Sergeevich<
Все просто. В OnDrawCell отрисовывать текст нужно после того как залил ячейку.
Сначала выполняешь Canvas.FillRect(Rect) а уже потом желательно в самом конце этого обработчика пиши Canvas.TextOut(... тогда текст отрисуется поверх залитого.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 08:48   #5
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

действительно - поддерживаю rdama
а почему не DBGrid, в нём эсть событие OnDrawColumnCell которое предназначено для раскраски списка

а в СтрингГриде при самопальной раскраске тебе придется вручную обсчитывать выравнивание текста, размер шрифта и т.п. ....
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 13.07.2010, 09:03   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
действительно - поддерживаю rdama
А я с ним не согласен. Я уже понюхал эту гадость, больше к DB контролам никогда не вернусь. (впрочем это субъективный оффтоп...)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.07.2010, 10:02   #7
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А я с ним не согласен. Я уже понюхал эту гадость, больше к DB контролам никогда не вернусь. (впрочем это субъективный оффтоп...)
конечно официальный ДБГрид до сих пор в дельфях не исправлен, например по поводу мышки он не слабо косячит

но раскраску списка он делает прекрасно.
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Старый 13.07.2010, 17:08   #8
>Sergeevich<
 
Регистрация: 12.07.2010
Сообщений: 5
По умолчанию

Быть может и стоит уйти от стринга!!
А в ДБГриде??? Все тоже?? Можете покидать примерчики, если несложно...
>Sergeevich< вне форума Ответить с цитированием
Старый 13.07.2010, 17:12   #9
>Sergeevich<
 
Регистрация: 12.07.2010
Сообщений: 5
По умолчанию

Точнее, как работать с ДБГридом, каким образом менять цвет...
Заранее благодарен неравнодушным!!
>Sergeevich< вне форума Ответить с цитированием
Старый 13.07.2010, 17:33   #10
Korben5E
Форумчанин
 
Аватар для Korben5E
 
Регистрация: 13.07.2010
Сообщений: 346
По умолчанию

procedure TForm1.DBGrid1DrawColumnCell(Sender : TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
{
в функцию передается:
const Rect: TRect; - координаты ячейки для рисования
DataCol: Integer; - номер колонки в гриде
Column: TColumn; - указатель на саму колонку
State: TGridDrawState - состояние ячей
}

// условие на проверку значения поля и его отрисовку
// будем красить только поле с именем intField и типом integer
// ну условие на твой вкус с учетом что можно и номер колонки сюда подключить

if DataSet1['intField'] = 1 then
begin
// если текущая ячейка выделена
if gdSelected in State then
DBGrid1.Canvas.Brush.Color := clGreen // красим в зеленый
else
DBGrid1.Canvas.Brush.Color := clMoneyGreen; // иначе в салатовый

// так-же делаем шрифт жирным
DBGrid1.Canvas.Font.Style := [fsBold];

// и красным цветом
DBGrid1.Canvas.Font.Color := clRed;

// выполняем отрисовку
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
// замечу что эту функцию надо вызывать если необходима отрисовка
// если отрисовка ненужна - вызов ни к чему
end

end;
Non est culpa vin, sed culpa bibentis
Korben5E вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid SsdD Помощь студентам 2 03.05.2010 23:42
Подскажите что написать в пункте "Описание работы программы" курсовой работы Marsel737 Свободное общение 3 14.01.2010 12:44
Для облегчения работы с TFS - приложение для работы над дефектами и задачами Аякс Софт 1 18.03.2009 11:43
StringGrid SergGhost Помощь студентам 2 29.10.2008 08:48
StringGrid Dimon88 Компоненты Delphi 15 14.02.2008 11:44