AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Modaler Doppelklick gibt Event an Ursprungsfenster weiter
Thema durchsuchen
Ansicht
Themen-Optionen

Modaler Doppelklick gibt Event an Ursprungsfenster weiter

Ein Thema von michaelg · begonnen am 11. Sep 2018 · letzter Beitrag vom 13. Sep 2018
Antwort Antwort
Schokohase
(Gast)

n/a Beiträge
 
#1

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 12. Sep 2018, 09:37
Ich habe gerade mal geschaut wie das Verhalten bei .NET WinForms ist.

Da wird der Doppel-Klick-Event erst ausgelöst, wenn die Maustaste wieder oben ist.

@Hobbycoder

Da war dein Vorschlag ja doch richtig.

Geändert von Schokohase (12. Sep 2018 um 09:41 Uhr)
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#2

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 12. Sep 2018, 10:19
Erstmal vielen Dank an alle, die sich meinen Kopf zerbrochen haben. Ich bin begeistert über so viel Mithilfe.

Die Lösung von Schokohase funktioniert super.

Delphi-Quellcode:
unit Forms.SomeDialogForm;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.StdCtrls, Vcl.ExtCtrls,
  Vcl.AppEvnts;

type
  TSomeDialogForm = class( TForm )
    ApplicationEvents1: TApplicationEvents;
    procedure ApplicationEvents1Idle(
      Sender: TObject;
      var Done: Boolean );
    procedure FormDblClick( Sender: TObject );
  private
    FModalResult: TModalResult;
    procedure SetModalResult( const Value: TModalResult );
  public
  end;

var
  SomeDialogForm: TSomeDialogForm;

implementation

{$R *.dfm}

procedure TSomeDialogForm.ApplicationEvents1Idle(
  Sender: TObject;
  var Done: Boolean );
begin
  if ( FModalResult <> 0 ) and ( GetAsyncKeyState( VK_LBUTTON ) = 0 )
  then
    begin
      // Wir setzen den ModalResult erst dann, wenn der linke Maus-Button nicht gedrückt ist
      ModalResult := FModalResult;
    end;
end;

procedure TSomeDialogForm.FormDblClick( Sender: TObject );
begin
  SetModalResult( mrOK );
end;

procedure TSomeDialogForm.SetModalResult( const Value: TModalResult );
begin
  if ( Value <> Self.ModalResult ) or ( Value <> FModalResult )
  then
    begin
      FModalResult := Value;
    end;
end;

end.
Ich weiss nur nicht, ob es Auswirkungen hat, dass ich im Mainform des Programms bereits ein tApplicationEvents habe. Arbeitet das dann auch noch, wenn mein modaler Dialog gerade angezeit wird?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 12. Sep 2018, 10:27
Nur mal nachgehakt, warum nicht einfach vor dem Close von Fenster X einfach Mauspuffer löschen, man ist doch eh im Event drinnen was getriggert werden sollte?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#4

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 12. Sep 2018, 17:44
Nur mal nachgehakt, warum nicht einfach vor dem Close von Fenster X einfach Mauspuffer löschen, man ist doch eh im Event drinnen was getriggert werden sollte?
Probier es doch einfach mal aus ...
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 12. Sep 2018, 20:37
Nur mal nachgehakt, warum nicht einfach vor dem Close von Fenster X einfach Mauspuffer löschen, man ist doch eh im Event drinnen was getriggert werden sollte?
Probier es doch einfach mal aus ...
Ich bekomme Fehler nicht reproduziert, deshalb meine Frage. Problem ist ja bereits gelöst, aber interessiert hätte es mich schon.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#6

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 12. Sep 2018, 21:12
Ich probiere es morgen noch mal aus und werde berichten.
  Mit Zitat antworten Zitat
michaelg

Registriert seit: 20. Apr 2008
87 Beiträge
 
#7

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 13. Sep 2018, 07:27
Die Sache mit dem EmptyMouseQueue hat bei mir nicht funktioniert. Ich hatte es beim Formclose des modalen Dialogs eingebaut.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 13. Sep 2018, 07:38
Hallo,
das löschen aller Events hatte bei mir auch nicht geholfen.
Es sah so aus, als ob Delphi das intern schon "gespeichert" hatte
und nur auf das Ende der Erzeuge_und_Zeige_Form-Methode gewartet hatte.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Modaler Doppelklick gibt Event an Ursprungsfenster weiter

  Alt 13. Sep 2018, 10:29
Die Sache mit dem EmptyMouseQueue hat bei mir nicht funktioniert. Ich hatte es beim Formclose des modalen Dialogs eingebaut.
Vielen Dank fürs Testen, den Tipp werde ich somit streichen.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort

 

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