AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Eigene Klasse mit Timer und IMage

Ein Thema von Chaosente · begonnen am 21. Feb 2007 · letzter Beitrag vom 21. Feb 2007
Antwort Antwort
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#1

Eigene Klasse mit Timer und IMage

  Alt 21. Feb 2007, 18:50
Also ich möchte eine klasse schreiben, die sozusagen ein spielfeld ist (dafür verwende ich ein timage). da ich in die klasse einen timer mit eingebaut hab rendert der alle paar sekunden das spielfeld neu nur weis ich nciht wie ich das image in die klasse TSpielfeld reinkriege und sie dann auf dem form anzeigen kann, oder muss ich das irgendwie mit vererbung von timage machen steig da nciht so durch...
  Mit Zitat antworten Zitat
Thorben_K

Registriert seit: 22. Okt 2006
Ort: Darmstadt
105 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Eigene Klasse mit Timer und IMage

  Alt 21. Feb 2007, 18:56
Möglich ist beides

Vererben geht, ebenso wie "Inneres" Image

ich würde jedoch Vererben, um so lässtige arbeit zuvermeiden.
Thorben
  Mit Zitat antworten Zitat
Chaosente

Registriert seit: 20. Aug 2006
80 Beiträge
 
#3

Re: Eigene Klasse mit Timer und IMage

  Alt 21. Feb 2007, 18:59
jah da hab ich jetzt aber nen kleines problem, wahrscheinlich recht einfach, aber ich kann mit der warnung ncihts anfangen die er mir gibt:

Zitat:
[Warnung] Spielfeld.pas(13): W1010 Methode 'Create' verbirgt virtuelle Methode vom Basistyp 'TImage'
Hier nochmal mein code:

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Spielfeld: TSpielfeld;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Spielfeld:=TSpielfeld.Create;
Spielfeld.Width:=300;
spielfeld.Height:=300;
spielfeld.Left:=10;
spielfeld.Top:=10;
spielfeld.Canvas.Ellipse(0,0,20,20);
end;

end.
und der code der unit spielfeld:

Delphi-Quellcode:
unit Spielfeld;

interface

uses ExtCtrls;

type
  TSpielfeld = class(TImage)
  procedure SpielfeldRender(Sender: TObject);
  private
    FTimer: TTimer;
  public
    constructor Create;
    destructor Destroy; override;
  end;

implementation

constructor TSpielfeld.Create;
begin
inherited;
  FTimer := TTimer.Create(nil);
  FTimer.Interval := 500; // alle 500 Millisekunden was tun
  FTimer.OnTimer := SpielfeldRender;
end;

destructor TSpielfeld.Destroy;
begin
  FTimer.Free;
  inherited;
end;

procedure TSpielfeld.SpielfeldRender(Sender: TObject);
begin
  // Hier deinen Code ausführen.
end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#4

Re: Eigene Klasse mit Timer und IMage

  Alt 21. Feb 2007, 19:17
Du musst das Create des Spielfeldes auch überschreiben (override) und nicht nur benutzten
Also mach das gleiche, wie bei "Destroy": Schreibe hinter dem constructor Create; ein override; Dann hat sich das mit der Warnung

[edit]Vielleicht interessant: "Virtuelle, dynamische un abstrakte Methoden" (DSDT)[/edit]
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz