AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Neue Komponete mit Canvas, KeyPress und Click....
Thema durchsuchen
Ansicht
Themen-Optionen

Neue Komponete mit Canvas, KeyPress und Click....

Ein Thema von Der_Ventilator · begonnen am 5. Jul 2004 · letzter Beitrag vom 10. Jul 2004
Antwort Antwort
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#1

Neue Komponete mit Canvas, KeyPress und Click....

  Alt 5. Jul 2004, 22:41
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:

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;
Wie muss ich das abändern, dass es wie beschrieben funktioniert?

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.
  Mit Zitat antworten Zitat
Niko

Registriert seit: 23. Jun 2003
416 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Neue Komponete mit Canvas, KeyPress und Click....

  Alt 5. Jul 2004, 23:03
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:
// ...
published
  { Published-Deklarationen }
  property OnKeyDown;
end;
Extra aufrufen musst du OnKeyDown nicht, da das bereits von der Vorfahrklasse erledigt wird.

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 von Der_Ventilator:
Ich hab von Verebung nicht viel Ahnung, mein bescheidenes Wissen kommt aus dem wenig hilfreichen Doberez Delphi 7 Grundlagen und Profiwissen.
Ich finde zumindest die Ausgabe für Delphi 2 nicht schlecht.
"Electricity is actually made up of extremely tiny particles called electrons, that you cannot see with the naked eye unless you have been drinking." (Dave Barry)
  Mit Zitat antworten Zitat
Der_Ventilator

Registriert seit: 11. Apr 2004
Ort: Kanada
136 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Neue Komponete mit Canvas, KeyPress und Click....

  Alt 9. Jul 2004, 16:31
Zitat von Niko:
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.
Danke
Ok, dann mach ich das damit.

Zitat von Niko:
Ich finde zumindest die Ausgabe für Delphi 2 nicht schlecht.
Ich bezog mich auf den Vererbungssteil, weil das Beispiel in diesem Buch eine andere Komponetenart beschrieben hat
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Neue Komponete mit Canvas, KeyPress und Click....

  Alt 9. Jul 2004, 16:58
Und wie stellt man es jetzt an das die Komponente auch den Focus bekommt?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
TheDoctor

Registriert seit: 9. Jul 2004
Ort: München
4 Beiträge
 
Delphi 5 Standard
 
#5

Re: Neue Komponete mit Canvas, KeyPress und Click....

  Alt 9. Jul 2004, 21:35
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;
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Neue Komponete mit Canvas, KeyPress und Click....

  Alt 10. Jul 2004, 08:55
Thx, das habsch schon seit ewigkeiten gesucht
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:48 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