![]() |
Drag&Drop-Problem
Hallo,
ich habe ein Panel, das auf einer Form mit der linken Maustaste mittels Drag&Drop verschoben werden kann. Gleichzeitig soll aber per Mausdoppelclick (linke Maustaste) eine andere Funktion (Aufruf einer Online-Verbindung) gestartet werden. Das klappt auch alles soweit, bis auf die Tatsache, dass bei der Rückkehr aus der Online-Verbindung der Darg&Drop-Modus noch aktiv ist und das Panel sich dann dort niederlässt, wo man dann zufällig mit der Maus clickt. 1. Wo liegt das Problem, dass der Drag&Drop-Modus nicht korrekt beendet wird. 2. Kann man beide Funktionen - Drag&Drop und unabhängig vom Drag&Drop den Start der Online-Verbindung auch mit einem linken Mausclick realisieren? Vielen Dank für eure Hilfe G. Käberich |
AW: Drag&Drop-Problem
etwas in der Art?
Delphi-Quellcode:
procedure TFormx.PanelyMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin if Button=mbLeft then TPanel(Sender).BeginDrag(false,20); end; |
AW: Drag&Drop-Problem
Hallo,
ich habe jetzt mal den Quellcode beigefügt: procedure TStartfenster.Online_portal_PanelMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); { ************************************************** ********************************** } begin if button = mbLeft Then online_portal_panel.begindrag (False); end; procedure TStartfenster.Online_portal_PanelEndDrag(Sender, Target: TObject; X, Y: Integer); { ************************************************** ********************************** } begin if target = Nil then MessageBeep (0); end; procedure TStartfenster.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); { ************************************************** ********************************** } begin accept := (Source is TPanel); end; procedure TStartfenster.FormDragDrop(Sender, Source: TObject; X, Y: Integer); { ************************************************** ********************************** } begin if Source is TPanel then begin TPanel(Source).Left := x; TPanel(Source).Top := y; TPanel(Source).Parent := TWinControl(Sender); end; end; procedure TStartfenster.Online_portal_PanelDblClick(Sender: TObject); { ************************************************** ********************************** } begin VirtuelleSchule1.click; end; Es funktioniert in soweit, dass der Drag&Drop-Prozess klappt, dann die Verbindung mit Dopelclick auf das Panel in die Virtuelle Schule auch, aber bei der Rückkehr in mein Delphi-Programm ist der Drag&Drop-Prozess noch nicht beendet und dort wo ich dann auf das Fenster clicke wird das Panel abgelegt.. vg G. Käberich |
AW: Drag&Drop-Problem
Hallo,
merk Dir den Doppelklick in einer Property und werte das dann im OnMouseDown aus (die Events werden in der Reihenfolge OnDlbClick, OnMouseDown aufgerufen)
Delphi-Quellcode:
BTW: Quellcode solltest Du in DELPHI-Tags einschließen; einfach auf das Helmsymbol klicken und den Code dazwischen einfügen.
procedure TStartfenster.Online_portal_PanelMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); { ************************************************** ********************************** } begin if Button = mbLeft then if FDblClick then online_portal_panel.EndDrag (False); else online_portal_panel.BeginDrag (False); FDblClick := False end; procedure TStartfenster.Online_portal_PanelDblClick(Sender: TObject); { ************************************************** ********************************** } begin FDblClick := True; VirtuelleSchule1.click; end; Gruß |
AW: Drag&Drop-Problem
Hallo,
klappt super, vielen Dank. Besteht denn die Möglichkeit, so wie das auch bei Windows-8-Kacheln geht, das Mousedown- und das Mouseclick Ereignis zeitlich so zu entkoppeln, dass der Start des Online-Portals auch mit einem einfachen Mouseclick funktioniert? vg Günther Käberich |
AW: Drag&Drop-Problem
Mit einem Timer und dann nur auf die Events OnMouseDown OnMouseUp lauschen
|
AW: Drag&Drop-Problem
Hallo,
vielen Dank für die Tipps - es funktioniert jetzt so, wie es soll. G.Käberich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 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