Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2009, 18:19   #1
-COREY-
Пользователь
 
Аватар для -COREY-
 
Регистрация: 19.04.2009
Сообщений: 50
По умолчанию нужна помощь с ООП в delphi

Код:
TForm1 = class(TForm)
    PaintBox1: TPaintBox;
    Timer1: TTimer;
    Button1: TButton;
    Button2: TButton;
{methods}
procedure FormCreate(Sender:TObject);
procedure PaintBox1Paint(Sender:TObject);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState;
  X,Y: Integer);
  private
  
  public
   
  end;
И
Код:
THorse=class(TObject)
  public
    kx:double;
    ky:double;
    horse_cell:shortint;
    img:TBitmap;
Мне нужно использовать поле класса THorse в методе класса TForm FormCreate.Delphi при компиляции выдаёт ошибку.Как это исправить?Или если это изначально неправильно как переделать?Подскажите,пожалуйста

Последний раз редактировалось -COREY-; 12.10.2009 в 18:25.
-COREY- вне форума Ответить с цитированием
Старый 12.10.2009, 18:26   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

какую ошибку?
создать обьект нужного класса не забыли?(учитывая что вашему классу нужен конструктор)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.10.2009, 18:29   #3
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Пробуйте так:
Код:
THorse=class(TObject)
  public
    constructor Create(AOwner:TComponent);override;
    kx:double;
    ky:double;
    horse_cell:shortint;
    img:TBitmap;
.......
constructor THorse.Create;
begin
   inherited Create(AOwner);
end;
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 12.10.2009, 18:32   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Impuls1989
нужно создавать битмап внутри класса.
а то что вы написали это пустой конструктор если честно=)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.10.2009, 18:39   #5
Impuls1989
Форумчанин
 
Аватар для Impuls1989
 
Регистрация: 16.08.2008
Сообщений: 276
По умолчанию

Из за битмапа ничего не будет, в нем будет просто ссылка на некую область памяти, хотя по хорошему нужно действительно создавать битмап, или делать его nil. Это конечно если я ничего не путаю
Искусственный интеллект - фигня по сравнению с естественной глупостью
Impuls1989 вне форума Ответить с цитированием
Старый 12.10.2009, 18:42   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

до первого обращение к этому битмапу будет все нормально=)
(если не создавать)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.10.2009, 18:42   #7
-COREY-
Пользователь
 
Аватар для -COREY-
 
Регистрация: 19.04.2009
Сообщений: 50
По умолчанию

Код:
procedure TForm1.FormCreate(Sender:TObject);
begin
 Fon:=TBitmap.Create;
 Fon.LoadFromFile('desk.bmp');
 Buffer:=TBitmap.Create;
 Buffer.Width:=560;
 Buffer.Height:=560;
 Buffer.Canvas.Draw(0,0,Fon);
 Buffer.Canvas.Pen.Color:=clRed;
 Buffer.Canvas.Brush.Style:=bsClear;
 Caption:=DefCaption;
 w_h1:=THorse.Create(1,7,horse1,CoordToCell(1,7));
 w_h1.img.LoadFromFile('white_horse.bmp');-{в этой строке ошибка}
 w_h1.img.Transparent:=true;
 Timer1.Interval:=20;
 Timer1.Enabled:=False;
 Randomize;
end;
-COREY- вне форума Ответить с цитированием
Старый 12.10.2009, 18:44   #8
-COREY-
Пользователь
 
Аватар для -COREY-
 
Регистрация: 19.04.2009
Сообщений: 50
По умолчанию

Код:
constructor THorse.Create(x,y:double;aIMG:TBitmap;aHorse_Cell:shortint);
begin
kx:=x*Cell_Size;
ky:=y*Cell_Size;
img:=aIMG;
horse_cell:=aHorse_Cell;
end;
вот код конструктора
-COREY- вне форума Ответить с цитированием
Старый 12.10.2009, 18:44   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я об этом и говорил
http://programmersforum.ru/showpost....07&postcount=3
этот пост+дописать в конструктор
Код:
img:=TBitMap.Create;
horse1
а этот битмап то не создан.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.10.2009, 18:45   #10
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

В конструкторе вашего класса нужно создать Ваш битмап img.

з.ы. дык опоздал)
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi - нужна помощь Psi_X Помощь студентам 11 05.02.2009 14:59
Нужна помощь с Delphi! Тая Помощь студентам 4 22.11.2008 13:01
Нужна помощь на Delphi ВЕКО Помощь студентам 1 19.04.2008 15:48
Нужна помощь с программой ООП на С++ Vofka Фриланс 3 30.11.2007 16:52
Нужна помощь по Delphi Виктория 1 Фриланс 5 25.02.2007 21:21