![]() |
Procedure einbinden
Beim Versuch nachstehende Unit zu starten bekomme ich immer wieder eine Fehlermeldung.
Die Procedure LabelLeer läßt sich nur über Button3 ansprechen. Warum? Hilfe erbeten.
Delphi-Quellcode:
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin LabelLeer; //Edit1.Text := 'Editbox1'; end; procedure TForm1.Button2Click(Sender: TObject); begin Edit2.Text := 'Editbox2'; end; procedure LabelLeer; begin form1.Edit1.Text := ''; form1.Edit2.Text := ''; end; procedure TForm1.Button3Click(Sender: TObject); begin LabelLeer; //Edit2.Text := 'Editbox2'; end; end. |
Re: Procedure einbinden
Mach doch einfach aus der Procedure LabelLeer eine Function LabelLeer. So müsste es glaub ich gehen.
|
Re: Procedure einbinden
Zitat:
|
Re: Procedure einbinden
Hallo
Entweder du verschiebst die Prozedur nach ganz oben, oder du nimmst sie in die Klasse TForm1 auf. Benjamin P.S:Setze den Code doch bitte in Delphi-Tags |
Re: Procedure einbinden
Schreib sie doch einfach oben in den public abschnitt dann solltest über Form1 darauf zugreifen können!
|
Re: Procedure einbinden
Hallo Benjamin,
habe die Procedure wie angeregt an die erste Stelle gesetzt und schon klappt es. Habe bisher mit Visual-Basic gearbeitet, dort war das egal wo die Procedure stand. Ist das in Delphi anders? Vielen Dank für die schnelle Hilfe JOMA |
Re: Procedure einbinden
Ja, prozeduren, die nicht zu einer Klasse (wie in deinem Beispiel TForm1) gehören, sind erst ab der Stelle im Code gültig, wo sie stehen.
Du kannst die Prozedur Button3Click von überall her ausführen, obwohl sie ganz unten steht. Das liegt daran, das sie hier zu finden ist:
Delphi-Quellcode:
Würdest du die Prozedur LabelLeer so hineinschreiben würde es auch funktionieren:
TForm1 = class(TForm)
Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end;
Delphi-Quellcode:
TForm1 = class(TForm)
Edit1: TEdit; Edit2: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private-Deklarationen } procedure LabelLeer; public { Public-Deklarationen } end; |
Re: Procedure einbinden
Moin JOMA,
erst einmal herzlich willkommen hier in der Delphi-PRAXiS. Bevor etwas benutzt werden kann, muss es an den entsprechenden Stellen sichtbar sein. Dazu hast Du hier mehrere Möglichkeiten:
Ich favorisiere die dritte Variante, da diese bezüglich der Objektorientierung, die beste ist. Die Prozedur wird ja nur im Zusammenhang mit diesem Formular (Objekt) gebraucht. |
Re: Procedure einbinden
Aber aufpassen, wenn du aus der Procedure eine Formularmethode machst:
Du musst sie dann so deklarieren:
Delphi-Quellcode:
{...}
private procedure LabelLeer; end; {...} procedure TForm1.LabelLeer; begin form1.Edit1.Text := ''; //hier kannst du sogar das "Form1" weglassen form1.Edit2.Text := ''; //hier auch end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz