![]() |
Neue Komponete mit Canvas, KeyPress und Click....
HI
Ich hab die Suchfunktion genutzt, das hat mir aber nit wirklich weitergeholfen; also: Ich möchte eine neue Komponente entwickeln. Diese Komponente benötigt folgendes: - Sie muss den Fokus erhalten können und dann auf Tastendrücke reagieren können - Sie benötigt eine Zeichenfläche - Sie muss auf Mausklicke (Links, Rechts, Doppelt) und MouseMove/Enter reagieren können Es wird eine Art Listbox, die etwas schöner aussehen soll (z.B die Darstellungsart und die Scrollbars) Von welcher Komponente muss ich die ableiten? Ich hab das mit TScrollingWinControl probiert, aber das funktioniert nicht mit der Vererbung des entsprechenden Events: [Warnung] : Methode 'KeyDown' verbirgt virtuelle Methode vom Basistyp 'TWinControl'
Delphi-Quellcode:
Wie muss ich das abändern, dass es wie beschrieben funktioniert?type TGLKeyDownEvent = procedure (Sender: TObject; var Key: Word; Shift: TShiftState) of object; type TScrollingWinControl1 = class(TScrollingWinControl) private { Private-Deklarationen } protected { Protected-Deklarationen } procedure KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); public { Public-Deklarationen } published { Published-Deklarationen } property OnKeyDown : TSliKeyDownEvent read FOnKeyDown write FOnKeyDown; end; implementation procedure TGl.KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin inherited; If Assigned(FOnKeyDown) then FOnKeyDown(self, Key, Shift); end; Ich hab von Verebung nicht viel Ahnung, mein bescheidenes Wissen kommt aus dem wenig hilfreichen Doberez Delphi 7 Grundlagen und Profiwissen. Vielen Dank im Voraus. |
Re: Neue Komponete mit Canvas, KeyPress und Click....
Hi,
grundsätzlich ist TScrollingWindow als Vorfahre nicht verkehrt, wenn du aber auch die Scrollbars verändern möchtest, wirst du diese sowieso selbst Zeichnen müssen und leitest dann besser von TCustomControl ab, zumal dieses die Methode Paint besitzt und damit das Zeichnen des Fensterinhalts einfacher wird. Möchtest du das Event OnKeyDown für Nutzer deiner Komponente zugänglich machen, schreibst du einfach
Delphi-Quellcode:
Extra aufrufen musst du OnKeyDown nicht, da das bereits von der Vorfahrklasse erledigt wird.
// ...
published { Published-Deklarationen } property OnKeyDown; end; Wenn du zusätzlich auch noch in der Komponente auf den Tastendruck reagieren willst, musst du die Methode KeyDown überschreiben, das heißt bei deiner Klassendeklaration fehlt noch die Anweisung override hinter KeyDown. Zitat:
|
Re: Neue Komponete mit Canvas, KeyPress und Click....
Zitat:
Ok, dann mach ich das damit. Zitat:
|
Re: Neue Komponete mit Canvas, KeyPress und Click....
Und wie stellt man es jetzt an das die Komponente auch den Focus bekommt?
|
Re: Neue Komponete mit Canvas, KeyPress und Click....
Hi,
die lösung lautet:
Delphi-Quellcode:
constructor TIrgendwas.Create(AOwner: TComponent);
begin; inherited Create(AOwner); TabStop := true; //<- Das hier ist wichtig - sonst nimmt es keinen Focus über z.B. die Tabtaste an :) end; |
Re: Neue Komponete mit Canvas, KeyPress und Click....
Thx, das habsch schon seit ewigkeiten gesucht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:22 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