Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Komponente schreiben, die Wenn ESC gedrückt wird eine proc. (https://www.delphipraxis.net/72622-komponente-schreiben-die-wenn-esc-gedrueckt-wird-eine-proc.html)

Christian18 4. Jul 2006 08:57


Komponente schreiben, die Wenn ESC gedrückt wird eine proc.
 
Hallo,

ich bin gerade dabei eine Komponente zu schreiben mit der ich folgendes machen kann:

- Wenn man diese Komponente auf die Form setzt, dann soll man bei den Ereignissen folgende einstell möglichkeiten haben:

ESC, Enter, Einfg, Entf.

- Wenn die Komponente auf der Fprm ist, dann soll wenn die ESC Taste gedrückt wird die Procedure ausgeführt werden, wie übergeben wird.

Wie kann ich das machen???

Ich habe schon mal gegonnen. Mein Code sieht jetzt so aus:

Delphi-Quellcode:
unit KeyDown;

interface

uses
  SysUtils, Classes, Forms;

type TEinfg = procedure (Sender: TObject) of object;
type TEnter = procedure (Sender: TObject) of object;
type TEntf = procedure (Sender: TObject) of object;
type TESC  = procedure (Sender: TObject) of object;

type
  TKeyDown = class(TApplication)
  private
    FEinfg : TEinfg;
    FEnter : TEnter;
    FEntf : TEntf;
    FESC  : TESC;
    { Private-Deklarationen }
  protected
    { Protected-Deklarationen }
  public
    { Public-Deklarationen }
  published
    property Einfg : TEinfg Read FEinfg Write FEinfg;
    property Enter : TEnter Read FEnter Write FEnter;
    property Entf : TEntf Read FEntf Write FEntf;
    property ESC  : TESC Read FESC Write FESC;
    { Published-Deklarationen }
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TKeyDown]);
end;

end.

Gausi 4. Jul 2006 09:04

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Ich will ja deinen Enthusiasmus für dein Projekt nicht schmälern, aber wozu brauche ich so eine Komponente, wenn ich einfach das OnkeyDown oder OnKeyPress-Event des Formulars dafür nehmen kann? Gut, ich muss dann natürlich KeyPreview auf True stellen, aber sonst...

Oder habe ich dein Vorhaben falsch verstanden?

xaromz 4. Jul 2006 09:12

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Hallo,
  • verwende für Deine Events doch den Typ TNotifyEvent, der ist schon definiert.
  • Deine Komponente wird sicher nicht von TApplication abgeleitet, sondern von TComponent.
  • Du musst die Nachrichtenbehandlungsmethode des Forms durch eine eigene ersetzen, Dir die entsprechenden Nachrichten raussuchen und darauf reagieren. Nicht vergessen: Die Original-Methode in Deiner neuen am Ende aufrufen und beim Zerstören des Objekts diese wiederherstellen.

Gruß
xaromz

Christian18 4. Jul 2006 10:05

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Hallo,

der Sinn dieser Komponente ist Quellcode einsparung. Also ich finde es übersichtlicher, wenn ich eine Komponente auf meiner Form habe, als wenn ich bei jeder Form OnKeyDown selber schreiben muss.

MFG Christian18

RavenIV 4. Jul 2006 11:20

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Zitat:

Zitat von Christian18
Hallo,

der Sinn dieser Komponente ist Quellcode einsparung. Also ich finde es übersichtlicher, wenn ich eine Komponente auf meiner Form habe, als wenn ich bei jeder Form OnKeyDown selber schreiben muss.

MFG Christian18

Ich habe da einen anderen Standpunkt:
ich verwende so wenig wie möglich Komponenten.
Sonst muss ich mir merken, diese Kompo macht jenes, eine andere Kompo fängt dieses ereignis ab, usw.
Wenn ich alles mit den Standard-Methoden mache, habe ich vollen Einblick, was passiert.
Und vor allem klappt das mit dem Debuggen besser.

Christian18 4. Jul 2006 12:51

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Naja,

vieleicht habt ihr recht aber wie kann ich mein porblem trotzdem lösen???

xaromz 4. Jul 2006 12:55

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Hallo,
Zitat:

Zitat von Christian18
Naja,

vieleicht habt ihr recht aber wie kann ich mein porblem trotzdem lösen???

hast Du Dir meinen Beitrag schon durchgelesen?

Gruß
xaromz

Christian18 4. Jul 2006 13:14

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
Ja habe ich schon,

aber irgendwie verstehe ich das nicht so ganz. Hast du ein kleines Bsp. dafür???

SirThornberry 4. Jul 2006 13:20

Re: Komponente schreiben, die Wenn ESC gedrückt wird eine pr
 
die einfachste Variante ist wohl in dein Private ein TApplicationEvents zu packen, dort das OnMessage auszuwerten (ob die Message KeyDown war und ob es sich um die gewünschten Tasten handelt) und dein Ereignis auslösen.


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