Delphi-PRAXiS
Seite 3 von 3     123   

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/)
-   -   Stift Eingabe zum Schreiben auf Tablet (https://www.delphipraxis.net/192146-stift-eingabe-zum-schreiben-auf-tablet.html)

HolgerX 29. Mär 2017 12:20

AW: Stift Eingabe zum Schreiben auf Tablet
 
Hmm..

Zitat:

Zitat von Der schöne Günther (Beitrag 1365845)
PS: Eine Stelle kompiliert bei mir nicht weil
Delphi-Quellcode:
HitTestWithLasso(..)
an letzter Stelle einen
Delphi-Quellcode:
var
-Parameter erwartet:
Delphi-Quellcode:
function TInkDisp.HitTestWithLasso(Points: OleVariant; IntersectPercent: Single): IInkStrokes;
var
   lassoPoints: OleVariant;
begin
   lassoPoints := EmptyParam();
   Result := DefaultInterface.HitTestWithLasso(Points, IntersectPercent, lassoPoints);
end;


Nochmal hierzu..

unter Delphi 6 ist EmptyParam so in der 'Varints' deklariert

Delphi-Quellcode:
var
  EmptyParam: OleVariant;   // "Empty parameter" standard constant which can be
Ich vermute, das es bei späteren Delphi Versionen zu einer 'echten' const wurde!

Der schöne Günther 29. Mär 2017 12:29

AW: Stift Eingabe zum Schreiben auf Tablet
 
Ja fast, EmptyParam() ist jetzt eine Funktion, deshalb kann man es nicht mehr als VAR Parameter übertragen.

himitsu 29. Mär 2017 18:42

AW: Stift Eingabe zum Schreiben auf Tablet
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1365862)
Ja fast, EmptyParam() ist jetzt eine Funktion, deshalb kann man es nicht mehr als VAR Parameter übertragen.

Das ist auch gut so.

Ich hatte mal ausversehn die Konstante EmptyStr überschrieben,
mit dem Result, dass in allen leeren Spalten der cxDBGrids plötzlich etwas drin stand, obwohl da eigentlich überall ein NULL drin war, wenn man ins DataSet guckte.

Hatte nen Weilchen bedauert, bis ich den Grund fand. :stupid:

oakley 30. Mär 2017 16:00

AW: Stift Eingabe zum Schreiben auf Tablet
 
Sehr cool. Funktioniert einwandfrei.
Jetzt guck ich noch wie ich auf das Panel Photos bekomme und dann noch in A4 formatieren.

Richtig gut gemacht !!!

Gruß

Mirko

ULIK 3. Apr 2017 10:23

AW: Stift Eingabe zum Schreiben auf Tablet
 
Hi,

ich verwende das InkOverlay nun schon seit Jahren. Hat den Vorteil, Selektion, Radierer und Ähnliches gehen out of box. Aber Achtung: Probleme gibt es damit auf Touch-fähigen Systemen insbesondere ab Windows 8. Hier hat MS einen Bug eingebaut, so daß die 2-Finger Gesten zum Zoomen, Drehen nicht mehr funktionieren.
Und auch die reine Scrollgeste mit einem Finger funktioniert generell nicht, da das InkOverlay nicht zwischen Maus, Touch oder Digitizer-Eingaben unterscheiden kann: es wird immer alles als Eingabe betrachtet und entsprechend gelöscht, gezeichnet oder markiert!

Beim Arbeiten immer auch drauf beachten, daß die Reihenfolge von InkOverlay-Events zwar in sich immer gleich ist, aber die entsprechendenen VCL-Mouse-Events mal vor oder nach dem dazugehörigen InkOverlay-Event ausgeführt werden. Hier muß man die beiden Eventtypen funktional strikt trennen, wenn man beide verwenden will/muß.

Ach ja: wenn man damit arbeiten will: eine sehr gute Literaturempfehlung ist 'Building TabletPC Applications' von Rob Jarrett/Philip Su

oakley 12. Apr 2017 19:21

AW: Stift Eingabe zum Schreiben auf Tablet
 
Wenn MS da den Bug reingebaut hat, wie löst man dann zum Beispiel das Scrolling-Problem?

Ich habe generell übrigens noch Probleme das ich Bilder, die ich mit der Kamera gemacht habe nicht auf den Canvas bekomme.
Ich kann die zwar ablegen aber verschieben und die Größe ändern geht nicht.

Viele Grüße

Mirko

ULIK 13. Apr 2017 08:54

AW: Stift Eingabe zum Schreiben auf Tablet
 
Im Prinzip läuft es darauf hinaus, daß Du vor der eigentlichen Eingabe erkennst, daß eine Toucheingabe erfolgen wird. Dann setzt man die Stifteigenschaften auf unsichtbar (voll transparent), so daß am InkOverlay bei der Eingabe nichts gezeichnet wird. Die Daten des Stroke werden dann in den Events in Scrollbewegungen umgerechnet und das zugrundeliegende Fenster gescrollt.

InkOverlayCursorInRange: umschalten auf voll transparent wenn Touch (da kann man die Eigenschaften der DrawingAttributes noch ändern - in späteren Events geht das nämlich nicht mehr!. Ob der Cursor des Event eine Toucheingabe ist, frägst Du so ab:
Delphi-Quellcode:
var
  iInkTablet2: IInkTablet2Disp;
begin
  Result := False;

  // Test, ob man TOUCH-Cursor ist
  if Supports(ACursor.Tablet, IID_IInkTablet2, iInkTablet2) then
    Result := (iInkTablet2.DeviceKind = TDK_Touch);
end;
Weiter geht's in InkOverlaySystemGesture: bei ID = ISG_Tap oder ISG_Drag mußt Du nun das Scrollen aktivieren (Merken der aktuellen Ausgangsposition)

In InkOverlayNewPackets wird dann das unterliegende Fenster gescrollt (als Differenz zur Position im SystemGesture)

in InkOverlayStroke mußt Du auf alle Fälle den bis dahin erstellten Stroke wieder verwerfen (Cancel auf True setzen), sonst wird diese gespeichert!

in InkOverlayCursorOutOfRange müssen dann die Drawing-Attributes wieder auf die ursprünglichen zurückgesetzt werden.

Das Problem dabei: NewPackets feuert sehr oft. Hier hilft es nun, auch die Mouse-Events zu benutzen und das Scrollen dorthin zu verlagern; da das MouseMove des unterliegenden Fenstern nicht so oft aufgerufen wird. Klappt deswegen, weil MouseMove IMMER nach InkOverlayCursorInRange und vor InkOverlayStroke / InkOverlayCursorOutOfRange erfolgt.

Ich kann Dir leider keinen fertigen Code dafür geben. Du mußt das an deine Anwendung geeignet anpassen. Aber das Prinzip sollte nun klar sein. Damit kann man das Toucscrolling simulieren, wenn es auch nicht so schön glatt läuft wie ein reguläres Scrollen.

Eine Zoom-Gesture läßt sich leider mit diesem Verfahren nicht simulieren, da immer nur der erste Touch-Punkt erkannt wird. Hierzu hab ich auch keine Lösung.


Grüße,
Uli

oakley 13. Apr 2017 11:01

AW: Stift Eingabe zum Schreiben auf Tablet
 
Hallo Uli,

danke für die ausführliche Info.
Ich bin im Moment etwas eingespannt, werde das aber nach Ostern wieder angehen.

Viele Grüße

Mirko

bayou 17. Feb 2018 22:56

AW: Stift Eingabe zum Schreiben auf Tablet
 
Hat sich erledigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:52 Uhr.
Seite 3 von 3     123   

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