![]() |
Element während Drag 'n Drop anzeigen
Hi all,
ich glaube zwar das ähnliches schon öfters gefragt wurde, hab aber auch nach längerem suchen nix gefunden - deshalb traue ich mich nochmal zu fragen ;) Also ich will einen Button (oder was für ein Object auch immer) per Drag and Drop verschieben. Allerdings möchte ich, das der Button und seine Beschriftung dabei sichtbar bleiben, der Cursor sich also nicht in den Standardcursor ändert. (Sehr cool wärs natürlich, wenn so wie bei Windows ist, wenn man ein Icon auf dem Desktop verschiebt, das Icon Halbtransparent wird...) Kann mir einer dazu nen Lösungsansatz oder nen Link verraten ? Danke schonmal, gruß ben |
Re: Element während Drag 'n Drop anzeigen
Hallo Ben,
ich habe es nicht getestet, aber vielleicht findest du in ![]() Gruß Hawkeye |
Re: Element während Drag 'n Drop anzeigen
Geht es um die Delphi-IDE, oder zur Laufzeit? ;-).
Ich denke mal Laufzeit, wenn ich das Forum bedenke... Wie wäre es mit im OnMouseDown die Mausposition festhalten und das Vershcieben aktivieren. Im OnMouseMove dann immer errechenen, um wieviel sich die Mausposition verschoben hat und dein Objekt um die gleiche Zahl verschieben. Im OnMouseUp das verschieben wieder dektivieren. |
Re: Element während Drag 'n Drop anzeigen
Danke schonmal für eure Antworten!
Werde mir das Tut mal reinfatzen, scheint ja sehr umfangreich zu sein :cyclops: @Yankee Jo, geht um Laufzeit. |
Re: Element während Drag 'n Drop anzeigen
Also in
![]() Ich hab versucht das mal abzuschreiben, krieg allerdings 2 Fehler die ich nich beheben kann. Hier mal der Source von der Komponente:
Delphi-Quellcode:
unit MyDragButton;
interface uses SysUtils, Classes, Controls, StdCtrls, Graphics, Types, QControls; type TMyDragButton = class(TButton) private FDragImages: TDragImageList; protected function GetDragImages: TDragImageList; override; procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published { Published declarations } end; procedure Register; implementation constructor TMyDragButton.Create(AOwner: TComponent); begin inherited Create(AOwner); ControlStyle := ControlStyle + [csDisplayDragImage]; end; destructor TMyDragButton.Destroy; begin FDragImages.Free; inherited; end; function TMyDragButton.GetDragImages: TDragImageList; var Bmp: TBitmap; BmpIdx: Integer; Pt: TPoint; begin if not Assigned(FDragImages) then FDragImages := TDragImageList.Create(Self); Bmp := TBitmap.Create; try Bmp.Width := Width; Bmp.Height := Height; Bmp.Canvas.Lock; try PaintTo(Bmp.Canvas.Handle, 0, 0); finally Bmp.Canvas.Unlock end; FDragImages.Width := Width; FDragImages.Height := Height; BmpIdx := FDragImages.AddMasked(Bmp, clBtnFace); //Where is mouse relative to control? GetCursorPos(Pt); Pt := ScreenToClient(Pt); //Specify drag image and hot spot FDragImages.SetDragImage(BmpIdx, Pt.X, Pt.Y); Result := FDragImages; finally Bmp.Free end end; procedure TDragButton.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin inherited; //Automatically start dragging on a Ctrl-click if ssCtrl in Shift then BeginDrag(True) end; procedure Register; begin RegisterComponents('Samples', [TMyDragButton]); end; end. Also 1.
Delphi-Quellcode:
Hier meint er, das die Dekleration von der vorherigen Deklaration abweicht.
procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
Verstehe ich nicht ganz, da die Procedur in der Doku genau so drinsteht... Und 2.
Delphi-Quellcode:
Meint er hier, 'incomatible types'.
ontrolStyle := ControlStyle + [csDisplayDragImage];
Woran könnte das liegen ? Wäre super wenn mir da noch einer auf die Sprünge helfen kann. Danke im Vorraus, gruß ben |
Re: Element während Drag 'n Drop anzeigen
Du hast die CLX-Unit QControls eingebunden. Weg damit ;) .
|
Re: Element während Drag 'n Drop anzeigen
ich habe mal das gelcieh problem gehabt und ein kurzes verständliches beispiel im Swiss Delphicenter gefunden:
![]() leider finde ich den code nichtmehr... Aber du könntest da ja mal suchen.... |
Re: Element während Drag 'n Drop anzeigen
Zitat:
Ich werd mal schauen ob ich das auf SwisDelphiCenter wieder finde, danke für den Hinweis. |
Re: Element während Drag 'n Drop anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
die TImageList stellt Methoden bereit um dragImages darzustellen.
wenn du dein Dragimage als Imagelist-kompatibles Bild vorliegen hast kannst du dies hinzufügen und per SetDragImage, ShowDragImage und HideDragImage die Anzeige steuern... HTH Gruß Frank |
Re: Element während Drag 'n Drop anzeigen
Zitat:
![]() Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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