AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Event bei "Restore Down" oder "Restore Up"
Thema durchsuchen
Ansicht
Themen-Optionen

Event bei "Restore Down" oder "Restore Up"

Ein Thema von TommyBe90 · begonnen am 5. Jan 2024 · letzter Beitrag vom 8. Jan 2024
Antwort Antwort
Seite 1 von 2  1 2      
TommyBe90

Registriert seit: 5. Jun 2020
5 Beiträge
 
Delphi 11 Alexandria
 
#1

Event bei "Restore Down" oder "Restore Up"

  Alt 5. Jan 2024, 17:11
Hallo,

ich habe folgendes Problem: Nach der Skalierung meines Forms muss ich ein bestimmtes Event aufrufen.
Dies lässt sich auch grundsätzlich über die Message WM_EXITSIZEMOVE realisieren.
Allerdings ist WM_EXITSIZEMOVE wirkungslos, wenn ich ein maximiertes Form mittels "Restore Down" oder
oder ein minimiertes Form mit "Restore Up" skaliere.

Kennt jemand eine Lösung (ein Event oder ähnliches) oder einen Work-Around?

Besten Dank im Vorraus

Tommy
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.431 Beiträge
 
Delphi 12 Athens
 
#2

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 5. Jan 2024, 17:46
Was meinst du denn genau mit "Skalierung"? Nicht etwa lediglich eine Größenänderung?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TommyBe90

Registriert seit: 5. Jun 2020
5 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 08:00
Genau. Letztendlich meine ich eine Größenänderung. Also wenn ich meine Anwendung minimiert oder maximiert habe
und mittels der Menu-Buttons verkleinern/restore down oder vergrößern/restore up mein Form als "Restored" anzeige.

Wenn ich manuell - mittels Maus an den Formular-Rändern - meine Größe ändere, so funktioniert das WM_EXITSIZEMOVE Event.

Ich hoffe, dass du nun verstehtst was ich meine?

VG
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.574 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 08:36
Wie wäre es ganz simpel mit OnResize?
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TommyBe90

Registriert seit: 5. Jun 2020
5 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 08:51
Danke für den Vorschlag. Allerdings will ich das aus Performannce-Gründen vermeiden.
Das schöne am WM_EXITSIZEMOVE Event ist, dass es erst nach der Größenänderung aufgerufen wird. Das klappt für mich grundsätzlich auch sehr gut,
jedoch nicht in den beiden Fällen von verkleinern/restore down und vergrößern/restore up.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.574 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 09:14
Deaktiviere OnResize doch einfach in WM_ENTERSIZEMOVE. Dann bekommst du WM_EXITSIZEMOVE weiter mit wie bisher und kannst es dort wieder aktivieren, aber wenn die Größenänderung durch andere externe Einflüsse (Wiederherstellen usw., externe Tools zur Fensterorganisation, ...) passiert ist, landest du in OnResize.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 09:14
Auf WM_SIZE reagieren (wenn SIZE_MAXIMIZED/SIZE_MINIMIZED/SIZE_RESTORED)




Ist OnResize ein WM_SIZE oder WM_SIZING?

Wenn Zweites: dann einfach immer auf WM_SIZE reagieren.

Und wenn Erstes (vermutlich ja), dann .... Es gibt auch WM_ENTERSIZEMOVE.
Wenn OnResize zwischen WM_ENTERSIZEMOVE und WM_EXITSIZEMOVE, dann Dieses ignorieren und auf's Ende warten.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Jan 2024 um 11:05 Uhr)
  Mit Zitat antworten Zitat
TommyBe90

Registriert seit: 5. Jun 2020
5 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 09:40
Danke euch beiden. Das klingt grundsätzlich nach guten Vorschlägen. Allerdings habe ich da wohl einen spezielleren Fall.

Ich beschreibe nun mal mein Vorhaben:

Ich möchte eine Punktewolke von Daten mittels OpenGL darstellen. Wenn ich skaliere möchte ich einen runtergesampleten Datensatz darstellen,
um eine flüssige Darstellung während des Resize zu erhalten.
Wenn der Resize abgeschlossen ist soll der Datensatz wieder in voller Auflösung dargestellt werden.
Zur Darstellung der runtergesampleten Punktewolke - während des Resize-Vorganges - muss allerdings immer OnResize ausgeführt werden.

Ich hoffe ihr könnt euch nun mein Vorhaben besser vorstellen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 11:08
also bei WM_ENTERSIZEMOVE runterskalieren

WM_EXITSIZEMOVE wieder vollständig, sowie auch bei WM_SIZE+SIZE_MAXIMIZED/SIZE_RESTORED das vollstänige aktualisieren

Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.574 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Event bei "Restore Down" oder "Restore Up"

  Alt 8. Jan 2024, 11:22
Wenn ich skaliere möchte ich einen runtergesampleten Datensatz darstellen,
um eine flüssige Darstellung während des Resize zu erhalten.
Das ist doch genau der beschriebene Fall. Im WM_ENTERSIZEMOVE aktivierst du die niedrigere Auflösung (Flag setzen, Daten umschalten, wie auch immer), im WM_EXITSIZEMOVE schaltest du wieder auf die normale Darstellung. Im OnResize führst du dann die entsprechende Skalierung aus. Kommt das OnResize ohne die aktivierte Schnellskalierung, wurde ohne Maus oder Tastatur skaliert. Ist sie aktiviert, ist die Größenänderung durch Maus oder Tastatur noch aktiv.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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:16 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