AGB  ·  Datenschutz  ·  Impressum  







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

Ereignisbehandlungsroutinen "fremdaufrufen"

Ein Thema von Delphi-Laie · begonnen am 7. Jan 2019 · letzter Beitrag vom 9. Jan 2019
Antwort Antwort
Seite 1 von 2  1 2      
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 7. Jan 2019, 22:05
Delphi-Version: 5
Hallo Delphifreunde!

Wenn man eine Ereignisbehandlungsroutine von einem "fremden" Steuerelement aus aufrufen möchte, wie macht man das dann richtig?

Angehängtes Delphi-2-Minimalprojekt soll mein Anliegen verdeutlichen. Klickt man auf den obersten Button, wird einfach ein Piepton ausgegeben.

Der zweite und auch der dritte Button rufen die Ereignisbehandlungsroutine des ersten Buttons auf, mit jeweils unterschiedlichen Parametern. Mangels Ahnung (wie so meistens) habe ich einfach herumprobiert und festgestellt, daß als Parameter (ohne geht es nicht) sowohl "self" als auch "sender" funktionieren. Nur, was ist "richtiger"? Oder gibt es noch einen besseren Weg?

Danke im voraus und Gruß

Delphi-Laie
Angehängte Dateien
Dateityp: zip Ereignisbehandlungsroutine fremdaufrufen.zip (82,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 7. Jan 2019, 22:35
Literatur dazu:

https://www.thoughtco.com/understand...ndlers-1058223

http://www.delphibasics.co.uk/RTL.asp?Name=Self

https://www.delphi-treff.de/object-p...ethodenzeiger/

Mehr unter:
https://www.google.com/search?q=delp...utf-8&oe=utf-8

Kurz:

Self ist die Klasse selbst, in der man implementiert, also quasi eine Selbstreferenz.

Sender ist der Auslöser des Ereignisses.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender : TObject);
begin
  Self.Caption := Format('Self.Name = %s, Self.Classname = %s, Sender.Classname = %s',[Self.Name,Self.Classname,Sender.Classname]);
end;
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#3

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 06:10
Moin...
Zitat:
Oder gibt es noch einen besseren Weg?
...spendiere den Ereignisbehandlungsroutinen einen Aufruf auf deine eigene private procedure. Da kannst du soviel Parameter angeben wie du willst.
Beispiel:
Delphi-Quellcode:
private
  procedure PrintDocument(Document: TDocument; PageCount, PageHeight: Integer);
...
procedure TfoDocuments.btnPrintClick(Sender: TObject);
begin
  PrintDocument(FLastdocument, 0, 1);
end;

Geändert von haentschman ( 8. Jan 2019 um 07:06 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 06:18
Und wenn diese eigene Routine dann noch in einer eigenen Unit und Klasse liegt und diese das Formular nicht kennt, dann ist auch eine gewisse Trennung von GUI und Logik gleich mit umgesetzt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.387 Beiträge
 
Delphi 12 Athens
 
#5

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 06:32
Zitat:
dann ist auch eine gewisse Trennung von GUI und Logik gleich mit umgesetzt.
...nicht überfordern. Das haben selbst gestandene Programmierer noch nicht verinnerlicht...
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.442 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 07:51
gestandene? Dann krabbeln die noch! SCNR
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 10:25
Hallo,
Zitat:
und diese das Formular nicht kennt
Wie greife ich denn dann auf Edit1.Text zu ?
Heiko
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#8

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 10:28
Hallo,
Zitat:
und diese das Formular nicht kennt
Wie greife ich denn dann auf Edit1.Text zu ?
Das ist eben der Trick: Gar nicht, denn die Logik hat nichts, aber auch rein gar nichts mit der Präsentation/Darstellung zu tun.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 10:33
Hallo,
den Smiley nicht gesehen?
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#10

AW: Ereignisbehandlungsroutinen "fremdaufrufen"

  Alt 8. Jan 2019, 11:35
Hat er, aber für die Begriffsstutzigen dann nochmal Klartext.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:18 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