AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Position der FMX-Formulare zur Laufzeit verändern (Delphi XE 10.1)

Position der FMX-Formulare zur Laufzeit verändern (Delphi XE 10.1)

Ein Thema von Delphi-Laie · begonnen am 2. Nov 2016 · letzter Beitrag vom 3. Nov 2016
Antwort Antwort
Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

AW: Position der FMX-Formulare zur Laufzeit verändern (Delphi XE 10.1)

  Alt 2. Nov 2016, 21:56
Position wird "nur" beim Anzeigen (Show, bzw. kurz nach dem Create) ausgewertet und dementsprechend werden Top und Left gesetzt.
Die Position soll nicht ausgewertet, sondern nach Änderung sofort gesetzt werden, d.h., wenn die Positionsvariable des betreffenden Formulares einen neuen Wert zugewiesen bekommet, soll die Position des Formulares auf dem Bildschirm entsprechend gesetzt, angepaßt, verschoben werden! Dieses Verhalten kenne ich jedenfalls seit Delphis Urzeiten von den VCL-Formularen so. Welchen Sinn hat denn sonst das Verändern der Positionsvariablen zur Laufzeit?!

Um mal mein Anliegen etwas zu verdeutlichen, erstellte ich ein Beispielprojekt inkl. Compilat (Anhang). Ich bemühte mich, es so klein wie möglich zu machen (32 Bit, release, 7zip-Komprimierung, die auch von Winrar gelesen werden kann).

Man kann auf jeden beliebigen Button klicken, es tut sich überhaupt nichts mit einer anderen Positionierung des FMX-Formulares. Soll das so sein?

Mit kleinen Änderungen compiliert das Projekt auch mit XE2 und funktioniert dort genausowenig.

Wenn ich Dich recht verstehe, müßte demnach der ButtonClick ein OnShow-Ereignis auslösen, damit das Formular die Positionierung sofort übernimmt, nicht wahr?
Angehängte Dateien
Dateityp: 7z FMX-Formularpositionstest.7z (1,88 MB, 4x aufgerufen)

Geändert von Delphi-Laie ( 2. Nov 2016 um 22:17 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.557 Beiträge
 
Delphi 12 Athens
 
#2

AW: Position der FMX-Formulare zur Laufzeit verändern (Delphi XE 10.1)

  Alt 3. Nov 2016, 00:11
Ja, soll so sein.
Hab ich doch gesagt.
Position wird nur beim "Anzeigen" ausgewertet.

Es gibt "nur" die Position an, wo die Form erstellt wird.
"Default" entspricht dabei dem Verhalten von MSDN-Library durchsuchenCreateWindow mit CW_USEDEFAULT, nur dass Borland damals halt noch bissl mehr Positionierungen implementiert hat.

Zitat:
Delphi-Quellcode:
procedure TCommonCustomForm.SetPosition(const Value: TFormPosition);
begin
  if FPosition <> Value then
  begin
    FPosition := Value;
  end;
end;
Und, wird hier irgendwas passieren, wenn man da was zuweist?


Fazit: Wenn man Position was zuweisen will, dann am Besten im Create/OnCreate oder halt im FormDesigner.


PS: Wer hat was von Auslesen gesagt?
Du sollst Top und Left was zuweisen.

Und was man da zuweisen kann, erfährt man mit etwas Mathematik und den Werten aus der Variable Delphi-Referenz durchsuchenScreen.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Nov 2016 um 00:14 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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