Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.19;
Скачать: CL | DM;

Вниз

помогите с объектом!   Найти похожие ветки 

 
novai   (2008-09-10 13:56) [0]

не понимаю в чем ошибка
TStar = class(TObject)
   timer:TTimer;
   x,y, width, height:integer;
   oldx, oldy:integer;
   constructor Create;
   destructor Destroy; override;
   procedure OnTimerStar(Sender: TObject); не работает
   procedure SetTo(x,y:integer);
   procedure Draw ;
   procedure Move;
 end;

constructor TStar.Create;
begin
 inherited Create;

 x:=0; y:=0;
 oldx:=x; oldy:=y;

 width:=10;
 height:=10;

 Timer:=TTimer.Create(nil);
 timer.Interval:=100;
 timer.Enabled:=true;
 timer.OnTimer:=OnTimerStar;
end;

Destructor TStar.Destroy;
begin
 timer.Enabled:=false;
 timer.Destroy;

 inherited Destroy;
end;

procedure OnTimerStar(Sender: TObject);
begin
 star.Move;
end;

procedure TStar.SetTo(x,y:integer);
begin
 star.x:=x;
 star.y:=y;
//  star.oldx:=x;
//  star.oldy:=y;
 draw;
end;

procedure TStar.Draw;
begin
 if (oldx<>x) or (oldy<>y) then
 begin
  PatBlt(scene.Canvas.Handle, oldx, oldy, Width, Height, WHITENESS);
  oldx:=x;
  oldy:=y;
 end;

 Scene.Canvas.Rectangle(x,y, x+width,y+height);
 Scene.DrawScene;
end;

procedure TStar.Move;
begin
  inc(star.y,10);
  if star.y+star.height>=scene.Height then star.y:=0;

  Draw;
end;


 
Юрий Зотов ©   (2008-09-10 14:03) [1]

А что за таинственная переменная star?


 
novai   (2008-09-10 14:05) [2]

это type ... когда все отлажу будер рисоваться движужуяся звезда...


 
brother ©   (2008-09-10 14:05) [3]

> движужуяся

она будет что?))))


 
Юрий Зотов ©   (2008-09-10 14:07) [4]

> novai   (10.09.08 14:05) [2]

Eсли star - это type, то "движужуяся звезда будер рисоваться" еще очень не скоро.


 
Германн ©   (2008-09-10 14:07) [5]


> А что за таинственная переменная star?
> <Цитата>
>
> novai   (10.09.08 14:05) [2]
>
> это type

Хм.


 
Германн ©   (2008-09-10 14:08) [6]


> то "движужуяся звезда будер рисоваться" еще очень не скоро.

Опередил, блин. Прям слово в слово :)


 
oldman ©   (2008-09-10 14:08) [7]


> procedure OnTimerStar(Sender: TObject);
> begin
>  star.Move;
> end;
>
> procedure TStar.Move;
> begin
>   inc(star.y,10);
>   if star.y+star.height>=scene.Height then star.y:=0;
>   Draw;
> end;


А почему же не:

procedure OnTimerStar(Sender: TObject);
begin
 inc(star.y,10);
 if star.y+star.height>=scene.Height then star.y:=0;
 Draw;
end;

???


 
Palladin ©   (2008-09-10 14:09) [8]


> procedure OnTimerStar(Sender: TObject);

в ясли...


 
novai   (2008-09-10 14:10) [9]

там я заводил конечно переменную   Star:Tstar;


 
Правильный$Вася   (2008-09-10 14:11) [10]


> procedure OnTimerStar(Sender: TObject); не работает

и че? так и говорит "не работаю"?


 
brother ©   (2008-09-10 14:12) [11]

наверное не компилируется...


 
novai   (2008-09-10 14:13) [12]


> procedure OnTimerStar(Sender: TObject);begin  inc(star.y,
> 10);  if star.y+star.height>=scene.Height then star.y:=0;
>   Draw;end;

да так наверное лучше...

> наверное не компилируется...

да не запускается...


 
Германн ©   (2008-09-10 14:13) [13]


> novai   (10.09.08 14:10) [9]
>
> там я заводил конечно переменную   Star:Tstar;
>

Где там? Прямо в самом классе?


 
oldman ©   (2008-09-10 14:13) [14]


> brother ©   (10.09.08 14:12) [11]
> наверное не компилируется...


движужуяся звезда не движужуется...


 
novai   (2008-09-10 14:18) [15]

вот полный код

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   Button1: TButton;
   Timer1: TTimer;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 TScene= class(TBitmap)
   procedure DrawScene;
 end;

 TStar = class(TObject)
   timer:TTimer;
   x,y, width, height:integer;
   oldx, oldy:integer;
   constructor Create;
   destructor Destroy; override;
   procedure OnTimerStar(Sender: TObject);
   procedure SetTo(x,y:integer);
   procedure Draw ;
   procedure Move;
 end;

var
 Form1: TForm1;

 Scene:TScene;
 Star:Tstar;

implementation

{$R *.dfm}

procedure TScene.DrawScene;
begin
 form1.canvas.Draw(0,0, scene);
end;

constructor TStar.Create;
begin
 inherited Create;

 x:=0; y:=0;
 oldx:=x; oldy:=y;

 width:=10;
 height:=10;

 Timer:=TTimer.Create(nil);
 timer.Interval:=100;
 timer.Enabled:=true;
 timer.OnTimer:=OnTimerStar;
end;

Destructor TStar.Destroy;
begin
 timer.Enabled:=false;
 timer.Destroy;

 inherited Destroy;
end;

procedure OnTimerStar(Sender: TObject);
begin
 star.Move;
end;

procedure TStar.SetTo(x,y:integer);
begin
 star.x:=x;
 star.y:=y;
//  star.oldx:=x;
//  star.oldy:=y;
 draw;
end;

procedure TStar.Draw;
begin
 if (oldx<>x) or (oldy<>y) then
 begin
  PatBlt(scene.Canvas.Handle, oldx, oldy, Width, Height, WHITENESS);
  oldx:=x;
  oldy:=y;
 end;

 Scene.Canvas.Rectangle(x,y, x+width,y+height);
 Scene.DrawScene;
end;

procedure TStar.Move;
begin
  inc(star.y,10);
  if star.y+star.height>=scene.Height then star.y:=0;

  Draw;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//  star.Draw;
//  canvas.Draw(0,0, scene);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Scene:=TScene.Create;
 scene.Width:=200  ;
 scene.Height:=200  ;

 Star:=Tstar.Create;
 star.SetTo(100,0);

 timer1.Enabled:=true;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Star.Destroy;
 scene.Destroy;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 scene.DrawScene;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//  FormPaint(Form1);
end;


 
{RASkov} ©   (2008-09-10 14:20) [16]

> procedure OnTimerStar(Sender: TObject);
> begin
> star.Move;
> end;

Почему так?


 
Anatoly Podgoretsky ©   (2008-09-10 14:22) [17]

> novai  (10.09.2008 14:05:02)  [2]

Тип не имеет визуального представления, только реальные объекты могут быть видимы.


 
novai   (2008-09-10 14:23) [18]


> Почему так?

ой и правда... надо procedure TStar.OnTimerStar(Sender: TObject);

спасибо всем! Ну не пинайте новичка!


 
brother ©   (2008-09-10 14:24) [19]

> Ну не пинайте новичка!

мы не сильно ;)


 
Anatoly Podgoretsky ©   (2008-09-10 14:25) [20]

> novai  (10.09.2008 14:18:15)  [15]

Что не работает?
Не жди, что мы будет за тебя проверять код.


 
oldman ©   (2008-09-10 14:26) [21]


> brother ©   (10.09.08 14:24) [19]
> мы не сильно ;)


а мы еще не закончили :)


 
{RASkov} ©   (2008-09-10 14:31) [22]

> [18] novai   (10.09.08 14:23)
> Ну не пинайте новичка!

За код в [15] можно очень сильно испинать :)
Например за неграмотное использование глобальных переменных....
Да и вообще весь код и алгоритм и ООП и... написано не грамотно... Даже для новичка :)


 
{RASkov} ©   (2008-09-10 14:34) [23]

> Не жди, что мы будет за тебя проверять код.

Некоторые вещи видны не вооружонно(ы)м глазом, но для новичков может понадобится оружие - книга например :)


 
brother ©   (2008-09-10 14:36) [24]

> а мы еще не закончили :)

да мы еще и не начинали!)


 
{RASkov} ©   (2008-09-10 14:40) [25]

> да мы еще и не начинали!)

Да его разве теперь догонишь, он уже стартанул отсЕдава быстрее какого-то коллайдера...)


 
brother ©   (2008-09-10 14:42) [26]

> он уже стартанул отсЕдава быстрее какого-то коллайдера...)

ну хоть спасибо сказал)


 
Anatoly Podgoretsky ©   (2008-09-10 14:44) [27]

> brother  (10.09.2008 14:42:26)  [26]

Предусмотрительный.


 
brother ©   (2008-09-10 14:45) [28]

> Предусмотрительный.

не понял???


 
brother ©   (2008-09-10 14:50) [29]

> не понял???

а понял))))) все домой надо сваливать - заработатлся....



Страницы: 1 вся ветка

Текущий архив: 2008.10.19;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.015 c
2-1221068460
YoungerDelphist
2008-09-10 21:41
2008.10.19
SQL


2-1221156958
smartleds
2008-09-11 22:15
2008.10.19
Господа подскажите как програмно выделить какую либо позицию


15-1220135516
Eraser
2008-08-31 02:31
2008.10.19
Системный микшер и виста + Delphi


15-1220026817
Nic
2008-08-29 20:20
2008.10.19
Ветка проектирования


2-1221471665
vegarulez
2008-09-15 13:41
2008.10.19
Вопрос про Grid, Table, Query (ZeosDBO)