![]() |
Drag bei Doppelklick nicht auslösen - Wie?
Hallo Wissende,
ich hole mir per Drag und Drop Einträge aus einem Stringgrid in 2 TEdits. Wenn ich aber einen Doppelklick auf das Stringgrid mache wird etwas anderes ausgelöst. Danach ist aber immer noch das Drag&Drop-Symbol aktiv. Ich muss dann mit einem Klick auf ein Control diesen Vorgang immer erst abbrechen. Folgenden Code nutze ich derzeit: MouseDown beim Stringgrid:
Delphi-Quellcode:
Doppelklick beim Stringgrid
procedure TForm1.grd_aMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var aCol, aRow : integer; begin if Button = mbLeft then grd_a.MouseToCell(X,Y,ACol,arow); if (ACol <> -1) and (ARow <> -1) then grd_a.BeginDrag(True); end;
Delphi-Quellcode:
DragOver im Edit
procedure TForm1.btn_players_nameClick(Sender: TObject);
var str_name, str_Layout: String; myGrid : TAdvStringgrid; begin Showmessage('tatütata'); end;
Delphi-Quellcode:
DragDrop im Edit
procedure TForm1.ed_chg_in_1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean); begin Accept := (Source is TStringGrid); end;
Delphi-Quellcode:
Drag&Drop ist ok, aber nach dem Doppelklick stört mich einfach, dass das BeginDrag wahrscheinlich noch aktiv ist...Wie kann ich das im Doppelklick killen? EndDarg hat jedenfalls nicht geholfen.
procedure TForm1.ed_chg_in_1DragDrop(Sender, Source: TObject; X, Y: Integer);
var str_nr,str_name : String; begin //sonstiger code beim Fallenlassen end; |
Re: Drag bei Doppelklick nicht auslösen - Wie?
Hallo torud,
notfalls könntest du doch das Draggen erst nach ein paar Pixel Versatz starten lassen. Dann müsste man den Parameter Treshold noch ausfüllen:
Delphi-Quellcode:
TStringGrid(Sender).BeginDrag(false, 10);
So würde bei einem Doppelklick kein Draggen beginnen, sondern erst, wenn der User mit gedrückter Maustaste 10 Pixel weiterzieht. Gruß Jürgen |
Re: Drag bei Doppelklick nicht auslösen - Wie?
Jo, habe ich in der Hilfe auch gelesen, aber leider ist nach dem Doppelklick immer noch das DragSymbol da und wenn ich mit der Maus über das DropEdit fahre, kann ich selbst nach dem Doppelklick das Drop auslösen. Komisch!
|
Re: Drag bei Doppelklick nicht auslösen - Wie?
Mal ne dumme frage... kannst du ihm beim DOubbleclick nicht einfach sagen das er das drag &drop abbrechen soll ?
|
Re: Drag bei Doppelklick nicht auslösen - Wie?
Habe ich probiert mit EndDrag. Hat aber keinen Erfolg gebracht.
Muss ich vielleicht was anderes dafür nehmen? |
Re: Drag bei Doppelklick nicht auslösen - Wie?
Hallo,
hatte vor einiger ein ähnliches Problem und soweit ich mich erinnere, hat die Einstellung "DragMode := dmAutomatic" Abhilfe geschafft. Gruß RoGa |
Re: Drag bei Doppelklick nicht auslösen - Wie?
Jo, habe ich soeben auch probiert. Dann löst mir das Control das Doppelklick-Event nicht mehr aus. Komische Sache das.
|
Re: Drag bei Doppelklick nicht auslösen - Wie?
Delphi-Quellcode:
roga
procedure TForm1.grd_aMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var aCol, aRow : integer; begin if Button = mbLeft then grd_a.MouseToCell(X,Y,ACol,arow); {------------------------------------- ->> BeginDrag einfach mal weglassen bei DragMode := dmAutomatic <<- if (ACol <> -1) and (ARow <> -1) then grd_a.BeginDrag(True); -------------------------------------} end; |
Re: Drag bei Doppelklick nicht auslösen - Wie?
Ich habe den Code wie vorgeschlagen nun rausgenommen. Es funzt nun auch - ALLERDINGS MUSS ich den DragMode auf dmManual lassen, da sonst gar kein Klick-Event mehr ausgelöst wird.
|
Re: Drag bei Doppelklick nicht auslösen - Wie?
Hallo zusammen,
ich habe das gleiche Problem innerhalb eines DrawGrids. Mit der beschriebenen Lösung komme ich aber nicht wirklich klar. Der DragCursor bleibt nach dem Doppelklick immer erhalten. Selbst ein EndDrag (false) oder CancelDrag () beseitigen den Zustand nicht. DragMode habe ich auf dmAutomatic und starte in MouseDown mit BeginDrag (false,10) den Dragvorgang manuell. Hat irgendwer noch eine Idee ? @torud : kannst Du deinen Code nochmal posten ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:09 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 by Thomas Breitkreuz