![]() |
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. |
AW: Auf TPaintBox schreiben / Tasten abfangen
Versuchs mit dem Parent der TPaintBox. Wenn es TForm ist, besitzt es ein OnKeyDown Event.
Delphi-Quellcode:
EDIT: Obwohl das klappt glaub ich auch nicht, da die Form ja kein OnKeyDown Event auslöst :\
if APaintBox.Parent is TForm then
(APaintBox.Parent as TForm).OnKeyDown := APaintBoxKeyDown; |
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 .... |
AW: Auf TPaintBox schreiben / Tasten abfangen
Zitat:
Was willst du eigentlich erreichen? Kannst du es erklären ohne dich auf bestimmte Delphi Komponenten festzulegen? |
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. |
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. |
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; |
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* |
AW: Auf TPaintBox schreiben / Tasten abfangen
Zitat:
Danke Bummi! Schöne Grüße aus Nürnberg, Manfred |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:28 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