Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Woran kann ich merken, dass Rezise beendet ist? (https://www.delphipraxis.net/208042-woran-kann-ich-merken-dass-rezise-beendet-ist.html)

Chearly020664 31. Mai 2021 21:41

Woran kann ich merken, dass Rezise beendet ist?
 
Hallo,

habe eine Form mit einem Image. Die Form ist reziseable. Das Bild wird im Hintergrund in einer Bitmap mathem. berechnet und muss nach einem Rezise neu berechnet werden. Das Ereignis OnRezise wird aber ausgelöst mit dem Beginn der Größenänderung der Form.

Ich suche verzweifelt nach einem Ereignis, dass eintritt, wenn Rezise beendet ist, damit ich die neue Berechnung des Bildes aufrufen kann.

danke - Gruß

Redeemer 31. Mai 2021 21:46

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Du willst wissen, wann der Nutzer die Maustaste loslässt? Das wüsste ich auch gerne.

Ich hab das bisher immer mit einem TTimer von einigen hundert Millisekunden als Workaround gemacht. Skizze:

OnResize:
- Mache Timer aus. // optional, dient zum Zurücksetzen des Timers
- Mache Timer an.

OnTimer:
- Mache Timer aus.
- Tu was.

Uwe Raabe 31. Mai 2021 21:49

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Vcl/fmx?

Uwe Raabe 31. Mai 2021 21:59

AW: Woran kann ich merken, dass Rezise beendet ist?
 
OK, Delphi 7, ist klar.

Also, du kannst WMEXITSIZEMOVE im Form abfangen:

Delphi-Quellcode:

    procedure WMEXITSIZEMOVE(var Message: TMessage); message WM_EXITSIZEMOVE;

Redeemer 31. Mai 2021 22:17

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Danke. Dann muss man nur noch prüfen, ob sich die Größe geändert hat, für die man zuletzt gezeichnet hat, da das Event sonst ja auch beim Verschieben auslöst. Löst das Event auch aus, wenn das Fenster anderweitig in der Größe verändert wird (Windows+Pfeil, minimieren, maximieren, Bildschirm abgestöpselt usw.)?

Uwe Raabe 31. Mai 2021 22:26

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Aus der Doku:
Zitat:

Sent one time to a window, after it has exited the moving or sizing modal loop. The window enters the moving or sizing modal loop when the user clicks the window's title bar or sizing border, or when the window passes the WM_SYSCOMMAND message to the DefWindowProc function and the wParam parameter of the message specifies the SC_MOVE or SC_SIZE value.
Im Zweifel hilft probieren.

Chearly020664 1. Jun 2021 00:35

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Ich habe:

procedure WMEXITSIZEMOVE(var Message: TMessage);
message WM_EXITSIZEMOVE;
begin
BerechnedasBild(Sender);
end;

Zu meinen Programm-Procedures hinzugefügt und bekomme die Fehlermeldung "message --> unbekannte Anweisung"
und "BerechnedasBild --> undefinierter Bezeichner

Letzteres habe ich aber mehrmals in anderen procedures erfolgreich aufgerufen.-

Verwirrung bei mir, habe schon 13 Jahre nichts mehr mit Delphi 7 gemacht.

Grüße

venice2 1. Jun 2021 00:56

AW: Woran kann ich merken, dass Rezise beendet ist?
 
procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage);
dann kannst du BerechnedasBild(Sender); verwenden

message WM_EXITSIZEMOVE; benötigst du nicht.

Delphi-Quellcode:
procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage);
begin
  inherited;
  BerechnedasBild(Sender);
end;

Chearly020664 1. Jun 2021 05:29

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Code:
132 procedure TForm1.WMEXITSIZEMOVE(var Message: TMessage);

133 begin
134     inherited;
135     BerechnedasBild(Sender);
    end;
Führt jetzt beim Compilieren zu folgenden Fehlermeldungen:

(132): Undefinierter Bezeichner: 'WMEXITSIZEMOVE'
(132): ';' erwartet, aber '(' gefunden
(135): ';' erwartet, aber ')' gefunden
(135): Undefinierter Bezeichner 'BerechnedasBild'
(135): Undefinierter Bezeichner: 'Sender'

Tut mir jetzt leid, dass ich Euch mit derarttigen Trivialitäten belaste.
danke
Grüße

haentschman 1. Jun 2021 05:45

AW: Woran kann ich merken, dass Rezise beendet ist?
 
Moin...:P

Winapi.Messages in uses vergessen? :wink:

upps... es geht ja nicht um die eigentliche Message. :wink: Hast du die procedure im private Abschnitt der Form deklariert oder nur Copy/Paste aus #8? :gruebel:

Zitat:

Ich habe:
...zeige mal die gesamte Unit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:15 Uhr.
Seite 1 von 2  1 2      

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