Serjoga |
Отправлено: 02.12.2006, 14:24 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
Привет.
Мне нужно чтобы при нажатии на DrawGrid левой кнопки мыщи в нажатую ячейку помещалась картинка из файла, но программа выдаёт ошибку. Вот код:
CODE |
int tmp1;
int tmp2;
TGraphic *pic;
pic->LoadFromFile("Portal.bmp"); //Ошибку выдаёт здесь
DrawGrid1->MouseToCell(X,Y,tmp1,tmp2);
tr=DrawGrid1->CellRect(tmp1,tmp2);
DrawGrid1->Canvas->StretchDraw(tr,pic);
|
Помогите разобраться в чём дело? |
|
olegenty |
Отправлено: 02.12.2006, 16:33 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
ошибка твоя звучит как "Access violation"
переменная pic в момент обращения к ней ещё непроинициализирована и указывает в никуда. кто-то (например ты) сначала должен поместить в неё указатель на экземпляр класса TGraphic.
|
|
Serjoga |
Отправлено: 02.12.2006, 17:34 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
Исправил на это: TGraphic *pic=new TGraphic();
Начали вылетать другие ошибки прям при компиляции:
[C++ Error] Unit3.cpp(61): E2352 Cannot create instance of abstract class 'TGraphic'
[C++ Error] Unit3.cpp(61): E2353 Class 'TGraphic' is abstract because of '_fastcall TGraphic::Draw(TCanvas *,const TRect &) = 0'
Что с этим можно сделать?
Отредактировано Serjoga — 02.12.2006, 18:57 |
|
BadMan |
Отправлено: 02.12.2006, 19:10 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 37
|
Исходя из сообщения компилятора Tgraphic не является классом для непосредственной работы — надо брать произвольные от него (либо создать самому) — у него есть пустые виртальные функции, которые необходимо определить.
Советую посмотреть иерархию классов TImage и хелп по TGraphic |
|
Serjoga |
Отправлено: 02.12.2006, 19:41 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 9
|
Сделал по своему и как нашёл на форуме )
DrawGrid1->MouseToCell(X,Y,tmp1,tmp2);
tr=DrawGrid1->CellRect(tmp1,tmp2);
ImageList2->Draw(DrawGrid1->Canvas,tr.Left,tr.Top, 0, true);
Всем спасибо |
|