Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Reaktion auf Pfeiltasten (https://www.delphipraxis.net/4699-reaktion-auf-pfeiltasten.html)

Leo 9. Mai 2003 14:07

Schlaumeyer
 
Warum reagiert das Panel dann auf "Entf","Bild auf","Bild ab" Tasten etc. und auf normale Buchstaben etc. sind das etwa keine Tastaturereignisse?

Stanlay Hanks 9. Mai 2003 14:08

Das wird dir wohl keiner beantworten können, der nicht die von dir erstellte Komponente hat. Weil, wei gesagt, ein normales TPanel keine OnKeydown oder up oder wie auch immer Ereignisse hat.

Ein Panel ist ja normal auch etwas, was ein Programm optisch besser aussehen lässt oder als Leinwand für den Mediaplayer dient.

Leo 9. Mai 2003 14:09

Source
 
Delphi-Quellcode:
type
  TQuelltextBox = class(TPanel)
  protected
    { Protected-Deklarationen }
    procedure KeyPress(Sender: TObject; var Key: Char); virtual;
    procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); virtual;
    Projekt : TProjekt;
  public
    { Public-Deklarationen }
    property OnKeyPress;
    property OnKeyDown;

    constructor create(AOwner: TComponent); override;
    destructor destroy; override;
  end;

...

constructor TQuelltextBox.Create(AOwner: TComponent);
begin
inherited create(AOwner);
OnKeyPress := KeyPress;
OnKeyDown := KeyDown;
end;

destructor TQuelltextBox.Destroy;
begin
inherited destroy;
end;

procedure TQuelltextBox.KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   case key of
      VK_DELETE : Projekt.AktuelleDatei.Quelltext.DeleteZeichen(1);
      VK_HOME  : Projekt.AktuelleDatei.Quelltext.CursorAnZeilenanfang;
      VK_END   : Projekt.AktuelleDatei.Quelltext.CursorAnsZeilenende;
      VK_LEFT  : Projekt.AktuelleDatei.Quelltext.CursorBewegen(-1, 0);
      VK_RIGHT : Projekt.AktuelleDatei.Quelltext.CursorBewegen( 1, 0);
      VK_UP    : Projekt.AktuelleDatei.Quelltext.CursorBewegen( 0,-1);
      VK_DOWN  : Projekt.AktuelleDatei.Quelltext.CursorBewegen( 0, 1);
   end;
end;

procedure TQuelltextBox.KeyPress(Sender: TObject; var Key: Char);
begin
   case ord(key) of
      VK_BACK  : Projekt.AktuelleDatei.Quelltext.DeleteZeichen(-1);
      VK_RETURN : Projekt.AktuelleDatei.Quelltext.ZeilenumbruchEinfuegen;
   else
      Projekt.AktuelleDatei.Quelltext.InsertString(key);
   end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:15 Uhr.
Seite 2 von 2     12   

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 by Thomas Breitkreuz