임펠리테리님이
알려주신 데로 아래와 같이 프로그램을 만들어 실행을 해서...
리치에디터에 글자를 입력하고 글자색을 여러 가지로 바꾼 다음
글자에 커서가 가면 그 글자색에 맞게 콤보박스에 선택된 색이
바뀌질 않고 엉뚱하게 콤보박스에 배경 색이 만들어지고
글자색에 맞게 콤보박스에 배경 색이 바뀝니다.
무슨 문제가 있어 그런 건지 궁금합니다.
//------------------------------------------------------------------------
---
#include <vcl.h>
#pragma hdrstop
#include "YUnit1.h"
//------------------------------------------------------------------------
---
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TColor Colors[] = { clBlack, clMaroon, clGreen, clOlive, clNavy, clPurple,
clTeal, clGray, clSilver, clRed, clLime, clYellow, clBlue, clFuchsia, clAqua, clWhite };
//------------------------------------------------------------------------
---
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//------------------------------------------------------------------------
---
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ComboBox1->ItemIndex=0; //제가 만든 것
ComboBox1->Style = csOwnerDrawFixed;
AnsiString ColorName;
for(int i=0; i<sizeof(Color)/sizeof(TColor); i++)
{
ColorToIdent(Colors[i], ColorName);
ComboBox1->Items->Add(ColorName);
}
}
//------------------------------------------------------------------------
---
void __fastcall TForm1::ComboBox1DrawItem(TWinControl *Control, int Index,
TRect &Rect, TOwnerDrawState State)
{
ComboBox1->Canvas->FillRect(Rect);
ComboBox1->Canvas->Brush->Color=Colors[Index];
ComboBox1->Canvas->Rectangle(Rect.Left+1,Rect.Top+1,Rect.Right-1,Rect.Top+15);
// 제가 만든 것
}
//------------------------------------------------------------------------
---
void __fastcall TForm1::ComboBox1Change(TObject *Sender)
{
RichEdit1->SelAttributes->Color=Colors[ComboBox1->ItemIndex];
RichEdit1->SetFocus(); //제가 만든 것
}
//------------------------------------------------------------------------
---
void __fastcall TForm1::RichEdit1SelectionChange(TObject *Sender)
{
ComboBox1->Color->RichEdit1->SelAttributes->Color;
// 제가 만든 것
}
//------------------------------------------------------------------------
---
|