|
Canvas 접근을 하실 때, DrawCell 이벤트에서 하시지 않으시면, 다시 덮어져 지워져 버립니다. 아래와 같이 DrawCell 이벤트로 접근을 하시면 손쉽게 접근을 하실 수 있고, Index #0 도 접근하실 수 있습니다.
아래 예제는 버튼을 클릭하면 0 ~ 2 중에 아무 글자나 넣고, 그 글자에 따라서 색을 다르게 찍는 예제입니다.
//---------------------------------------------------------------------------
#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::Button1Click(TObject *Sender)
{
int itX, itY;
for(itX = 0; itX < StringGrid1->ColCount; itX ++)
for(itY = 0; itY < StringGrid1->RowCount; itY ++)
StringGrid1->Cells[itX][itY] = random(3);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
String stData = StringGrid1->Cells[ACol][ARow].Trim();
if(stData == "0") StringGrid1->Canvas->Font->Color = clMaroon;
if(stData == "1") StringGrid1->Canvas->Font->Color = clGreen;
if(stData == "2") StringGrid1->Canvas->Font->Color = clBlue;
StringGrid1->Canvas->TextOut(Rect.Left + 2, Rect.Top + 2, stData);
}
//---------------------------------------------------------------------------
이용주 님이 쓰신 글 :
: Cell별로 색깔을 넣는것은 canvas->color를 이용해서 구현했는데요.
: 색깔을 지정한 셀에 글자를 넣을수가 없더군요. 색이 없어져 버립니다.
: 셀의 색깔이 그 셀을 클릭하거나 거기에 글을 넣어도 그래도 남아있게 하는 방법은 없나요?? 있다면 꼭좀 답변좀 부탁드릴께요..
: 그리고 한가지만더요 ^^;;
: 셀에서 0,0 에 해당하는 곳에는 색깔이 지정이 안되더군요.
: 예를 들면 1,1의 위치에는 어떤 색깔이 들어가는데, 0,0, 0,1 1,0 이런 자표 값에는 색깔이 들어가지가 않는건데 이것도 방법이 있는건가요?? 있다면 꼭좀 답해주세요~~ 부탁드립니다. 그럼수고하세요..
|