![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу работать с 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???