-
Всем привет! Есть код: ... type TObj = class (TGraphicControl) private timer:TTimer; procedure OnTimer(Sender: TObject); protected procedure Paint; override; public constructor Create(Owner: TComponent); override; destructor Destroy; override; end; ... procedure TObj.OnTimer(Sender: TObject); begin inc((Sender as TObj).Top);
// if (Sender as TObj).Top+(Sender as TObj).Height>form1.Height then // (Sender as TObj).Destroy;
end;
procedure Tobj.Paint; //var Rect: TRect; begin with Canvas do begin Brush.Color := clYellow; Brush.Style := bsSolid; FillRect(ClientRect); // rectangle(ClientRect); end; end;
constructor TObj.Create(Owner: TComponent); begin inherited Create(Owner);
timer:=TTimer.Create(Owner); timer.Interval:=200; timer.OnTimer:=OnTimer; timer.Enabled:=true;
end;
destructor TObj.Destroy; begin
inherited Destroy; end;
procedure TForm1.FormCreate(Sender: TObject); begin with TObj.Create (self) do begin Top := 0; Left := 100; Width := 80; Height := 40; Parent := Self; end; end;
как в ontimer правильно перемещать мой объект вниз, и как только он достигнет низа формы самого себя уничнтожить? Подскажите, кто знает...
-
> самого себя уничнтожить
Самого себя нельзя. В обработчике таймера при достижении условия, требующего уничтожение, следует асинхронно (PostMessage) послать любое предопределенное сообщение, например, окну формы. В обработчике этого сообщения уничтожение будет безопасным.
-
> Сергей М. © (30.10.08 08:22) [1]
а как передвинуть top себя из таймера?
-
procedure TObj.OnTimer(Sender: TObject);
begin
Top := Top + 1;
....
end;
-
всем спасибо!
|