![]() |
Bei DragMode dmAutomatic keine Auswahl möglich
Ich benutze die Image Komponenten von ://www.hicomponents.com
Dort gibt es eine Thumbnail Komponente. Jetzt versuche ich ein Thumbnail aus der Thumbnail Komponente auf ein Image zu ziehen. Das klappt auch ganz gut mit dem DragMode dmAutomatic. Nur ist es leider so, dass wenn der DragMode auf dmAutomatic steht man keine Thumbnails mehr auswählen kann. nehme ich den DragMode dmManual funktioniert mein Drag and Drop nicht mehr: Wie realisiere ich also Drag and Drop, wenn die Komponente den DragMode dmManual hat? Mein bisheriger Code für dmAutomatic sieht so aus:
Delphi-Quellcode:
[edit=SirThornberry]Delphi-Tags korrigiert - Mfg, SirThornberry[/edit]
procedure TForm2.ImageEnView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var idx: Integer; Filename: String; begin idx := ImageEnMView1.SelectedImage; Filename := ImageEnMView1.ImageFileName[idx]; if fileexists(filename) then begin ImageEnView1.IO.LoadFromFileJpeg(Filename); ImageEnMView1.DragMode := dmManual; end; end; procedure TForm2.ImageEnView1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin If (Source is TImageEnMView) then Accept := True; end; |
Re: Bei DragMode dmAutomatic keine Auswahl möglich
Ich hab in dem Fall dmManual gewählt hab im MouseDown die Position in einem Private-Field gespeichert und im MouseMove (wenn Maus gedrückt war) geprüft ob die Mouse weit genug bewegt wurde. War dem der Fall hab ich das Drag & Drop manuell gestartet.
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
Zitat:
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
mit der Methode "BeginDrag" kann man das DragDrop der entsprechenden Komponente starten. Ich hab das im OnMouseMove aufgerufen wenn die Maus weit genug vom "Mouse-Down-Punkt" weg bewegt wurde.
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
Danke funktioniert. :thumb:
Aber man muss nicht selber rechnen:
Delphi-Quellcode:
procedure BeginDrag(Immediate: Boolean; Threshold: Integer);
Zitat:
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
Die Hilfe ist da etwas missverständlicher. Sobald das BeginDrag aufgerufen wird, wird die Maus frei gegebe so das kein OnMouseMove etc. mehr ausgelöst wird. Lediglich der Mauszeiger, OnDragOver etc. wird noch nicht ausgelöst. Es wird also sofort auch ein OnMouseUp und ein OnClick ausgelöst obwohl man noch im OnMouseDown ist und dort BeginDrag aufruft.
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
Jedenfalls funktioniert es so, wie es soll. ;)
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
dann geschieht die Auswohl wohl im MouseDown. Wenn DragMode = dmAutomatic eingestellt ist wird nicht mal mehr ein MouseDown ausgelöst
|
Re: Bei DragMode dmAutomatic keine Auswahl möglich
So sieht es jetzt aus:
Delphi-Quellcode:
procedure TForm2.ImageEnMView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin MouseDown := True; end; procedure TForm2.ImageEnMView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if MouseDown then ImageEnMView1.BeginDrag(False, 10); end; procedure TForm2.ImageEnMView1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin MouseDown := False; end; |
Re: Bei DragMode dmAutomatic keine Auswahl möglich
Wenn du es so hast kannst du das BeginDrag auch gleich ins OnMouseDown packen, das müsste aufs gleicher heraus kommen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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