Hallo,
Zitat:
[...] Dabei hilfst Du mir FM besser zu verstehen. Wobei ich sagen muss, dass mir vieles nicht so ganz einleuchtet.
Ich muss gestehen, dass ich bisher noch nicht wirklich mit FM gearbeitet habe. Ist für mich eine gute Gelegenheit mich da mal ein bisschen einzuarbeiten
.
Zitat:
Nun denn: mit den Fingern mache ich in der Tat etwas anderes [...]
Habe ich mir fast gedacht. Wie schon gesagt: Das mit dem Wischen, Tippen und Finger-Fummeln kann ich nicht testen. Aber mit dem Ansatz Gesten solltest Du schon richtig liegen.
Zitat:
[...] Delphi unterscheidet zwischen Standardgesten und interaktiven Gesten. OnGesture wird nur bei interaktiven Gesten ausgeführt, soweit ich das begriffen habe.
Nö. Die Standardgesten werden schon getriggert, wenn Du einen GestureManager nutzt, den jeweiligen Komponenten zuweist und die entsprechenden Standardgesten (im
OI: Touch -> Gestures -> Standard) einhängst.
Ich kann es zwar nicht mit Wischen, aber ich habe mal versucht das mit der Maus nachzubilden:
- Aufs Form eine ScrollBox (ScrollBox1), in diese Scrollbox ein Panel gelegt.
- Das Panel: Position (0, 0), Höhe und Breite so eingestellt, dass es die Grenzen der Scrollbox (deutlich) überschreitet.
- Dieses Konstrukt kopiert und aufs Form geklatscht.
- Ein GestureManager auf Form und an die ScrollBox1 gehängt (OI Eigenschaft Touch.GestureManager), als Standardgesten [Left,Right,Up,Down] und der ScrollBox1 ein OnGesture spendieren.
Dann kann ich mit:
Delphi-Quellcode:
type
TScrollBox = class (FMX.Layouts.TScrollBox)
end;
TForm1 = class(TForm)
ScrollBox1 : TScrollBox;
Panel1: TPanel;
GestureManager1: TGestureManager;
ScrollBox2: TScrollBox;
Panel2: TPanel;
procedure ScrollBox1Gesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
procedure FormCreate(Sender: TObject);
private
procedure SyncHScrollBars (Sender : TObject);
procedure SyncVScrollBars (Sender : TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ScrollBox1.OnHScrollChange := SyncHScrollBars;
ScrollBox1.OnVScrollChange := SyncVScrollBars
end;
procedure TForm1.ScrollBox1Gesture(Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
case EventInfo.GestureID of
sgiDown : ScrollBox1.ScrollTo (0, -40);
sgiLeft : ScrollBox1.ScrollTo (-40, 0);
sgiRight : ScrollBox1.ScrollTo (40, 0);
sgiUp : ScrollBox1.ScrollTo (0, 40);
end
end;
procedure TForm1.SyncHScrollBars (Sender : TObject);
begin
ScrollBox2.HScrollBar.Value := ScrollBox1.HScrollBar.Value
end;
procedure TForm1.SyncVScrollBars (Sender : TObject);
begin
ScrollBox2.VScrollBar.Value := ScrollBox1.VScrollBar.Value
end;
das Wischverhalten nachbilden und die beiden Scrollboxen synchronisieren.
Vielleicht hilft Dir das Beispiel Deine Listboxen (die sind ja letztlich von TScrollBox abgeleitet) zu synchronisieren.
Zitat:
Wo hast Du gefunden, wie die einzelnen Methoden getriggert sind?
FMX Sourcen anschauen.
Gruß