![]() |
Display drehen - Sensor oder API?
Hallo,
ich habe ein kleine App die u.A. auch auf Tablets läuft. Wenn der Bildschirm (das Tablet) gedreht wird, möchte ich das mit bekommen, um die Anzeige (mehrere Panels auf einer Form) neu auszurichten. Erster Gedanke war "OrientationSensor" auf die Form, und dann tut es. Tut aber nicht.
Delphi-Quellcode:
Also, was kann man da noch verkehrt machen? Darum habe ich gegoogelt, in der Hoffnung eine WinAPI-Message zu finden, die in dem Augenblick gefeuert wird, wenn das Display gedreht wird. Auch ohne Erfolg. Vermutlich waren es die falschen Suchbegriffe. Jetzt stehe ich irgendwie auf dem Schlauch, und darum frage ich mal nach einem Ansatzpunkt.
procedure TForm1.FormCreate(Sender: TObject);
begin ... OrientationSensor.Active := true; ... end; procedure TForm1.OrientationSensorSensorChoosing(Sender: TObject; const Sensors: TSensorArray; var ChoseSensorIndex: Integer); var i: integer; begin // wird niemals aufgerufen for i := Low(Sensors) to High(Sensors) do ShowMessage(Sensors[i].Description + ' => ' + Sensors[i].Manufacturer); end; procedure TForm1.OrientationSensorStateChanged(Sender: TObject); begin // wird niemals aufgerufen end; |
AW: Display drehen - Sensor oder API?
Wenn das Display nicht quadratisch ist, dann müsste ja ein
Delphi-Quellcode:
Event kommen :stupid:
TForm.OnResize
Portrait => Breite ist kleiner als Höhe Landscape => Höhe ist kleiner als Breite Quadrat => Breite ist gleich Höhe |
AW: Display drehen - Sensor oder API?
Da ein Tablet ja in aller Regel eine recht statische Angelegenheit ist, kannst Du dort z.B. auch auf ".FormResize()" reagieren, welches auf den mobilen Geräten nur ausgelöst werden kann, wenn das Gerät gedreht wird. Wenn Du dann die Größenverhältnisse abfragst, kannst Du herausfinden, ob es sich um Hoch- oder Querformat handelt.
Das Einzige, was Du so nicht mitbekommst, ob das Gerät vielleicht auf dem Kopf steht - sollte das für Dich wichtig sein. //edit: Verflixt, immer diese sich vordrängelnden Schnell-Schreiber. :mrgreen: |
AW: Display drehen - Sensor oder API?
ja ja...die Schnellschreiber :-D
Danke für den Tipp! Sorry, ich hätte das wohl angeben sollen: BorderStyle = bsNone. Da kommt kein TForm.OnResize beim Drehen. Ist das WAD oder Windows-Bug oder VCL-Bug? Oder bin ich heute etwas "buggy". Ich glaub, heute ist nicht so ganz mein Tag :coder2: |
AW: Display drehen - Sensor oder API?
Aha, ja da fehlte doch ein wenig Information ...
Ich versuche jetzt mal zu interpretieren:
Wenn man an gar keinen Event kommt, dann geht immer eine kurze Abfrage im Idle-Mode (und das funktioniert dann auch zuverlässig ohne grosses Gedöns) ;) |
AW: Display drehen - Sensor oder API?
@SirRufo Screen.Width und Screen.Height hatte ich natürlich auch probiert, aber Beide ändern sich nicht, wenn das Tablet gedreht wird.
Die App ist ein uraltes Tool für den privaten Gebrauch (Textanzeige für mich und meine Musikerkollegen) und noch mit D7 erstellt. Ich fass es nicht. Habe soeben die App mit XE7 compiliert und da kommt
Code:
auch bei
TForm.OnResize
Code:
Jetzt werde ich wohl endgültig die alte VM mit D7 auflösen (müssen) :oops:
BorderStyle := bsNone
Danke nochmals für die Bemühungen! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz