Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Auf TPaintBox schreiben / Tasten abfangen (https://www.delphipraxis.net/167115-auf-tpaintbox-schreiben-tasten-abfangen.html)

Root2k 14. Mär 2012 08:42

Auf TPaintBox schreiben / Tasten abfangen
 
Hallo,

ich würde gerne die Tastatureingaben (Buchstaben und Zahlen) des Anwenders auf die Zeichenfläche (Canvas) einer TPaintBox schreiben.
Leider besitzt eine PaintBox kein Ereignis "OnKeyDown" oder dergleichen. Nun weiß ich nicht, wie ich die Tasten abfangen kann.

Über ein TApplicationEvents-Objekt weiß ich leider nicht wie das funktionieren könnte. Egal welche Taste ich drücke, bekomme ich immer die Message "256" und "258".

Diverse Suchmaschinen konnten mir bei dem Problem leider nicht weiterhelfen. Ich hoffe jedoch, dass das einer von euch kann.

Bin für jeden hilfreichen Vorschlag dankbar.

pustekuchen 14. Mär 2012 09:02

AW: Auf TPaintBox schreiben / Tasten abfangen
 
Versuchs mit dem Parent der TPaintBox. Wenn es TForm ist, besitzt es ein OnKeyDown Event.

Delphi-Quellcode:
if APaintBox.Parent is TForm then
    (APaintBox.Parent as TForm).OnKeyDown := APaintBoxKeyDown;
EDIT: Obwohl das klappt glaub ich auch nicht, da die Form ja kein OnKeyDown Event auslöst :\

Bummi 14. Mär 2012 09:07

AW: Auf TPaintBox schreiben / Tasten abfangen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal einen Rumpf angehängt, das weitere überlasse ich Dir ....

Auf ein Panel legen, Panel mit OnKeyPress erweitern/versorgen ....

sx2008 14. Mär 2012 09:23

AW: Auf TPaintBox schreiben / Tasten abfangen
 
Zitat:

Zitat von Root2k (Beitrag 1156469)
ich würde gerne die Tastatureingaben (Buchstaben und Zahlen) des Anwenders auf die Zeichenfläche (Canvas) einer TPaintBox schreiben

Man kann das machen aber eigentlich ist das eine blöde Idee™ weil eine Paintbox nicht zum Anzeigen von Tasteneingaben konstruiert wurde.
Was willst du eigentlich erreichen?
Kannst du es erklären ohne dich auf bestimmte Delphi Komponenten festzulegen?

Root2k 14. Mär 2012 09:54

AW: Auf TPaintBox schreiben / Tasten abfangen
 
Erstmal danke für alle Antworten!

Den Code von Bummi werde ich mir gleich mal anschauen.

@sx2008:
Ich schreibe momentan ein kleines Zeichenprogramm, bei dem eben auch die Möglichkeit bestehen soll auf die Zeichenfläche zu schreiben. Das Zeichenprogramm verwendet als Hauptkomponente eine PaintBox, bzw. meine eigene Abwandlung davon (neue Komponente / Vererbung).
Ich habe auch schon einmal ein kleines Zeichenprogramm geschrieben, bei dem ich ein TImage32-Objekt verwendet habe. Aber da stoße ich dann auf ganz andere Probleme (u.A. Flackern).
Ich würde die PaintBox also auch gerne beibehalten.

Root2k 14. Mär 2012 10:33

AW: Auf TPaintBox schreiben / Tasten abfangen
 
@Bummi:
Danke für den Code. So werde ich es vermutlich machen.

Da ich aber eine eigene Komponente entworfen habe (abgeleitet von PaintBox) muss ich über die Form/EXE das Handling stuern. Am liebsten wäre es mir aber, wenn ich die Logik direkt in der Komponente verankern könnte. Dann funktioniert das mit dem Panel wohl nicht (meiner Meinung nach), oder kann ich das irgendwie mit in die Komponente einbauen?

--
Edit:
Sorry übrigens für den doppelten Eintrag. Hätte eigentlich den letzten Eintrag editieren sollen.

Bummi 14. Mär 2012 12:37

AW: Auf TPaintBox schreiben / Tasten abfangen
 
ein bisschen tricksen in der Komponente kannst Du schon
Delphi-Quellcode:
procedure TMyKomp.MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
    if not Assigned(FPanel) then
      begin
       FPanel := TPanel.Create(self);
       FPanel.OnKeyPress := MyOnKeyPress;
       FPanel.Width := 0;
       FPanel.Height := 0;
       FPanel.parent := Parent;
      end;
    FPanel.SetFocus;
    Fx := X;
    Fy := Y;
end;

Root2k 14. Mär 2012 12:55

AW: Auf TPaintBox schreiben / Tasten abfangen
 
Hm, nicht schlecht. Könnte klappen :)

Danke dir!! :thumb::thumb:

--

Edit:
Funktioniert wunderbar.
Danke für die Hilfe!

*closed*

mz23 23. Mär 2012 05:43

AW: Auf TPaintBox schreiben / Tasten abfangen
 
Zitat:

Zitat von Bummi (Beitrag 1156477)
Ich habe mal einen Rumpf angehängt, das weitere überlasse ich Dir ....

Auf ein Panel legen, Panel mit OnKeyPress erweitern/versorgen ....

Das löst auch eines meiner vielen Probleme:)
Danke Bummi!

Schöne Grüße aus Nürnberg,
Manfred


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