AGB  ·  Datenschutz  ·  Impressum  







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

beim doppelclick kein Mousedown event

Ein Thema von lordcroc · begonnen am 23. Nov 2005 · letzter Beitrag vom 24. Nov 2005
 
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#6

Re: beim doppelclick kein Mousedown event

  Alt 24. Nov 2005, 19:31
Am Einfachsten kannst du das machen, in dem du dein zweites Panel (bzw. alle analogen Eigenschaften) erst anzeigst, wenn die Maus bewegt wird. Dazu einfach folgende Methoden ändern:

Delphi-Quellcode:
procedure TMovingPanel.OnMouseDown;
begin
  if (self.FComesFrom = fPool) or (self.FComesFrom = fPlan) then
    begin
      screen.Cursor := crdrag
    end // if (self.FComesFrom = fPool) or (self.FComesFrom = fPlan)
  else
    begin
      screen.Cursor := crno;
    end;

  if (MoveWho <> mwNone) then
    begin
      OldLeft := self.ScreenToClient(Mouse.CursorPos).X;
      OldTop := self.ScreenToClient(Mouse.CursorPos).Y;
      P_tmpDraw := TPanel.Create(self);
      P_tmpDraw.Caption := Self.Caption;
      P_tmpDraw.Width := self.Width;
      P_tmpDraw.Height := self.Height;
      P_tmpDraw.Color := self.Color;
      P_tmpDraw.Visible := false; // <-- Unsichtbar solange nicht bewegt
      case FComesFrom of
        fPlan:
          begin
            PPlan.InsertControl (P_tmpDraw);
          end; // fPlan
        fPool:
          begin
            PPool.InsertControl (P_tmpDraw);
          end; // fPool
      end; // case FComesFrom

      P_tmpDraw.BringToFront;
      Moving := True;
    end; // if (MoveWho <> mwNone) and (Button = mbLeft)
end; // of procedure TMovingPanel.OnMouseDown;
Delphi-Quellcode:
procedure TMovingPanel.MouseMove (Shift: TShiftState; X, Y: Integer);
begin
  // inherited MouseMove(Shift, X, Y);
  if (MoveWho <> mwNone) and Moving then
    begin
      p_tmpDraw.Visible := true; // Und wieder sichtbar bei Mausbewegung
      ...
Kannst du natürlich ganz analog mit z.B. dem Cursor machen, falls du den Drag-Cursor erst sehen möchtest, wenn die Maus bewegt wird. Leider lässt es sich nicht ganz hübsch trennen, ob es sich um einen Doppelklick handelt oder nicht, da jedes Mausereignis ein Interrupt auslöst, so dass du von Delphi immer entsprechende Events bekommst.
Falls du aber wirklich unbedingt beides komplett trennen möchtest, solltest du die Eigenschaft Moving (und alles weitere) durch einen Timer setzen. Den würde dann ein Mausdown starten, ein MouseUp und/oder Doppelklick stoppen, aber du müsstest damit auch deine Zeit für einen Doppelklick verwenden, nicht die Windwos eigene. Bzw. die kann man sicher auch irgendwie auslesen, aber bestimmt nicht der schönste Weg.
  Mit Zitat antworten Zitat
 


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 21:20 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