Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Procedure Ausführen... (https://www.delphipraxis.net/41501-procedure-ausfuehren.html)

Mitchl55 4. Mär 2005 11:36


Procedure Ausführen...
 
Hallo,

ich möchte nach/in ButtonClick4 den ButtonClick5 ausführen um Quelltext
nicht doppelt zu schreiben. Eine Funktion möchte ich nicht nehmen.

So wie ich das probiere scheint das nicht zu funktionieren!

Delphi-Quellcode:
procedure TfrmMAIN.Button4Click(Sender: TObject);
begin
 Procedure TfrmMAIN.Button4Click;
end;

procedure TfrmMAIN.Button5Click(Sender: TObject);
begin
  showmessage('Test');
end;
Weiß jemand was ich ändern müßte oder ob dieses garnicht möglich ist? Den Thread Beispiel verstehe ich so nicht wirklich!

Danke & Gruß

Mitchl

gothic_mike 4. Mär 2005 11:41

Re: Procedure Ausführen...
 
Zitat:

Zitat von Mitchl55

Delphi-Quellcode:
procedure TfrmMAIN.Button4Click(Sender: TObject);
begin
 Procedure TfrmMAIN.Button4Click;
end;


so müsste es gehen:

Delphi-Quellcode:
procedure TfrmMAIN.Button4Click(Sender: TObject);
begin
  Button5Click(Sender);
end;

MagicAndre1981 4. Mär 2005 11:42

Re: Procedure Ausführen...
 
Oder im Objektinspektor einfach bei dem OnKlick-Event beides mal die gleiche procedure eintragen. Dann klappt, das auch.

André

Luckie 4. Mär 2005 11:43

Re: Procedure Ausführen...
 
Zitat:

Zitat von Mitchl55
Eine Funktion möchte ich nicht nehmen.

Und warum nicht? Warum willst du unbedingt dem Grundsatz zu widerhandlen, dass man GUI und Code von einander trennen sollte?

Mitchl55 4. Mär 2005 11:58

Re: Procedure Ausführen...
 
@ gothic_mike:

Vielen Dank, so gehts... :coder:

@Luckie

Wenn ich mehr Ahnung hätte, dann würde ich es evtl. anders machen! Habe ich
aber leider momentan nicht. Aber vieleicht ist es für dich ja eine Leichtigkeit zu
erklären wie ich eine Funktion einbinde!? Ich komme nicht so ganz klar damit,
wo ich die Variablen deklarieren muss und ob die Variablen aus der Funktion
in der ganzen Form abrufbar sind? Möchte keine Parameter mit der Funktion
übergeben, sondern nur die Befehlsreihenfolge abarbeiten lassen.

PS: Ich weiß, neue Frage, neuer Thread.

Danke & Gruß

Mitchl

Jelly 4. Mär 2005 16:58

Re: Procedure Ausführen...
 
Zitat:

Zitat von Mitchl55
Wenn ich mehr Ahnung hätte, dann würde ich es evtl. anders machen! Habe ich
aber leider momentan nicht. Aber vieleicht ist es für dich ja eine Leichtigkeit zu
erklären wie ich eine Funktion einbinde!? Ich komme nicht so ganz klar damit,
wo ich die Variablen deklarieren muss und ob die Variablen aus der Funktion
in der ganzen Form abrufbar sind? Möchte keine Parameter mit der Funktion
übergeben, sondern nur die Befehlsreihenfolge abarbeiten lassen.

Bin zwar nicht Luckie, kann dir aber vielleicht doch was zu sagen.

Also als erstes mal solltest du mal deinen Cursor auf das Wort Procedure oder function in Delphi setzen und die magische Taste F1 drücken. Dann erhältst du schon mal viel Infos zu Prozeduren und Funktionen.

Wenn du aber auf einem Form arbeitest, wird in Delphi Quellcode automatisch eine Klasse definiert, die von TForm abgeleitet ist. Das heisst nix anderes, daß du dir ein neues Objekt erstellst, was alles aus TForm erbt, und das du mit eigenen Dingen zusätzlich füllen kannst, ums mal laienhaft auszudrücken. Hinter Klassenvererbung steckt noch mehr, aber das würd hier nun zu weit führen.

Die Dinge, wie ich sie nannte, sind in Delphi Eigenschaften (Stichwort property) und Methoden. Eigenschaften sind Attribute, die dein Objekt beschreiben, und können aber selbst auch wieder Objekte sein. Legst du einen Button auf deine Form, so wird in deiner Klassendefinition ein Objekt button1 im Quellcode hinterlegt.

Methoden ist der Oberbegriff für Prozeduren und Funktionen, die sich im Wesentlichen nicht unterscheiden, ausser daß Funktionen dir einen Rückgabewert liefern können.

Soweit klar?

Willst du jetzt eine eigene Prozedur in der Klasse definieren, so musst du das an 2 Stellen. Erstens oben, in der Klassendefinition selbst. Da gibt es für dich erst mal 2 Bereiche: private und public. Spricht für sich, denk ich. Private heisst, daß du nur innerhalb der Klasse auf diese Methoden zugreifen kannst. Public heisst, dass du auch in abgeleiteten Klassen drauf zugreifen kannst.
Das Definieren der Methode alleine reicht jedoch nicht aus. Du musst sie auch implementieren. Dazu drückst du am besten im Editor selbst innerhalb deiner Klassendefinition die Tastenkombination STRG-SHIFT-C, und die IDE erstellt dir ein Grundgerüst im Implementierungsteil. Da kannst du jetzt reinschreiben, was du willstund brauchst, und kannst die definierte Methode überall innerhalb deiner Klasse durch Angeben des Namens mit den notwendigen Parameters aufrufen.

Hier mal ein einfaches Bsp, mit einem Button und einem edit auf der Form, und einer public procedure ZeigeInhalt welches dir einfach den Inhalt des Edit Feldes in einer Messagebox anzeigt. Aufrufen von ZeigeInhalt machst du im OnClick Ereignis des Buttons.

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    procedure ZeigeInhalt;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
     ZeigeInhalt ;
end;

procedure TForm1.ZeigeInhalt ;
begin
     MessageDlg(edit1.text, mtInformation, [mbOK], 0);
end ;

end.
VORSICHT:
Das ist eine Möglichkeit, Methoden in die Klasse zu implementieren. Aber Luckie hats bereits geschildert, damit sind Design und Funktionalität des Programms nicht strikt getrennt. Aber für den Anfang erst mal ganz brauchbar für dich.

Aber wichtig ist, dir mal im Klaren zu werden, wie man in Delphi programmiert. Durch diese Doppelklicks auf Ereignisse innerhalb der IDE erreicht man zwar schon sehr viel, aber was sich dabei im Wesentlich abspielt bleibt dir verborgen.


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