AGB  ·  Datenschutz  ·  Impressum  







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

Actions in einer anderen Unit definieren

Ein Thema von Int3g3r · begonnen am 21. Dez 2018 · letzter Beitrag vom 16. Jan 2019
Antwort Antwort
Seite 3 von 3     123   
Delphi.Narium

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

AW: Actions in einer anderen Unit definieren

  Alt 7. Jan 2019, 10:40
In meinem Delphi (7) lassen sich im Objektinspektoer im OnCreate eines Formulars die Executemethoden von Actions zuweisen.

Es müsste eigentlich (in etwa) so aussehen: DataModule1.openDBExecute Wenn man Routinen aus anderen Formularen, Datenmodulen ... als Ereignisroutinen zuweisen will, muss man manchmal ein bisserl nachhelfen und es selbst schreiben, weil (zumindest bei Delphi 7) die IDE diese Abhängigkeiten / Möglichkeiten nicht immer zwingend von alleine hinbekommt.
Sprich: Man kann über den Objektinspektor ggfls. mehr zuweisen, als er einem als Auswahlmöglichkeiten anbietet.
Weiß nicht, ob sich das durch alle Delphiversionen hinzieht oder nur bei Delphi 7 so war.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#22

AW: Actions in einer anderen Unit definieren

  Alt 7. Jan 2019, 11:08
In meinem Delphi (7) lassen sich im Objektinspektoer im OnCreate eines Formulars die Executemethoden von Actions zuweisen.
Kein Wunder, denn so eine Action hat ein OnExecute Event und dem weise ich eine Event-Methode zu. Wenn die Methoden-Argumente passen, dann kann man diese Methode auch anderen Events zuweisen (die die gleichen Methoden-Argumente erwarten).

Man kann aber NICHT einem Event eine Action zuweisen. Das geht nicht!
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Actions in einer anderen Unit definieren

  Alt 7. Jan 2019, 11:19
Man kann aber NICHT einem Event eine Action zuweisen. Das geht nicht!
Natürlich nicht, das ist auch klar, aber eventuell liegt ja genau hier das Verständnisproblem.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.443 Beiträge
 
Delphi 12 Athens
 
#24

AW: Actions in einer anderen Unit definieren

  Alt 7. Jan 2019, 12:24
In meinem Delphi (7) lassen sich im Objektinspektoer im OnCreate eines Formulars die Executemethoden von Actions zuweisen.
Das funktioniert nur, wenn diese auch in dem Formular deklariert sind. Soweit mir bekannt ist, lassen sich Ereignisse auch nur dann zuweisen, wenn sie im selben Form, Frame oder Datamodule - auch in Delphi 7 war das wohl nicht anders.

Anders ist das bei Komponenten (was Actions ja auch sind). Die können aus anderen Instanzen (Form, Frame, DataModule) zugewiesen werden, solange die betreffende Unit in der Uses-Anweisung steht und die Instanz aktuell vorhanden ist (nicht zwingend auch sichtbar).

Also, die Action im Datenmodul kann man einem Action-Property einer Komponente im Form oder des Forms selbst zuweisen, nicht aber die im Datenmodul deklarierten Events. Das ging wohl noch nie.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Actions in einer anderen Unit definieren

  Alt 7. Jan 2019, 13:06
Einem Ereignis kann man eine für dieses Ereignis parameterkompatible Methode zuweisen.

Nichts anderes habe ich beschrieben.

Das von mir beschrieben mache ich seit Jahr und Tag und es funktioniert.

Ein OnIrgendwas ist "nur" ein Methodenzeiger, dem man eine passende Methode zuweisen kann, wo diese deklariert ist, ist egal, dass kann in der gleichen Unit sein, muss es aber nicht.

Ob etwas im Objektinspektor zugewiesen werden kann oder nicht hängt eigentlich nur davon ab, ob die IDE die entsprechende Methode findet und im Objektinspektor anzeigen kann oder nicht (und zuweisen will oder nicht). Sie prüft dabei schon, ob die Methoden parameterkompatibel sind und zeigt nur die (ihrer Meinung nach) passenden Methoden an.

Es würde mich wundern, wenn hier im konkreten Fall eine Ereigniszuweisung im Quelltext in der Form Main.OnCreate := DataModule1.openDBExecute nicht funktionieren würde. Kompilieren lässt sich das und funktioniert prinzipiell auch, allerdings ist es fraglich, ob eine Zuweisung auf das onCreate-Ereignis eines Formulares im OnCreate-Ereignis dieses Formulares noch irgendeinen Sinn ergibt, wohl eher nicht.
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#26

AW: Actions in einer anderen Unit definieren

  Alt 16. Jan 2019, 11:29
Besten Dank für die vielen Antworten und Hilfestellungen.

Inzwischen weis ich das Methoden und Funkionen nicht das gleiche sind. Methoden existieren nur innerhalb einer Klasse. Da ich noch keine eigenen Klassen programmiert habe werde ich dies vorerst ruhen lassen.

Mein Problem ist das der source code meines erachtens nicht gerade übersichtlich ist wenn man 20 "beforPost", "afterInsert" etc. Events hat und diese durch die Unit zerstreut sind. Daher wollte ich solche Events auf eine seperate Unit auslagern.

Gruss,
Int3g3r
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 14:43 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