AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Tastatur Eingabe im Canvas Objekt

Ein Thema von akurka · begonnen am 29. Okt 2014 · letzter Beitrag vom 3. Nov 2014
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#11

AW: Tastatur Eingabe im Canvas Objekt

  Alt 30. Okt 2014, 13:15
Nicht alle Tasten stehen in OnKeyPress zur Verfügung. (Pfeil-Tasten z.B.)
In diesem Fall OnKeyDown oder OnKeyUp verwenden.

Alternativ kommt man über MSDN-Library durchsuchenGetAsyncKey an die Tasten, aber ein Event hat viele Vorteile. (voallem daß sie sofort reagieren und man nicht pollen muß)
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#12

AW: Tastatur Eingabe im Canvas Objekt

  Alt 30. Okt 2014, 13:37
Hallo bcvs
Ja richtig, aber es werden in den späteren Menues/Forms u.A auch Koordinateneingaben folgen.
Aber onKeyPress oder Down.. funktionieren unter Canvas nicht,ob ich keyPreview auf on oder off hat kein Einfluss.
Die onkey.. funktionieren im Form2 bis zu dem Punkt wo ich mit Button in Form1
der Menüaufbau im Form2 starte (diese wird mit Form2.Canvas.rectangle , row,column ,usw. gemacht.Ab diesen Punkt ist keine Eingabe über Tastatur möglich.
gruss Anton
Anton Kurka
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#13

AW: Tastatur Eingabe im Canvas Objekt

  Alt 30. Okt 2014, 17:49
Wenn ich dich richtig verstehe, malst du deine Ausgabe auf den Canvas des Form.

Und wo sollen die Koordinaten dann später eingegeben werden?. Du könntest doch deine Ausgabe auch in eine Paintbox malen, die nicht das ganze Form ausfüllt und z.B. oberhalb noch ein Editfeld oder sonstige sinnvolle Komponenten reinsetzen.
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#14

AW: Tastatur Eingabe im Canvas Objekt

  Alt 30. Okt 2014, 23:30
Hallo bcvs
ja, es wird alles auf der FormX.Canvas dargestellt, sowohl die div. Anzeigen sowie die Eingaben. Anzufügen ist,dass ich in der Gestaltung
nur sehr wenig Spielraum habe, die Kunden benützen die bisherige Menüs schon Jahrelang. So soll es in der Aufteilung sowie in der Bedienung gleich bleiben.
Du fragst, wo sollen die Koordinaten eingegeben werden.
Ich lege eine Abbildung von alten Menüs bei. Das wird dann das neue Form3/Progmenue sein. Das Ganze aufzuteilen ist praktisch unmöglich, darum muss ich eine Möglichkeit finden für eine direkte Eingabe auf dem Canvas.
Himitsu's Vorschlag für Form2/MAN-REF Menu mit GetAsyncKeyStatus funktioniert, für ein einziges Zeichen geht es noch. Für lange und viele Eingaben ist es aber sehr umständlich.
Gruss Anton
Miniaturansicht angehängter Grafiken
progmenue3.jpg  
Anton Kurka
  Mit Zitat antworten Zitat
pelzig
(Gast)

n/a Beiträge
 
#15

AW: Tastatur Eingabe im Canvas Objekt

  Alt 30. Okt 2014, 23:46
Kann zwar nicht so ganz folgen, aber:

Warum nicht ein unsichtbares TEdit aufs Formular klatschen und je nach dem, was der Anwender drückt, sichtbar machen und dann den Focus auf das TEdit setzen?

Eingaben werden dann vom TEdit entgegengenommen und sollten mit der Esc-Taste verworfen werden (wodurch TEdit wieder versteckt wird).

Allerdings müssten dann Eingaben, die ins TEdit getippt werden, noch mit Return bestätigt werden.

MfG


P.S.: Geile Screenshots mit verwaschenen Schriftgrö0en < 4. Weiter so!
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#16

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 00:23
We know that focus is the ability to receive user input through the mouse or keyboard. Only the object that has the focus can receive a keyboard event. Some controls, such as TImage, TPaintBox, TPanel and TLabel cannot receive focus. The primary purpose of most graphic controls is to display text or graphics.

aus "Delphi about Technology" page
Anton Kurka
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#17

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 08:17
Zitat:
darum muss ich eine Möglichkeit finden für eine direkte Eingabe auf dem Canvas.
In einen Canvas kann man nichts eingeben, darauf kann man nur zeichnen. Alternativ zu pelzigs Vorschlag könntest du auch ein TEdit benutzen, dass ständig den Focus hat. Im OnKeyDown des TEdits reagierst du dann auf Sondertasten wie F1 bis F10 oder deine anderen Steuertasten. Wenn die ankommenden Zeichen als Koordinateneingabe interpretiert werden (wie das unterschieden wird, weißt du selbst am besten), werden sie ganz normal ins TEdit eingetippt.

Ich weiß auch immer noch nicht, wie es aussehen soll, wenn längere Werte eingetippt werden. Willst du die einzelnen Zeichen dann gleich auf den Canvas malen?

Wenn das Edit nicht sichtbar ein soll, kann du es auch außerhalb des Forms plazieren , z.B. mit top=-100.

Zitat:
Only the object that has the focus can receive a keyboard event. Some controls, such as TImage, TPaintBox, TPanel and TLabel cannot receive focus.
Deshalb brauchst du ja
1. eine Komponente, in die du zeichnen kannst. Dazu nimmt man normalerweise eine Paintbox.
2. eine Komponente, die den Focus erhalten kann, z.B. ein TEdit.
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#18

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 09:17
Halo bcvs
Nun das habe ich schon zweimal probiert und jetzt auch noch drittemal.Die Eingabe ins Edit
hat nach dem (Canvas)Bildaufbau kein Focus mehr, obwohl ich Form2.Edit1.SetFocus auch nach dem
BildAufbau aufgerufen habe. Probiere das mal selber, es geht nicht !

Zitat:
We know that focus is the ability to receive user input through the mouse or keyboard. Only the object that has the focus can receive a keyboard event. Some controls, such as TImage, TPaintBox, TPanel and TLabel cannot receive focus. The primary purpose of most graphic controls is to display text or graphics.
If we want to intercept keyboard input for controls that cannot receive the input focus we'll have to deal with Windows API, hooks, callbacks and messages.

Windows Hooks
Technically, a "hook" function is a callback function that can be inserted in the Windows message system so an application can access the message stream before other processing of the message takes place. Among many types of windows hooks, a keyboard hook is called whenever the application calls the GetMessage() or PeekMessage() function and there is a WM_KEYUP or WM_KEYDOWN keyboard message to process.

To create a keyboard hook that intercepts all keyboard input directed to a given thread, we need to call SetWindowsHookEx API function
Ich habe es mit den Tastatur Hook auch bereits probiert, aber vermutlich nur mit local Hook,
was aber nicht funktionierte, man müsste offenbar Global Hook verwenden.
Gruss Anton
Anton Kurka
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
703 Beiträge
 
Delphi 12 Athens
 
#19

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 09:36
Das muss aber gehen. Ich vermute, das Problem liegt ganz woanders.

Der Focus hat doch nichts mit dem Canvas tun.
Zeig doch mal ein bischen Code. Wo machst du denn den Bildaufbau? Der gehört ins OnPaint der Paintbox (oder des Forms, wenn du direkt auf das Form malst).

Zitat:
Form2.Edit1.SetFocus
Lass das Form2 weg und schreib einfach Edit1.SetFocus . Innerhalb einer Form-Klasse auf die eigene Form-Variable zuzugreifen ist ein schlechter Stil, da nicht sichergestellt ist, dass Form2 immer existiert oder immer so heißt.
  Mit Zitat antworten Zitat
Benutzerbild von akurka
akurka

Registriert seit: 30. Dez 2008
Ort: Schweiz, 8636 Wald ZH
81 Beiträge
 
Delphi 7 Personal
 
#20

AW: Tastatur Eingabe im Canvas Objekt

  Alt 31. Okt 2014, 10:01
Edit1.SetFocus schluckt der compiler nicht.
In der Beilage die zwei relevante units.
Angehängte Dateien
Dateityp: zip Form2Bildaufbau.zip (4,2 KB, 5x aufgerufen)
Anton Kurka
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      

 

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:45 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