AGB  ·  Datenschutz  ·  Impressum  







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

Bildschirmtastatur

Ein Thema von Nightfly · begonnen am 17. Okt 2005 · letzter Beitrag vom 21. Okt 2005
Antwort Antwort
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#1

Bildschirmtastatur

  Alt 17. Okt 2005, 10:20
Hi

Vlt. kennen einige von euch diese Bildschirmtastaturen, die man v.a. bei Tablet PC's findet. Das sind so kleine Programme, die eine Tastatur nachbilden, welche sich via Maus (oder eben via Touchscreen) bedienen lässt.

Ich brauche sowas nur für Zahlen, will also auch sowas schreiben. Aber ich habe keinen Schimmer mit welcher Technik sowas geht, und demzufolge sucht es sich schwer. Kann mir da einer weiterhelfen?

Ich will also ein Programm, das in erster Linie aus 10 Buttons besteht, und wenn ich einen klicke, in einem anderen Programm die entsprechende Zahl in einem Edit Feld erscheint.

Erste Sorge die ich mir mache: Mein Keyboard ist aktiv, 5 weitere Programme inaktiv, woher weiß ich an welchses Prog die Eingaben gesendet werden sollen...

Bzw. wie gehe ich überhaupt an sowas ran?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Bildschirmtastatur

  Alt 17. Okt 2005, 10:45
Der wesentlichste Parameter hierbei duerfte WS_EX_NOACTIVATE fuer die CreateParams sein.
Delphi-Quellcode:
type
  TMyFrom = class(TForm)
  protected
   procedure CreateParams(var Params: TCreateParams); override;
  end;

procedure TMyForm.CreateParams(var Params: TCreateParams);
begin
  Params.ExStyle := Params.ExStyle or WS_EX_NOACTIVATE;
end;
Natuerlich darf man keine TWinControls verwenden, also nur TGraphicControls.

Jetzt sollte das Fenster nicht aktiv werden und der Focus deshalb bleiben wo er war.
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#3

Re: Bildschirmtastatur

  Alt 17. Okt 2005, 11:02
HiHo,

wenn du möchtest, dass dein Fenster immer sichtbar ist, die Anzeige der anderen Programme aber nicht behindert, kannst du es auch als App-Bar erstellen. Chakotay1308 hat dazu mal ein Tutorial geschrieben, nach dem sogar ich ein Application-Bar hinbekommen habe. (Besten Dank an dieser Stelle an Chakotay1308 )
Damit kannst du deine Bildschirm-Tastatur an den oberen (rechten, linken) Bildschirmrand docken, und die anderen Programme überdecken sie nicht.

Pseudo-Halbwissen
Zur Umsetzung der Tastatur: Du wirst wohl beim OnClick auf die Zahlen-Buttons ein Tastatur-Event erzeugen und zusehen, dass das Client-Fenster den Fokus behält. Zu Tastatur-Events müsste die Foren-Suche mengenweise ausspucken... (Zumindest habe ich immer wieder Themen gesehen, die sowas als Titel hatten )


MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#4

Re: Bildschirmtastatur

  Alt 17. Okt 2005, 11:13
Hmm...die Idee gefällt mir sehrgut, ich glaub damit kann ich was anfangen...
  Mit Zitat antworten Zitat
Nightfly

Registriert seit: 25. Mär 2004
Ort: Dresden
118 Beiträge
 
#5

Re: Bildschirmtastatur

  Alt 21. Okt 2005, 16:08
Also das mit der AppBar hat wunderbar geklappt. Aber WS_EX_NOACTIVATE kennt er nich (unbekannter Bezeichner). Nehme ich z.B. WS_EX_APPWINDOW bekomm ich nen Laufzeitfehler Wie kann ich verhindern das mein Fenster den Kokus bekommt?

Und wie kann ich Tastendrücke simulieren? KeyPress(); geht leider nich so richtig...finde irgendwie auch nyx passendes...
  Mit Zitat antworten Zitat
Benutzerbild von hanselmansel
hanselmansel

Registriert seit: 23. Feb 2005
Ort: Kaiserslautern
279 Beiträge
 
Delphi 2009 Enterprise
 
#6

Re: Bildschirmtastatur

  Alt 21. Okt 2005, 16:42
Das mit dem Fokus weiß ich nicht, aber wegen den Tastatur-Events habe ich mal die DP-Suche bemüht. [dp="taste AND simulieren"]Klick mich![/dp] Dort finden sich viele Threads, die vielversprechende Funktionen aufführen. Einfach mal ausprobieren, ob sie in deinem Fall funktionieren.

Ich habe keine Ahnung, ob das so funktioniert, aber vieleicht geht es ja.
Lösungsansatz für den Fokus
Sollte Windows eine Message verschicken, die besagt, dass irgendein Fenster gerade den Fokus bekommen hat, so könntest du in deinem Programm auf diese Message hören, und dir das Handle des Fensters merken. Wenn du dann eine Bildschirmtaste drückst, bekommt deine AppBar wohl oder übel den Fokus. Vieleicht kannst du aber etwas hinfixxen (wieder mal mit Hilfe vom API), dass dein AppBar dem Fenster mit gespeichertem Handle wieder den Fokus gibt, und danach ein Tastaturevent auslöst.

Luckie, Hagen, bitte schlagt mich nicht für diesen Verschnitt auf das API.

MfG,

hanselmansel
Es gibt nur sehr wenige Probleme auf dieser Welt, die sich nicht mit einigen hundert Gramm Sprengstoff lösen ließen.
  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 07:04 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