2015-03-02 4 views
0

Я снова здесь. Я просто хотел бы узнать, как изменить цвет фона прямоугольника (Shape) с помощью TColorListBox. Я знаю, что это легко, однако я получаю исключение все время, когда я пытаюсь установить новое значение для Rectangle. Команда я использую следующее:Изменить цвет из прямоугольника с помощью TColorListBox

Rectangle1->Fill->Color = ColorListBox1->Color; 

Функция:

void __fastcall TForm1::ColorListBox1Click(const TCustomListBox *Sender, 
      const TListBoxItem *Item) 
{ 
    Rectangle1->Fill->Color = ColorListBox1->Color; 
} 

Теперь ошибка я получаю все время я пытаюсь изменить Коллор:

Access violation at address 00405628 in module 'Project1.exe'. Read of address 00000360. 

Еще одно исключение в отладчике:

First chance exception at $00405615. Exception class $C0000005 with message 'access violation at 0x00405615: read of address 0x00000360'. Process Ninterpres.exe (904) 

Не мог бы кто-нибудь помочь мне, пожалуйста? С тех пор, спасибо A LOT!

ответ

0

Я нашел проблему ... Код нарушения доступа из-за нескольких указателей с тем же именем. В этом случае я использовал Rectangle1 (на самом деле он был назван Transp, я изменил имя, чтобы поставить здесь, чтобы облегчить понимание) как int var и как объект ... Спасибо за ответы XD.

1

Первый раз Вы писали

ColorListBox1 

и второй раз вы использовали имя без «1»

ColorListBox->Color; 

Но, похоже, Вы не инициализирован некоторый объект (как я помню, это должно быть сделано автоматически с помощью редактора форм), поэтому программа выдает исключение.

+0

К сожалению, я передал неправильное имя (они были с португальскими именами, но были одинаковыми в обоих случаях) ... Постараюсь обходной путь, я нашел в docwiki от Embarcadero: '\t если (Ellipse1-> Fill-> Kind == TBrushKind :: Solid) \t \t Ellipse1-> Fill-> Color = ColorListBox1-> Цвет; \t else \t \t Ellipse1-> Fill-> Gradient-> Color = ColorListBox1-> Color; ' – mauroaraujo