AGB  ·  Datenschutz  ·  Impressum  







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

Procedure einbinden

Ein Thema von JOMA · begonnen am 13. Mär 2005 · letzter Beitrag vom 13. Mär 2005
Antwort Antwort
JOMA

Registriert seit: 24. Feb 2005
3 Beiträge
 
Delphi 7 Personal
 
#1

Procedure einbinden

  Alt 13. Mär 2005, 18:09
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:
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.
[edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit]
Johann
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#2

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:11
Mach doch einfach aus der Procedure LabelLeer eine Function LabelLeer. So müsste es glaub ich gehen.
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#3

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:12
Zitat von PierreB:
Mach doch einfach aus der Procedure LabelLeer eine Function LabelLeer. So müsste es glaub ich gehen.
Nein, denn der Unterschied von der Funktion zu ner Prozedur ist einfach der, dass ne Funktion einen Rückgabewert hat.
Julian J. Pracht
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:15
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
Benjamin
  Mit Zitat antworten Zitat
Benutzerbild von Speedmaster
Speedmaster

Registriert seit: 4. Mär 2005
Ort: Karlsruhe
535 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:15
Schreib sie doch einfach oben in den public abschnitt dann solltest über Form1 darauf zugreifen können!
Felix K.
  Mit Zitat antworten Zitat
JOMA

Registriert seit: 24. Feb 2005
3 Beiträge
 
Delphi 7 Personal
 
#6

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:35
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
Johann
  Mit Zitat antworten Zitat
BenjaminH

Registriert seit: 14. Okt 2004
Ort: Freiburg im Breisgau
713 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:49
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:
 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;
Würdest du die Prozedur LabelLeer so hineinschreiben würde es auch funktionieren:
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;
Benjamin
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Procedure einbinden

  Alt 13. Mär 2005, 18:54
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:
  1. Die gesamte Prozedur wird im implementation-Abschnitt vor den ersten Aufruf gesetzt
  2. Der Prozedurkopf (hier: procedure LabelLeer kommt in den interface-Abschnitt der Unit, dann spielt es keine Rolle wo die Prozedur innerhalb der Unit steht.
  3. Du machst, wie auch schon vorgeschlagen wurde, aus der Prozedur eine Methode des Formulares. Wie das geht, ergibt sich, z.B., aus den ButtonClick-Routinen, die Methoden des Formulares sind.

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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#9

Re: Procedure einbinden

  Alt 13. Mär 2005, 20:05
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;
  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 15:12 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