Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   OnKeyPress ableiten und programmweit nutzen (https://www.delphipraxis.net/194258-onkeypress-ableiten-und-programmweit-nutzen.html)

Glados 3. Nov 2017 13:34

OnKeyPress ableiten und programmweit nutzen
 
Vererbung ist für mich kein rotes Tuch, aber noch eins komplett ohne Farbe. Sagen wir mal es ist weiß.

Aktuell habe ich X Formulare und fast jedes hat einen OnKeyPress-Eventhandler. In fast allen passiert dasselbe.

Da ich von Vererbung absolut keine Ahnung habe und die Lektüre bei Google nur schwer verstehe möchte ich gerne hier fragen wie das genau funktioniert.
Was muss man schreiben, um OnKeyPress abzuleiten und programmweit diese Ableitung nutzen zu können?

Uwe Raabe 3. Nov 2017 13:41

AW: OnKeyPress ableiten und programmweit nutzen
 
Wenn du Form Inheritance verwendest, kannst du auch die verlinkten Events eines geerbten Forms (Frames, Datenmoduls) über
Delphi-Quellcode:
inherited
aufrufen. Das steht auch per Standard drin wenn in einem Child-Form im OI ein Doppelclick auf einen Event gemacht wird - unabhängig, ob der Event im Elternform überhaupt verdrahtet ist oder nicht.

Glados 3. Nov 2017 13:48

AW: OnKeyPress ableiten und programmweit nutzen
 
Chinesisch :shock:
Ich denke gerade an sowas hier http://www.delphipraxis.net/160639-e...en-events.html

TIniFile ableiten und die abgeleitete Version (bei mir eine Interposer-Klasse) das schaffe ich. Aber das da oben ist Neuland für mich.

Uwe Raabe 3. Nov 2017 14:01

AW: OnKeyPress ableiten und programmweit nutzen
 
Zitat:

Zitat von Glados (Beitrag 1384970)
Aber das da oben ist Neuland für mich.

Kein Problem.
  • neue VCL-Formularanwendung erstellen
  • im Objekt-Inspektor des Forms den OnKeyPress Event verdrahten
  • in der Objekt-Galerie (Datei - Neu - Weitere) in Vererbbare Elemente das gerade erstellte Form auswählen
  • In dem zweiten erstellten Form ebenfalls den OnKeyPress Event verdrahten

Das zweite (abgeleitete) Form erbt nicht nur alle Komponenten, Einstellungen und Methoden des ersten Forms, sondern auch die verlinkten Events. Diese sind in dem abgeleiteten Form wie sonst auch über das Schlüsselwort
Delphi-Quellcode:
inherited
zu erreichen.

Glados 3. Nov 2017 14:02

AW: OnKeyPress ableiten und programmweit nutzen
 
Wenn ich das richtig verstanden habe, dann geht das auch ohne die IDE-Menus/Funktionen zu nutzen oder sehe ich das falsch?

http://www.delphipraxis.net/340845-post6.html

Das oben in eine eigene Unit (Utils.Events.OnKeyPress.pas). Dann muss ich diese Unit aber in alle Formulare einbinden. Das nervt ehrlich gesagt.


Edit
Ich lass es für den Moment lieber. Gerade getestet, klappt nicht, Ende. Habe noch andere Dinge zu erledigen und kann mich damit jetzt nicht abquälen.

bernau 3. Nov 2017 14:18

AW: OnKeyPress ableiten und programmweit nutzen
 
Kleines Video zum Thema Formvererbung

https://www.youtube.com/watch?v=2R9ODPa6794

bernau 3. Nov 2017 14:22

AW: OnKeyPress ableiten und programmweit nutzen
 
Wenn ich ein neues Projekt anfange, dann wird in der Regel eine Basisform angelegt,von der alle weiteren Forms abgeleitet werden.

Dort werden Funktionen hinterlegt, die alle Forms können sollen.

Dann kannst du z.B. dort in der Basisform eine Procedure schreiben, die sich um das speichern der Position beim Schliessen kümmert. Und natürlich beim öffnen die Position wieder herstellt. Das wird einmal gemacht, und alle anderen abgeleteten Forms speichern und laden automatisch die Position.

Glados 3. Nov 2017 14:24

AW: OnKeyPress ableiten und programmweit nutzen
 
Nee ist zwar nett aber davon halte ich nix.
Ich stehe eher auf Code und nicht auf irgendeine nicht sichtbare Magie, dessen Existenz man nach kurzer Zeit wieder vergisst.

bernau 3. Nov 2017 14:30

AW: OnKeyPress ableiten und programmweit nutzen
 
Zitat:

Zitat von Glados (Beitrag 1384984)
Nee ist zwar nett aber davon halte ich nix.
Ich stehe eher auf Code und nicht auf irgendeine nicht sichtbare Magie, dessen Existenz man nach kurzer Zeit wieder vergisst.

Hä? Das ist Code. Keine Magie.

Aber wenn du den gleiche Code 100 mal in jeder neuen Form wieder eintippen willst..... Bitte.

Glados 3. Nov 2017 14:32

AW: OnKeyPress ableiten und programmweit nutzen
 
Nein, ich will nur nicht diese komischen IDE-Funktionen benutzen und keine ganzen Formulare ableiten, wenn ich nur ein einziges Event brauche.

Ich denke eher an sowas habe aber keine Ahnung wie man es verwendet
https://stackoverflow.com/questions/...aseclass-event

nahpets 3. Nov 2017 14:40

AW: OnKeyPress ableiten und programmweit nutzen
 
Zitat:

Zitat von Glados
Nee ist zwar nett aber davon halte ich nix.
Ich stehe eher auf Code und nicht auf irgendeine nicht sichtbare Magie, dessen Existenz man nach kurzer Zeit wieder vergisst.

Das heißt, Du nutzt keine Komponenten, keine Formulare, die die IDE automatisch erstellt, sondern machst alles selbst?

Zumindest müsste dem nach Deiner obigen Aussage so sein.

Man macht sich wiederbenutztbare Sachen einmal und nutzt dann abgeleitete Versionen davon.

Das ist keine unsichtbare Magie, sondern die Grundfunktionalität von Delphi.

Für das bei StackOverflow gefragte pappt man 'n TApplicationEvents aufs Formular und weißt dem OnHelp-Event 'ne Methode zu.

Mit den Infos, die man dann in der Ereignisprozedure hat, kann man z. B. per ShellExceute eine eigene Hilfe starten, eine im Programm implementierte oder 'ne Webseite im Browser öffnen ..., ganz, wie einem beliebt.

Glados 3. Nov 2017 14:43

AW: OnKeyPress ableiten und programmweit nutzen
 
Zitat:

Zumindest müsste dem nach Deiner obigen Aussage so sein.
Nein

Zitat:

Man macht sich wiederbenutztbare Sachen einmal und nutzt dann abgeleitete Versionen davon.
Deswegen ja StackOverflow.

Zitat:

Für das bei StackOverflow gefragte pappt man 'n TApplicationEvents aufs Formular und weißt dem OnHelp-Event 'ne Methode zu.
Was will ich denn mit OnHelp? Es geht hier um OnKeyPress. Das muss doch auch ohne TApplicationEvents funktionieren.

nahpets 3. Nov 2017 14:46

AW: OnKeyPress ableiten und programmweit nutzen
 
Zitat:

Zitat von Glados (Beitrag 1384994)
Zitat:

Zumindest müsste dem nach Deiner obigen Aussage so sein.
Nein

Zitat:

Man macht sich wiederbenutztbare Sachen einmal und nutzt dann abgeleitete Versionen davon.
Deswegen ja StackOverflow.

Zitat:

Für das bei StackOverflow gefragte pappt man 'n TApplicationEvents aufs Formular und weißt dem OnHelp-Event 'ne Methode zu.
Was will ich denn mit OnHelp? Es geht hier um OnKeyPress. Das muss doch auch ohne TApplicationEvents funktionieren.

Bei Stackoverflow wird nach 'ner Möglichkeit zum Hilfeaufruf gefragt!!! Und darauf habe ich mich bezogen!


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