Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Touchscreenfähiges TListView (https://www.delphipraxis.net/133010-touchscreenfaehiges-tlistview.html)

easywk 23. Apr 2009 19:20


Touchscreenfähiges TListView
 
Guten Abend zusammen,

ich muss eine Anwendung so gestalten, dass Sie auch touchscreenfähig ist. Trotzdem möchte ich den Anwendern die Möglichkeit geben, in einer TListView mehrere Einträge zu selektieren. Prinzipiell kann man das in meinen Augen am besten so gestalten, dass man mit
Delphi-Quellcode:
keybd_event(VK_CONTROL, MapVirtualKey(VK_CONTROL, 0), 0, 0);
eine STRG-Taste simuliert. Dann macht das TListView das Multiselect ja von alleine.

Mein Problem: ich kann nicht die ganz Zeit die STRG-Taste simulieren (sprich, ich muss die Taste ja auch mal wieder loslassen) und wenn ich das MouseDown-Event bekomme, ist es zu spät. Hat jemand eine Idee, wie ich geschickt das Drücken und Loslassen der STRG-Taste simuliere?

Ein Touch simuliert eine Maus, nur bekommt man in der Regel keine MausMove-Events, weil der Mauszeiger ja nicht bewegt wird :-)

Da mir weder die Suche hier noch bei google wirklich geholfen haben und ich mich mit dem Problem jetzt schon ziemlich lange rumschlage, bin ich für jede Idee dankbar ...

Gruß
easywk

uwewo 23. Apr 2009 19:47

Re: Touchscreenfähiges TListView
 
Hi easywk,

wenn ich das richtig verstehe, willst Du doch nur manchmal mehrere Zeilen im Listview selektieren.
Dazu könntest Du ja ein Button auf dem Schirm ausgeben der die Ctrl Taste darstellt
Zustand gedrückt oder nicht, und dann die richtige Ctrl Taste simulieren.
Oder verstehe ich was falsch?

Uwe

Mithrandir 23. Apr 2009 19:50

Re: Touchscreenfähiges TListView
 
Und wenn du einfach einen Doppelklick nutzt? Also, zweimal mit dem Finger auf einen Eintrag drücken, beim zweiten Mal Finger drauf lassen, dann runter ziehen, und loslassen. Und schon sind alle selektiert...

easywk 23. Apr 2009 20:01

Re: Touchscreenfähiges TListView
 
Zitat:

Zitat von uwewo
Dazu könntest Du ja ein Button auf dem Schirm ausgeben der die Ctrl Taste darstell

Ja, so ähnlich wollte ich es machen und zwar mit einem TSpeedButton (weil der die eigenschaft down hat, Zwei-Finger-Bedienung ist auf einem Touch nämlich nicht wirklich bedienerfreundlich). Ich wollte nur nicht beim Down des Speedbuttons die Taste posten, denn wenn der Anwender dann irgendwas anderes macht, ohne die Taste wieder zu deaktivieren, ist STRG die ganze Zeit gedrückt.

easywk 23. Apr 2009 20:03

Re: Touchscreenfähiges TListView
 
Zitat:

Zitat von Daniel G
Und wenn du einfach einen Doppelklick nutzt?

Doppelklick ist belegt und außerdem ist es schwierig, auf einem Touch mit dem Finger lückenlos zu ziehen. Ist ja keine "saubere Umgebung" sondern eine Maschinenhalle. Da habe die Leute unter Umständen Handschuhe an ohne ölige Finger. Trotzdem danke für die Idee.

Mithrandir 23. Apr 2009 20:06

Re: Touchscreenfähiges TListView
 
Zitat:

Zitat von easywk
Doppelklick ist belegt und außerdem ist es schwierig, auf einem Touch mit dem Finger lückenlos zu ziehen. Ist ja keine "saubere Umgebung" sondern eine Maschinenhalle. Da habe die Leute unter Umständen Handschuhe an ohne ölige Finger. Trotzdem danke für die Idee.

Jo, so'ne Umgebungen kenne ich. Aber die Frage ist dann, ob so eine "zierliche" ListView überhaupt für solche "Maschinenbauer-Pranken" bei einer Touch-Umgebung geeignet ist. Gibt es keine ander Darstellungsmöglichkeit?

easywk 23. Apr 2009 20:19

Re: Touchscreenfähiges TListView
 
Zitat:

Zitat von Daniel G
so eine "zierliche" ListView

Wieso zierlich? Font auf 24 gesetzt und schon hast du schöne große Einträge beim Style vsReport. Wenn du mit Icons/Bildern arbeitest, musst du halt entsprechend große Bilder wählen. Geht prima.

Mithrandir 23. Apr 2009 20:36

Re: Touchscreenfähiges TListView
 
Zitat:

Zitat von easywk
Zitat:

Zitat von Daniel G
so eine "zierliche" ListView

Wieso zierlich? Font auf 24 gesetzt und schon hast du schöne große Einträge beim Style vsReport. Wenn du mit Icons/Bildern arbeitest, musst du halt entsprechend große Bilder wählen. Geht prima.

Aber dann sollte das mit dem selektieren doch auch kein Problem sein, oder? Und wenn du ne Verzögerung von einigen Millisekunden einbaust, dass er nicht sofort die Strg-Taste "loslöst". So könntest du auch kleiner "Unebenheiten" ausgleichen.

easywk 23. Apr 2009 20:59

Re: Touchscreenfähiges TListView
 
Manchmal ist es einfacher als man denkt. Habe die Lösung gefunden.

Man bekommt auch auf dem Touch ein MouseMove-Event, wenn der Maus-Cursor vor dem Press ausserhalb des TListView steht. Und da mich auf dem Touch die Position des Maus-Cursors nicht wirklich interessiert, kann ich die Maus nach ButtonUp einfach ausserhalb des TListView platzieren. Dann kann ich STRG-Taste bei MouseMove des TListView "drücken" und bei MouseUp "loslassen". Da beide Events direkt hinter einander kommen, kann es auch nicht mehr passieren, dass STRG gedrückt ist und andere Elemente (z.B. eine Eingabebox) mit gedrücktem STRG bedient werden ...

cu
easywk

easywk 23. Apr 2009 21:02

Re: Touchscreenfähiges TListView
 
Zitat:

Zitat von Daniel G
Und wenn du ne Verzögerung von einigen Millisekunden einbaust, dass er nicht sofort die Strg-Taste "loslöst". So könntest du auch kleiner "Unebenheiten" ausgleichen.

Das "Ziehen" markiert dann aber ja nur untereinander liegende Einträge. Ich möchte aber eventuell den 3. 7. und 10. Eintrag markieren ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Seite 1 von 2  1 2      

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