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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2012, 12:36   #1
Китос
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 26
По умолчанию корявое отображение StringGrid

В общем мне нужно чтобы ячейки StringGrid'a были разноцветными.
Делаю я это так:
Код:
void __fastcall TForm1::tableDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
		  TGridDrawState State)
{
if ((ACol>2 && ACol<6 || ARow>2 && ARow<6) && !(ACol>2 && ACol<6 && ARow>2 && ARow<6)) //Выбор определенных ячеек
  table->Canvas->Brush->Color=clGradientInactiveCaption;                      //Беру один цвет
else table->Canvas->Brush->Color=clWhite;                                     //иначе возвращаю белый цвет
table->Canvas->FillRect(Rect);                                                //закрашиваю ячейку.
table->Canvas->Font->Color=cl3DDkShadow;                                      //Цвет для текста,
table->Canvas->TextOut(Rect.left+10,Rect.top+4,table->Cells[ACol][ARow]);     //вставляю текст.
Но отображается все это как то коряво:

Помогите все это как-нибудь исправить.
Заранее спасибо.
Китос вне форума Ответить с цитированием
Старый 22.01.2012, 02:08   #2
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

подкорректируйте прямоугольник ячейки, уберите линии в свойствах таблицы и сами их прорисовывайте
microbit вне форума Ответить с цитированием
Старый 23.01.2012, 02:10   #3
Китос
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 26
По умолчанию

что значит
Цитата:
подкорректируйте прямоугольник ячейки
и можно все это поконкретнее
Китос вне форума Ответить с цитированием
Старый 23.01.2012, 09:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я не понял а что такого корявого на скрине?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.01.2012, 14:56   #5
Китос
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 26
По умолчанию

Цитата:
Я не понял а что такого корявого на скрине?
ячейки синим не полностью закрасились, остались белые полоски

сегодня попробовал решить проблему заменив
Код:
table->Canvas->FillRect(Rect);
на
Код:
table->Canvas->Rectangle(Rect.Left-5,Rect.Top-5,Rect.Left+Rect.Width(),Rect.Top+Rect.Height());
Все вроде как улучшилось (пропали белые полоски)

Но как бы не так, после кликов по ячейкам все перекашивается

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

Последний раз редактировалось Китос; 23.01.2012 в 17:25.
Китос вне форума Ответить с цитированием
Старый 24.01.2012, 18:05   #6
microbit
Форумчанин
 
Аватар для microbit
 
Регистрация: 26.09.2011
Сообщений: 176
По умолчанию

попробовал создать таблицу, правда цвет закраски я взял clGray

win7 класическая тема

возможно это изза темы виндовс, попробуй в свойствах таблицы выбрать DrawStyle классическую или градиент.
microbit вне форума Ответить с цитированием
Старый 24.01.2012, 20:26   #7
Китос
Пользователь
 
Регистрация: 24.09.2011
Сообщений: 26
По умолчанию

нет, классическую я пробовал - все равно полоски, скорее вы правы это из-за темы виндовс)
Китос вне форума Ответить с цитированием
Старый 24.01.2012, 21:54   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
скорее вы правы это из-за темы виндовс)
Я бы скорее поверил что это из-за того что свойство GridLineWidth не равно 0
Проверь.

Хотя да... Винда виновата. И апокалипупипс 2012 грядет из-за винды )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 25.01.2012, 12:43   #9
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

- а может не там проблему ищете? Я попробовал Ваш изначальный код и никаких проблем с отображением не имел (см. скриншот). Windows 7, Builder 5.0..., может в свойствах таблицы чего? типа align какой-нибудь и т.д.
nick42 вне форума Ответить с цитированием
Старый 25.01.2012, 22:21   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
никаких проблем с отображением не имел
Как я понимаю автору нужно избавиться от "прожилок" между ячейками, тех что у тебя серенькими линиями видны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
отображение данных в Stringgrid Максон11 Помощь студентам 0 06.04.2011 12:44
Отображение в StringGrid без cells sonya__ Помощь студентам 6 14.11.2010 16:57
Отображение jpeg в StringGrid WhistleR Компоненты Delphi 5 05.10.2009 10:42