Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Nicht deklarierter Bezeichner (https://www.delphipraxis.net/139759-nicht-deklarierter-bezeichner.html)

Gor 4. Sep 2009 16:35


Nicht deklarierter Bezeichner
 
Hallo
Ich habe heute Turbo Delphi heruntergeladen und klicke jetzt ahnungslos rum.
Das Programm soll in der Statusleiste letzte Aktion und Anzahl der Klicks ausgeben.
Dafür habe ich jetzt eine eigene Prozedur geschrieben, aber innerhalb dieser Prozedur kann ich nicht mit StatusBar1 arbeiten: "Nicht deklarierter Bezeichner 'StatusBar1'".
Kann mir da jemand helfen?

MfG

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Addierer_Button_Plus: TButton;
    Addierer_Button_Minus: TButton;
    Addierer_Anzeige: TLabel;
    Panel1: TPanel;
    Addierer_Name: TLabel;
    StatusBar1: TStatusBar;
    procedure Addierer_Button_PlusClick(Sender: TObject);
    procedure Addierer_Button_MinusClick(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Aktanzahl: integer;

implementation

{$R *.dfm}

procedure Aktion(var aktname: string);
begin
   StatusBar1.Panels[0].Text := 'Aktion: '+aktname;
   Aktanzahl := Aktanzahl+1;
   StatusBar1.Panels[1].Text := 'Aktionen durchgefuhrt: '+IntToStr(Aktanzahl);
end;

procedure TForm1.Addierer_Button_PlusClick(Sender: TObject);
begin
   Addierer_Anzeige.Caption := IntToStr(StrToInt(Addierer_Anzeige.Caption)+1);
   {StatusBar1.Panels[0].Text := 'Aktion: Addiert';
   Aktanzahl := Aktanzahl+1;
   StatusBar1.Panels[1].Text := 'Aktionen durchgefuhrt: '+IntToStr(Aktanzahl);}
   Aktion('Addiert');
end;

procedure TForm1.Addierer_Button_MinusClick(Sender: TObject);
begin
   Addierer_Anzeige.Caption := IntToStr(StrToInt(Addierer_Anzeige.Caption)-1);
   {StatusBar1.Panels[0].Text := 'Aktion: Subtrahiert';
   Aktanzahl := Aktanzahl+1;
   StatusBar1.Panels[1].Text := 'Aktionen durchgefuhrt: '+IntToStr(Aktanzahl);}
   Aktion('Subtrahiert');
end;

end.

Phoenix 4. Sep 2009 16:38

Re: Nicht deklarierter Bezeichner
 
Hallo Gor,

ui. Ich möchte Dir Anraten, eines der Einsteiger-Tutorials durchzuarbeiten.

Deine Prozedur, die Du geschrieben hast, steht alleine im Raum. Sie gehört nicht zu dem Formular.
Die Statusbar ist aber Teil des Formulars.

Entweder, Du machst aus der Prozedur eine Methode des Formulars, oder Du übergibst die Statusbar als Parameter in Deine prozedur.

Wenn Du mit dieser Erklärung nichts anfangen kannst, arbeite bitte wirklich erstmal ein Grundlagentutorial durch, da wird da alles erklärt.

Edit Nachtrag: Achso: herzlich Willkommen in der DP ;-) :dp:

Gor 4. Sep 2009 16:58

Re: Nicht deklarierter Bezeichner
 
Danke für die schnelle Antwort.

Ich habe versucht die Statusbar als Parameter zu übergeben, konnte aber in der Prozedur nichts damit anfangen.
Tja ich google mal was eine Methode ist. :gruebel: :mrgreen:

zum Edit: Danke.

DeddyH 4. Sep 2009 17:02

Re: Nicht deklarierter Bezeichner
 
Eine Methode ist eine Routine, die zu einer Klasse gehört. Im Gegensatz dazu gibt es auch "reguläre" Routinen.
Delphi-Quellcode:
//reguläre Prozedur
procedure MachWas;
begin
  //Code
end;

//Methode der Klasse TWuppdi
procedure TWuppdi.MachWas;
begin
  //Code
end;

Gor 4. Sep 2009 17:17

Re: Nicht deklarierter Bezeichner
 
Problem gelöst, danke.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Addierer_Button_Plus: TButton;
    Addierer_Button_Minus: TButton;
    Addierer_Anzeige: TLabel;
    Panel1: TPanel;
    Addierer_Name: TLabel;
    StatusBar1: TStatusBar;
    procedure Addierer_Button_PlusClick(Sender: TObject);
    procedure Addierer_Button_MinusClick(Sender: TObject);
    procedure Aktion(const aktname: string);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Aktanzahl: integer;
implementation

{$R *.dfm}

procedure TForm1.Aktion(const aktname: string);
begin
   StatusBar1.Panels[0].Text := 'Aktion: '+aktname;
   Aktanzahl := Aktanzahl+1;
   StatusBar1.Panels[1].Text := 'Aktionen durchgefuhrt: '+IntToStr(Aktanzahl);
end;

procedure TForm1.Addierer_Button_PlusClick(Sender: TObject);
begin
   Addierer_Anzeige.Caption := IntToStr(StrToInt(Addierer_Anzeige.Caption)+1);
   {StatusBar1.Panels[0].Text := 'Aktion: Addiert';
   Aktanzahl := Aktanzahl+1;
   StatusBar1.Panels[1].Text := 'Aktionen durchgefuhrt: '+IntToStr(Aktanzahl);}
   Aktion('Addiert');
end;

procedure TForm1.Addierer_Button_MinusClick(Sender: TObject);
begin
   Addierer_Anzeige.Caption := IntToStr(StrToInt(Addierer_Anzeige.Caption)-1);
   {StatusBar1.Panels[0].Text := 'Aktion: Subtrahiert';
   Aktanzahl := Aktanzahl+1;
   StatusBar1.Panels[1].Text := 'Aktionen durchgefuhrt: '+IntToStr(Aktanzahl);}
   Aktion('Subtrahiert');
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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