AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

LBN_DBLCLK doppelte auslösung

Ein Thema von EWeiss · begonnen am 12. Jul 2012 · letzter Beitrag vom 14. Jul 2012
Antwort Antwort
EWeiss
(Gast)

n/a Beiträge
 
#1

LBN_DBLCLK doppelte auslösung

  Alt 12. Jul 2012, 11:04
Hab da ein kleines problem bei mir wird das Doppelklick event der Listbox
auch doppelt ausgelößt bzw.. LBN_DBLCLK führt alles 2 fach aus.

Finde nicht die Message die den zweiten zugriff auslößt.

Normale Winproc welche über Subclassing die Message weitergibt.
Die wird nur einmal ausgeführt.

Auch in der Winproc der Listbox.
WM_LBUTTONDBLCLK wird ebenfalls nur 1x ausgeführt.

Ist mir nun doch ein kleines Rätzel.
In der Anwendung hingegen alles in zweifacher ausführung.


gruss
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#2

AW: LBN_DBLCLK doppelte auslösung

  Alt 12. Jul 2012, 12:34
Dieses Problem hatte ich vor Jahren mal mit Komponemten von KsDev (ThemeEngine, SkinEngine).
Es war nur lösbar mit Hilfe einer boolschen Zwischen-Variablen, die beim ersten Auslösen gesetzt wird und wenn gesetzt, der Klick nicht ausgeführt wird und sie zurück gesetzt wird.
Beispiel:
Delphi-Quellcode:
var isClicked: Boolean = False;

procedure IrgendwasDoubleClick(Sender: TObject);
begin
  if isClicked then begin
    isClicked := False;
    Exit;
  end else begin
    isClicked := True;
    // jetzt was tun
  end;
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: LBN_DBLCLK doppelte auslösung

  Alt 12. Jul 2012, 12:45
Dieses Problem hatte ich vor Jahren mal mit Komponemten von KsDev (ThemeEngine, SkinEngine).
Es war nur lösbar mit Hilfe einer boolschen Zwischen-Variablen, die beim ersten Auslösen gesetzt wird und wenn gesetzt, der Klick nicht ausgeführt wird und sie zurück gesetzt wird.
Beispiel:
Delphi-Quellcode:
var isClicked: Boolean = False;

procedure IrgendwasDoubleClick(Sender: TObject);
begin
  if isClicked then begin
    isClicked := False;
    Exit;
  end else begin
    isClicked := True;
    // jetzt was tun
  end;
Na ja das ging einfacher

Clicked = not Clicked
Is Clicked then...

Aber das lößt nicht mein problem da ich die Engine ja selbst geschrieben habe mit WInAPI mitteln.
Ich frage mich nur woher das zweite click event ausgelöst wird.

gruss
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

AW: LBN_DBLCLK doppelte auslösung

  Alt 12. Jul 2012, 12:49
Aber das lößt nicht mein problem da ich die Engine ja selbst geschrieben habe mit WInAPI mitteln.
Ich frage mich nur woher das zweite click event ausgelöst wird.

gruss
Woher das kommt, kann ich natürlich auch nicht sagen, ich wollte nur eine "Notlösung" aufzeigen, zu der ich mich damals entschlossen hatte, als nichts anderes mehr half
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: LBN_DBLCLK doppelte auslösung

  Alt 12. Jul 2012, 12:53
Aber das lößt nicht mein problem da ich die Engine ja selbst geschrieben habe mit WInAPI mitteln.
Ich frage mich nur woher das zweite click event ausgelöst wird.

gruss
Woher das kommt, kann ich natürlich auch nicht sagen, ich wollte nur eine "Notlösung" aufzeigen, zu der ich mich damals entschlossen hatte, als nichts anderes mehr half
Danke das ist auch net von dir und meine Antwort war auch nicht böse oder abwertend gemeint.
Falls das so rübergekommen ist.

Danke gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: LBN_DBLCLK doppelte auslösung

  Alt 14. Jul 2012, 08:34
Habe den Fehler gefunden.
Dadurch das ich innerhalb der ListProc WM_LBUTTONDBLCLK verwenden muss
um eine Variable beim start zu füllen hat diese einen weiteren Klick an meine Anwendung geschickt.
Ich habe es jetzt so gelößt das WM_LBUTTONDBLCLK nicht an die Hauptanwendung weitergeleitet wird.

Delphi-Quellcode:
  WM_LBUTTONDBLCLK:
    begin
      OldSelected := ListGetCursel(WinHandle);
      result := 0;
      exit;
    end;
Das war's schon.

gruss
  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 11:32 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