Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не могу работать с Canvas.Какая-то ошибка не пойму в чем дело [D7, Win2k]


Женя ©   (2004-04-18 22:03:00) 

Пишу команду: Form1.Canvas.Rectangle(10,10,10,10);

Получаю:
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 0044546C in module 'Project1.exe'. Read of address 00000238'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help  
---------------------------

Смотрю ЦПУ и вижу:
TcustomForm.GetCanvas
044546c 8B8038020000 mov eax, [eax + $00000238]

Помогите пожалуйста. Может кто знает отчего это и как исправить.


Женя   (2004-04-21 11:26:00) [1]

Спасибо большое всем участвующим. У меня получилось теперь всю форму размалюю! ))


Плохиш   (2004-04-21 10:34:00) [2]

>panov ©   (20.04.04 17:50) [7]

Только без этого Form1.

Про книжку полностью и безоговорочно поддерживаю :-)


panov   (2004-04-21 10:25:00) [3]

>тихий вовочка ©   (20.04.04 23:28) [8]
Occurs when the form is created.


тихий вовочка   (2004-04-20 23:28:00) [4]

Я может быть ошибаюсь, но ты рисуешь еще до FormCreate, соответственно у тебя ни формы, ни канвы еще нет.


panov   (2004-04-20 17:50:00) [5]

Создай новый проект, положи на форму кнопку, кликни на нее и посмотри текст программы, сравни со своей.

код

Form1.Brush.Bitmap:=TBitmap.Create;
Form1.Brush.Bitmap.Canvas.Rectangle(10,100,10,100);

добавь в

procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.Brush.Bitmap:=TBitmap.Create;
 Form1.Brush.Bitmap.Canvas.Rectangle(10,100,10,100);
end;

Лучше всего купить книжку и почитать.


Женя   (2004-04-20 15:55:00) [6]

Пробую так:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs;

type
 TForm1 = class(TForm)
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
begin
Form1.Brush.Bitmap:=TBitmap.Create;
Form1.Brush.Bitmap.Canvas.Rectangle(10,100,10,100);
end.

Получил вот такое сообщение.
---------------------------
Debugger Exception Notification
---------------------------
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 0044C8FC in module 'Project1.exe'. Read of address 00000170'. Process stopped. Use Step or Run to continue.
---------------------------
OK   Help  
---------------------------

Вчера даже Виндовс переставил. Сейчас стоит ХР и Д7
А вообще я делал все по книжке и там ничего не сказано о том, что надо создавать Canvas (Н.Б.Культин,Делфи 6 и программирование на ObjectPascal. Поэтому я и не создал его. Подскажите как его создавать?
я пробовал
Form1.Canvas.Create;
и в конце Form1.Canvas.Destroy; но результат тот же

У меня задача по ООП я рисую рыбок в аквариуме, использую графические примитивы. Рыбки рисуются треугольниками, квадратиками и проч. Но пока вообще ничего не Рисуется))
Если можно набросьте мне код как создать Canvas и нарисовать на нем линию или что-то другое. Спасибо


Плохиш   (2004-04-19 10:39:00) [7]

Форм1 не создана


clover   (2004-04-19 10:33:00) [8]

Могу только посоветовать
Form1.Brush.Bitmap:=TBitmap.Create;
и рисовать на Form1.Brush.Bitmap

Вообще похоже что у вас Canvas не создан??? правдо очень странно ;)


Anatoly Podgoretsky   (2004-04-18 23:09:00) [9]

eax = 0
Наверно не создан TcustomForm


Женя   (2004-04-18 22:48:00) [10]

Делфи 7й.


Mihey   (2004-04-18 22:08:00) [11]

Пишу то же, не получаю ошибки. Какая Delphi???


Наверх

Титульная страница Поиск, карта сайта Написать письмо