AW: XE7: Zoom von Android App -wie?
Zitat:
Delphi-Quellcode:
Mavarik
procedure TMainForm.FormResize(Sender: TObject);
var X,Y : Single; begin X := ScaledLayout1.OriginalWidth; Y := ScaledLayout1.OriginalHeight; if (Self.ClientWidth / ScaledLayout1.OriginalWidth) < (Self.ClientHeight / ScaledLayout1.OriginalHeight) then begin ScaledLayout1.Width := Self.ClientWidth; ScaledLayout1.Height := (Self.ClientWidth * ScaledLayout1.OriginalHeight) / ScaledLayout1.OriginalWidth; Scaledlayout1.Position.X := 0; Scaledlayout1.Position.Y := (Self.ClientHeight - ScaledLayout1.Height) / 2; end else begin ScaledLayout1.Height := Self.ClientHeight; ScaledLayout1.Width := (Self.ClientHeight * ScaledLayout1.OriginalWidth) / ScaledLayout1.OriginalHeight; Scaledlayout1.Position.Y := 0; Scaledlayout1.Position.X := (Self.ClientWidth - ScaledLayout1.Width) / 2; end; end; |
AW: XE7: Zoom von Android App -wie?
Moin,
also ich glaube ich bin einfach zu blöd dafür. ich nimm ein neues Projekt für eine Mobil-Anwendung, packe dort ein ScaledLayout und in diese Ein Label und den Gestenmanager. Dann stelle ich beim Form das zoom auf aktiv und es passiert auf dem Android-gerät nichts. Irgendwas fehlt an Informationen ... Gruß HEiko |
AW: XE7: Zoom von Android App -wie?
Zitat:
Vergiss das ScaledLayout... oder kannst Du das Fenster auf Deinem Handy mit der Maus groß ziehen? |
AW: XE7: Zoom von Android App -wie?
Moin,
Zitat:
Delphi-Quellcode:
,
FLastDIstance
Delphi-Quellcode:
und
ZoomWidth
Delphi-Quellcode:
herkommen?
ZoomHeight
Gruß Heiko |
AW: XE7: Zoom von Android App -wie?
Warum schaust du dir zu diesem Thema nicht einfach mal die Demo von Emba an? Dafür sind die doch da (oder wofür sonst)? :gruebel:
Und den GestureManager brauchst du nicht, aber du musst schon dem FMX.Types.TTouchManager z.B. der Form FMX.Forms.TCommonCustomForm.Touch sagen, auf welche Gesten du reagieren möchtest :) |
AW: XE7: Zoom von Android App -wie?
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Morgen,
Zitat:
Wen das alles so einfach ist, dann bräuchte ich doch nur wie angehängten Beispiel vorgehen. Leeres Form für Mobile Anwendungen, Eigenschaften für Interaktive Gesten aktivieren und alles fein, aber es läuft nicht. Auch wenn ich aus dem Wiki die Muster-Procedure für das Anzeigen der genutzten Geste einbinde, bekomme ich trotzdem kein verlässliche Information welche Geste genutzt wurde. Entweder bin ich wirklich zu blöd oder es ist wieder mal in den Tiefen der Delphi Einstellungen etwas zu aktivieren das bei mir nicht aktiviert ist. Weder auf meinem Trekstor-Tablet noch auf meinem Samsung Galaxy S5 mini bekomme ich eine Gesten-App funktionsfähig zum Laufen. Gruß Heiko |
AW: XE7: Zoom von Android App -wie?
Oh, Ja, Mist - nicht für Android weil kein OpenDingsbums, dann schnell wieder weg und bloß nicht weiter anschauen :wall:
Ich dachte es geht dir um die Gesten? Warum schaust du dir nicht an dem Beispielprojekt an, wie das mit den Gesten gemacht werden muss? Das Drumherum kann dir doch egal sein. Wenn die mit einem OpenDialog Bilder öffnen und es das auf der Zielplattform nicht gibt, dann schmeiß den Rotz einfach weg. Ist doch nur Zuckerguß, denn mit den Gesten hat das nichts zu tun. Zu deinem Testprogramm: Ja, wo hast du denn der Anwendung gesagt wie auf die Gesten reagiert werden soll? Du hast zwar eingestellt, dass auf (und welche) Gesten reagiert werden soll, aber wie denn bitteschön? Ohne
Delphi-Quellcode:
Event wird das nichts.
OnGesture
Zu dem Beispielcode von Mavarik:
Delphi-Quellcode:
unit Form.Main;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, FMX.Layouts, FMX.ListBox; type TMainForm = class( TForm ) ZoomPanel: TPanel; Label1: TLabel; procedure FormGesture( Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean ); private FLastDistance: Integer; FZoomWidth, FZoomHeight: Single; public procedure AfterConstruction; override; end; var MainForm: TMainForm; implementation {$R *.fmx} procedure TMainForm.AfterConstruction; begin inherited; Label1.Text := 'Ich kann größer werden'; // ZoomPanel-Werte sichern FZoomWidth := ZoomPanel.Width; FZoomHeight := ZoomPanel.Height; // Gesten-Behandlung Self.OnGesture := FormGesture; Self.Touch.InteractiveGestures := [TInteractiveGesture.Zoom]; end; procedure TMainForm.FormGesture( Sender: TObject; const EventInfo: TGestureEventInfo; var Handled: Boolean ); var LScale, Direction: Single; begin if EventInfo.GestureID = igiZoom then begin if not( TInteractiveGestureFlag.gfBegin in EventInfo.Flags ) and not( TInteractiveGestureFlag.gfEnd in EventInfo.Flags ) then begin Direction := EventInfo.Distance / FLastDistance; LScale := ZoomPanel.Scale.X * Direction; if LScale < 1 then LScale := 1; ZoomPanel.Scale.X := LScale; ZoomPanel.Scale.Y := LScale; ZoomPanel.Width := FZoomWidth * LScale; ZoomPanel.Height := FZoomHeight * LScale; end; FLastDistance := EventInfo.Distance; end; end; end. |
AW: XE7: Zoom von Android App -wie?
Guten Morgen,
QUOTE=Sir Rufo;1279139]Oh, Ja, Mist - nicht für Android weil kein OpenDingsbums, dann schnell wieder weg und bloß nicht weiter anschauen :wall: [/QUOTE] Ich habe es mir angeschaut und ich habe den Code sogar von der Windows-App in eine Android-App übertragen. Das Projekt ging dann auch auf aber bei der Zoom-Geste passierte im Gegensatz zu Deinem letzten Beispiel nichts. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zu dem Beispielcode von Mavarik: Zitat:
Zitat:
Zitat:
(Was Delphi ja auch nicht automatisch macht). MfG Heiko |
AW: XE7: Zoom von Android App -wie?
Zitat:
Zitat:
Delphi-Quellcode:
sein müssen, sollte klar sein und in dem Beispiel-Code von mir (der ja funtkioniert) habe ich die einfach ganz lapidar als Felder
Single
Delphi-Quellcode:
eingeführt und auch so benutzt. Mir doch egal wie und wo der Mavarik (nix für ungut) die da deklariert hat. Ich brauche das was, als mache ich da was. Punkt. Was dort für Werte rein müssen, habe ich ja schon erklärt.
FZoomHeight, FZoomWidth : Single
Ein bisserl Mitdenken sollte man doch verlangen können :roll: Und das Delphi da nix von selber macht - das ist gut so, denn dann kann man auch aus der Zoom-Geste ein Rotieren machen. So wie es einem beliebt. Ob das sinnvoll ist, steht auf einem anderen Blatt, aber ich habe die Freiheit das so umzusetzen wie ich möchte und muss nicht umständlich irgendeinen Automatismus den ich nicht will wieder korrigieren, nur um das zu machen was ich will. Ach ja, Delphi ist zum programmieren -> aktiv Code schreiben gedacht :) |
AW: XE7: Zoom von Android App -wie?
Moin,
Zitat:
Zitat:
Zitat:
Zitat:
Aber im Endeffekt muss Du nicht nur auf den Zielsystemen vorhandene Standards selber programmieren, sondern auch noch für die unterschiedlichen Systeme unterschiedliche Lösungen bereit stellen z.B. der
Delphi-Quellcode:
.
OpenDialog
Auch kannst Du nicht einfach im Masterlayout alles so platzieren wie Du es brauchst und es passt auf allen System, sondern Du musst z.B. für Android die Komponenten dann wieder anders anordnen. Zitat:
Wenn ich eine Komponente auf ein Form platziere, dann wird alles dafür nötig von Delphi automatisch ins Programm geschrieben. Warum nicht auch die Rudimentären Gestenbehandlungen wenn man eine Geste im Objektinspektor aktiviert? Danke. Für Deine Hilfe. MfG Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:15 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