Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Resize und Maustasten-Ereignis verknüpfen (https://www.delphipraxis.net/157325-resize-und-maustasten-ereignis-verknuepfen.html)

Dunkelbunt27 7. Jan 2011 17:27

Resize und Maustasten-Ereignis verknüpfen
 
Hallo Delphi Praxis,

ich habe Folgendes Problem:
Ich möchte die Größe meiner Paintbox nach dem Resize-Ereignis der Form verändern (anpassen.) Allerdings soll dies erst dann passieren, wenn ich die linke Maustaste wieder loslasse (quasi das resizen beendet habe). Jedoch weiß ich nciht so recht wie ich das anstellen soll. Ich möchte nicht bei jedem Linke-Maustaste-Druck die Paintbox neu zeichnen, es müsste also eine Abfrage dazu in das Resize-Ereignis rein, oder?

Und genau da weiß ich nicht weiter, mir fehlt praktisch eine If-Then Abfrage ob gerade die linke Maustaste losgelassen wurde.

Ich hoffe auf schnelle Hilfe,
FG Dunkelbunt

Bummi 7. Jan 2011 18:01

AW: Resize und Maustasten-Ereignis verknüpfen
 
Setze ein Flag im FormResize und werte dieses beim MouseUp aus.

DeddyH 7. Jan 2011 18:54

AW: Resize und Maustasten-Ereignis verknüpfen
 
Wenn ich es richtig verstanden habe, könnte man auch einen Handler für MSDN-Library durchsuchenWM_SIZE schreiben.

Dunkelbunt27 7. Jan 2011 19:09

AW: Resize und Maustasten-Ereignis verknüpfen
 
Danke für die Antworten.
Das mit dem WM_Size les ich mir mal genau durch.

Nur weiß ich leider nicht was ein Flag ist, und wie man das setzt. Könntest du das kurz am Beispiel erklären?

EDIT:
Zu WM_Size habe ich unter http://www.rudolf-software.de/delphitips.html gefunden, dass man damit das minimieren des Fensters unterbinden kann. Ist es das was du meinst?

DeddyH 7. Jan 2011 19:11

AW: Resize und Maustasten-Ereignis verknüpfen
 
Er meinte eine Boolean-Variable, die Du bei Beginn der Größenänderung auf true setzt und nach dem MouseUp und Neuzeichnen wieder auf false.

[edit] Ich habe den MSDN-Artikel doch verlinkt. [/edit]

Dunkelbunt27 7. Jan 2011 19:17

AW: Resize und Maustasten-Ereignis verknüpfen
 
Danke,
das mit dem Flag hab ich nun auch herausgefunden (1x Google hätte die Frage vielleicht erspart, aber Fragen kann ja nicht falsch sein).
Ich werde es ausprobieren.

Das mit dem WM_Size hab ich noch nicht ganz begriffen, ich weiß nicht ganz was ich damit bewirken kann.
Werd es mir noch zu Gemüte führen.

[edit]
Zur Flag-Methode:
Ich habe die Flag im OnResize auf True gesetzt(globale Variable), im OnMouseUp wird die Variable wieder auf False gesetzt. In der OnMouseUp Prozedur wird wenn die Flag False ist die Paintbox neu gezeichnet.
-> funktioniert nicht...
[/edit]

[edit2]
Muss ich noch angeben welche Maustaste losgelassen wird?
if shift = [ssLeft] then ... oder etwas in der Art?
[/edit2]

Bummi 7. Jan 2011 20:59

AW: Resize und Maustasten-Ereignis verknüpfen
 
Sorry für den schlechten Rat, aber so geht's
Delphi-Quellcode:
type
  TForm1 = class(TForm)
  procedure WMExitSizeMove(var Message: TMessage); message WM_EXITSIZEMOVE;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.WMExitSizeMove(var Message: TMessage);
begin
   DeinRepaint;
end;

Dunkelbunt27 7. Jan 2011 22:00

AW: Resize und Maustasten-Ereignis verknüpfen
 
Hallo,
Zitat:

Sorry für den schlechten Rat
Ich weiß nich ob euch 2 das schonmal einer gesagt hat, aber immer wenn ich ein Problem geäußert habe, seid ihr 2 es die mir zuerst antworten und mich meist zur Lösung bringen!
An dieser Stelle ein großes Lob und Dankeschön an Bummi und DeddyH! :thumb:

Also jetzt zum Vorschlag:
- es hat genau das gemacht was es sollte
- super funktioniert

Vielen Dank und FG Dunkelbunt :dp:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:11 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