Delphi-PRAXiS
Seite 1 von 2  1 2   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Delphi findet label1 und andere Objekte nicht (https://www.delphipraxis.net/203379-delphi-findet-label1-und-andere-objekte-nicht.html)

Mario61 12. Feb 2020 14:28

Delphi findet label1 und andere Objekte nicht
 
Hallo...

Ich habe bei Delphi eine Unit (Unit1) und ein Formular (Form1). Auf diesem Formular habe ich Labels gesetzt. In einer Prozedure möchte ich das Label mit einem Text versehen, also: Label1.Caption := 'Ein Text';
Delphi aber Meckert, weil er Label1 nicht kennt. Ich muss das immer so aufrufen: Form1.Label1.Caption := 'Ein Text';
Ich verstehe das nicht, weil das ist doch alles in der selben Unit und Formular... wieso kennt Delphi das nicht?

DieDolly 12. Feb 2020 14:34

AW: Delphi findet label1 und andere Objekte nicht
 
Zitat:

Ich muss das immer so aufrufen: Form1.Label1.Caption := 'Ein Text';
Labels außerhalb des "Scopes" können nicht gefunden werden, wenn die Prozedur nicht zu der Klasse gehört, in der das Label deklariert ist.

Delphi-Quellcode:
procedure Test;
begin
 Label1.Caption := 'Test';
end;
Das wird niemals funktionieren, wenn Label1 in der Klasseninstanz Form1 ist.

Wenn man eine Datenklase hat mit eimner Instanz namens "MyDataClass" und in dieser Klasse ein Property namens "MyProperty" deklariert ist, dann kann man auch nur auf dieses Property zugreifen, wenn man vorher über MyDataClass geht. Also MyDataClass.MyProperty.

Schlecht erklärt aber ganz einfach und logisch.

hoika 12. Feb 2020 14:35

AW: Delphi findet label1 und andere Objekte nicht
 
Hallo,
Zitat:

In einer Prozedure
Heißt die Procedure so

Delphi-Quellcode:
procedure Test;
begin
  Label1.Caption
end;
oder so

Delphi-Quellcode:
procedure TForm1.Test2;
begin
  Label1.Caption
end;
Ich tippe mit meiner Glaskugel auf Test.

Die Prozedure muss eine Methode sein, also eine Formularprozedur,
weil Label1 teil des Objektes Form1 ist.

Das würde gehen.

Delphi-Quellcode:
procedure TForm1.Test3(AForm: TForm1);
begin
  AForm.Label1.Caption
end;

stahli 12. Feb 2020 14:40

AW: Delphi findet label1 und andere Objekte nicht
 
Da hast Du vermutlich etwas in den Projektdaten verdreht.

Handelt es sich nur um ein Testprojekt? Dann erstelle am besten ein neues und versuche schrittweise die Funktionalität nachzuvollziehen.

Wenn es sich um ein echtes Projekt handelst, dann schau Dir mal die verwalteten Formulare an. Vermutlich wird das Mainform "Form1" nicht korrekt erzeugt oder Du hast den Formulartyp irgendwie verändert.


[EDIT]
Oups, kein roter Rahmen ....
hoika könnte vermutlich eher Recht haben ....

Mario61 12. Feb 2020 15:53

AW: Delphi findet label1 und andere Objekte nicht
 
Das ist so schwierig das zu erklären, ich versuch mal etwas deutlicher:

Code:
procedure TMainFrm.FormCreate(Sender: TObject);
begin
 con.LibraryLocation:=ExtractFilePath(application.ExeName)+'sqlite3.dll';
 con.Database:=ExtractFilePath(application.ExeName)+'hbdb.s3db';
 con.Connected:= True;
 MainFrmAkt;
end;
Es wird also die Procedure MainFrmAkt aufgerufen. In dieser sollen halt die Daten aktualisiert werden und Labels ihren Inhalt bekommen. Leider muss ich aber auch bei der Datenbank folgendes angeben:
Code:
// Ist jetzt nur ein Beispiel
Procedure MainFrmAkt;
Begin
 MainFrm.query.SQL.Text := 'SELECT Round(Sum(Betrag),2) From Daten Where Datenart=''Bank''';
 MainFrm.Query.Open;
 MainFrm.SummeBankLabel.Caption := MainFrm.query.Fields[0].AsString;
 MainFrm.Query.Close;
end;
Vor jedem Query immer das MainFrm. Das Hauptformular hab ich so genannt. (Statt das Standart "Form1")

Ich versteh das nicht, weil auch auf dem selben Formular die Datenbank-Icons (Weis jetzt nicht genau wie man die nennt) liegen.

Jumpy 12. Feb 2020 16:03

AW: Delphi findet label1 und andere Objekte nicht
 
Das ist genau das, was oben gesagt wurde:

Procedure MainFrmAkt;

muss heißen:

procedure TMainFrm.MainFrmAkt;

Dementsprechnd muss es auch im deklarationsteil innterhalb der Deklaration von TMainFrm stehen.

Mario61 12. Feb 2020 16:08

AW: Delphi findet label1 und andere Objekte nicht
 
Ey jey jey.....

Das wars dann. Nur musste ich den Aufruf der Procedure MainFrmAkt in MainFrmAkt(Nil) ändern, weil halt Parameter fehlten.

UFF...

VIELEN DANK, Wieder einmal von Euch gerettet !!!
:thumb::thumb::thumb:

himitsu 12. Feb 2020 16:51

AW: Delphi findet label1 und andere Objekte nicht
 
Wieso fehlen da plötzlich Parameter, bzw. welche sind das?

DieDolly 12. Feb 2020 16:52

AW: Delphi findet label1 und andere Objekte nicht
 
Zitat:

Das wars dann. Nur musste ich den Aufruf der Procedure MainFrmAkt in MainFrmAkt(Nil) ändern, weil halt Parameter fehlten.
Da fehlt überhaupt nix an Parametern!

Delphi-Quellcode:
Procedure MainFrmAkt;
Ich würde den kompletten Code löschen und neu anfangen. Wenn man schon Parameter angeben muss die nicht deklariert wurden...

Luckie 12. Feb 2020 17:06

AW: Delphi findet label1 und andere Objekte nicht
 
Zitat:

Nur musste ich den Aufruf der Procedure MainFrmAkt in MainFrmAkt(Nil) ändern, weil halt Parameter fehlten.
Das kann nicht sein. Wie lautet die Fehlermeldung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:09 Uhr.
Seite 1 von 2  1 2   

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