Einzelnen Beitrag anzeigen

ark4869

Registriert seit: 23. Aug 2006
50 Beiträge
 
Delphi 6 Personal
 
#9

Re: Objekt TList- ich versteh kein Wort!

  Alt 28. Okt 2008, 21:10
Naja, in der Buchseite sind halt "Befehle" von TList, aber da steht nix, wie das integriert werden soll.Da steht dann zum Biespiel "Letztes Element [zeilensprung] Liste.Items[Liste.Count-1]" und das wird mir auch schon nciht klar und unter count würd ich jetzt was anderes verstehen.

Oder dein Erzeugen das steht da garnicht so. (glaub ich...?)
Da steht

Anhängen eines neuen Gebäudeobjektes:
Liste.Add(Haus)

Im Buch gehts drüberhinaus um ein Projekt was wir nie gemacht haben. Aber da steht nicht wie bei dir Haus.create.

Was mich wundert bei deinem Vernichten war dass du da 0 in den eckigen klammern stehen hast... Da steht ja nicht dass das auf 0 runtermachen soll, kein index:= index-1 oder so



ED: Ich hab mal (aufgrund meines Unwissens,ob ich da wieder so eine while schleife machen muss) BT Verbergen und Zeigen ausgeklammert, jetzt gibts schon beim Compilieren eine Fehlermeldung...

Hier die Fehlermeldung die beim Erzeugen-BUtton-Klicken kommt:
http://d.imagehost.org/0044/fehlermeldung.jpg
Und hier die wenn ich auslammer und compilieren:
http://d.imagehost.org/0530/fehlermeldung_2.jpg


Sollt ich auch nochmal den aktullen Quellcode posten? Wenn nicht, tu ich es trotzdem... ;D

Delphi-Quellcode:
unit mBewegteUhr;
{Übung 14.3 - Modifikation: West; Uhr2a --> BewegteUhr: September/Oktober 2008}

interface

uses
  Windows, Messages, SysUtils, Graphics, Controls, Forms, Dialogs, StdCtrls,
  classes, {z.B. für TList}
  mTBewegteUhr; {TBewegteUhr}

type
  TMain = class(TForm)

    BtErzeugen: TButton;
    BtVerbergen: TButton;
    BtZeigen: TButton;
    BtVernichten: TButton;
    procedure BtErzeugenClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
   // procedure BtVerbergenClick(Sender: TObject);
    //procedure BtZeigenClick(Sender: TObject);
    procedure BtVernichtenClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    Uhr1: TBewegteUhr;
    Liste : TList;
  public
    { Public-Deklarationen }
  end;

var
  Main: TMain;

implementation

{$R *.DFM}


procedure TMain.BtErzeugenClick(Sender: TObject);
var
  idx : integer;
begin
  // Objekt erzeugen und an die Liste hängen
  // idx hat dann die Position in der Liste
  idx := Liste.Add( TBewegteUhr.Create (Main.Width div 2, Main.Height div 2, 75) );
  // Liste.Items[ idx ] ist vom Typ Pointer, zeigt also nur irgendwo hin
  // TBewegteUhr( Pointer ) sagt dem Programm, wie die Informationen an der Stelle
  // vom Pointer zu interpretieren sind
  TBewegteUhr( Liste.Items[ idx ] ).Kennt(Main);
  TBewegteUhr( Liste.Items[ idx ] ).Zeigen;
end;

procedure TMain.BtVernichtenClick(Sender: TObject);
begin
  while Liste.Count > 0 do
  begin
    if Liste.Items[ 0 ] <> nil then
    begin
    TBewegteUhr( Liste.Items[ 0 ] ).Free;
    Liste.Delete( 0 );
    end;
  end;
end;

{procedure TMain.BtVerbergenClick(Sender: TObject);
begin
  if TBewegteUhr(Liste.Items[posi]) <> nil then TBewegteUhr(Liste.Items[posi]).Loeschen;
end;

procedure TMain.BtZeigenClick(Sender: TObject);
begin
  if TBewegteUhr(Liste.Items[posi]) <> nil then TBewegteUhr(Liste.Items[posi]).Zeigen;
end;         }


procedure TMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  BtVernichtenClick(Sender);
end;

procedure TMain.FormCreate(Sender: TObject);
begin
  doublebuffered:= true;
  randomize;
end;

end.
  Mit Zitat antworten Zitat