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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.08.2011, 09:02   #1
Miller-1981
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 89
По умолчанию Закраска свободной от ячеек области в StringGrid

возник вопрос - как закрасить свободную от ячеек зону в компоненте StringGrid

у меня вариант был такой в OnPaint формы

Код:
DataGrid->Canvas->Brush->Color = clAppWorkSpace;
TRect Rect;
int x=0;
int y=0;
for(int i=0;i<DataGrid->ColCount;i++)
	{
	x+=DataGrid->ColWidths[i];
	}
for(int i=0;i<DataGrid->RowCount;i++)
	{
	y+=DataGrid->RowHeights[i];
	}
if(x<DataGrid->Width)
	{
	Rect.Left = x;
	Rect.Top=0;
	Rect.Right = DataGrid->Width;
	Rect.Bottom = DataGrid->Height;
	DataGrid->Canvas->FillRect(Rect);
	}
if(y<DataGrid->Height)
	{
	Rect.Left=0;
	Rect.Top = y;
	Rect.Right = DataGrid->Width;
	Rect.Bottom = DataGrid->Height;
	DataGrid->Canvas->FillRect(Rect);
	}
но первоначально никак не срабатывает, только после какого изменения формы. Есть у кого то другие варианты?

Последний раз редактировалось Stilet; 29.08.2011 в 09:20.
Miller-1981 вне форума Ответить с цитированием
Старый 29.08.2011, 09:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А почему бы не задать изначально для грида цвет а в событии отрисовки ячеек закрашивать каждую ячейку нужным цветом? Зачем в паинте формы это делать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.08.2011, 09:28   #3
Miller-1981
Пользователь
 
Регистрация: 26.01.2009
Сообщений: 89
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А почему бы не задать изначально для грида цвет а в событии отрисовки ячеек закрашивать каждую ячейку нужным цветом? Зачем в паинте формы это делать?
повнимательнее вопрос почитайте пожалуйста - ячейки все я крашу в DrawCell это не вопрос- мне нужно закрасить область свободную от ячеек, когда область ячеек будет меньше размера самого компонента, она всегда белая., хотелось бы покрасить в другой цвет

P.S. Выяснилось что в 6-ом билдере свойство Color у StringGrid это цвет фона как раз, в 2010 оно не работает - вопрос тогда как сделать чтоб оно заработало

Последний раз редактировалось Miller-1981; 29.08.2011 в 09:44.
Miller-1981 вне форума Ответить с цитированием
Старый 29.08.2011, 09:41   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Это тебе нужно повнимательнее читать. Если бы ты не кидался поперед батька в пекло, а попробовал то что я сказал:
Код:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect,
          TGridDrawState State)
{
  if( ACol>=StringGrid1->FixedCols && ARow>=StringGrid1->FixedRows){
   StringGrid1->Canvas->Brush->Color=clWhite;
   StringGrid1->Canvas->FillRect(Rect);
  }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 // Если Билтер 2010
 StringGrid1->DrawingStyle=gdsClassic;
 StringGrid1->Color=clAqua;
}
//---------------------------------------------------------------------------
То получил бы такую картинку:

P.S. Я забыл что у меня и Билдер есть так что пример поправил под билдер
Изображения
Тип файла: png Безымянный.png (24.5 Кб, 46 просмотров)
I'm learning to live...

Последний раз редактировалось Stilet; 29.08.2011 в 09:55.
Stilet вне форума Ответить с цитированием
Старый 29.08.2011, 09:56   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
вопрос тогда как сделать чтоб оно заработало
См. мой пример. там есть поправка насчет этого вопроса
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Копирование выделенной области StringGrid DIgorevich Общие вопросы Delphi 8 08.02.2011 19:46
Добавление препятствия в игру или закраска столбца в StringGrid Arm!n Помощь студентам 1 29.12.2010 21:23
Делфи(закраска отедельных ячеек в стринг грид) zoza1 Помощь студентам 3 18.02.2010 08:17
Копирование области ячеек в Excel lexaltd Общие вопросы Delphi 2 07.10.2009 10:34