AGB  ·  Datenschutz  ·  Impressum  







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

Drag bei Doppelklick nicht auslösen - Wie?

Offene Frage von "torud"
Ein Thema von torud · begonnen am 5. Nov 2008 · letzter Beitrag vom 25. Nov 2008
Antwort Antwort
Seite 1 von 2  1 2      
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#1

Drag bei Doppelklick nicht auslösen - Wie?

  Alt 5. Nov 2008, 14:45
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:
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;
Doppelklick beim Stringgrid
Delphi-Quellcode:
procedure TForm1.btn_players_nameClick(Sender: TObject);
var
  str_name, str_Layout: String;
  myGrid : TAdvStringgrid;
begin
  Showmessage('tatütata');
end;
DragOver im Edit
Delphi-Quellcode:
procedure TForm1.ed_chg_in_1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TStringGrid);
end;
DragDrop im Edit
Delphi-Quellcode:
procedure TForm1.ed_chg_in_1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  str_nr,str_name : String;
begin
  //sonstiger code beim Fallenlassen
end;
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.
Danke
Tom
  Mit Zitat antworten Zitat
Pfoto

Registriert seit: 26. Aug 2005
Ort: Daun
541 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 5. Nov 2008, 16:05
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:

  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
Jürgen Höfs
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 5. Nov 2008, 16:45
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!
Danke
Tom
  Mit Zitat antworten Zitat
Real_Thunder

Registriert seit: 25. Apr 2006
197 Beiträge
 
#4

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 5. Nov 2008, 18:47
Mal ne dumme frage... kannst du ihm beim DOubbleclick nicht einfach sagen das er das drag &drop abbrechen soll ?
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 5. Nov 2008, 19:58
Habe ich probiert mit EndDrag. Hat aber keinen Erfolg gebracht.
Muss ich vielleicht was anderes dafür nehmen?
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#6

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 6. Nov 2008, 01:39
Hallo,

hatte vor einiger ein ähnliches Problem und soweit ich mich erinnere, hat die Einstellung "DragMode := dmAutomatic" Abhilfe geschafft.

Gruß RoGa
Ronald
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 6. Nov 2008, 07:18
Jo, habe ich soeben auch probiert. Dann löst mir das Control das Doppelklick-Event nicht mehr aus. Komische Sache das.
Danke
Tom
  Mit Zitat antworten Zitat
Benutzerbild von roga
roga

Registriert seit: 15. Jun 2008
Ort: Sachsen-Anhalt
109 Beiträge
 
Delphi XE8 Professional
 
#8

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 6. Nov 2008, 10:46
Delphi-Quellcode:
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;
roga
Ronald
  Mit Zitat antworten Zitat
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 6. Nov 2008, 13:29
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.
Danke
Tom
  Mit Zitat antworten Zitat
ConstantGardener

Registriert seit: 24. Jan 2006
Ort: Halberstadt
376 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Drag bei Doppelklick nicht auslösen - Wie?

  Alt 24. Nov 2008, 18:05
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 ?
Andreas Schachtner
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:31 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