![]() |
Drag&Drop mit TMenuItem
Hallo,
ich möchte einige meiner TMenuItems per Drag&Drop eine ListView packen (als Kopie), um mir so eine Art Favouriten-Leiste zu bauen. Hat jemand sowas schonmal gemacht ? Das TMenuItem scheint ja keine Drag-Properties zu haben (DragMode etc.) Danke Heiko |
Re: Drag&Drop mit TMenuItem
dadurch, dass du weder die Drag&Drop-Events noch MouseDown/Up/Move hast, wird das nicht so möglich sein. ich denke du müsstest auf ein alternatives Menü umsteigen (bzw. es schreiben) oder du lässt bei der Definition das Menü einfach außen vor.
ich weis zwar nicht, ob letzteres bei dir möglich ist aber mal so als Anhaltspunkt: die Menu-Items enumerieren und in eine Listbox eintragen, hier kannst du die items löschen/verschieben etc. als kleine Hilfe kannst du dir den Menu-Editor von DFMEdit mal anschauen (MenuEdit_u.pas), der kann die grobe Menüdarstellung und Drag&Drop ;) müsstes halt nur die lade-routine anpassen, da dfmedit die items aus dem DFM-Quelltext parst (bzw. aus dem Treeview). HTH Frank |
Re: Drag&Drop mit TMenuItem
Hallo,
ja so in etwa sieht mein Alternativ-Plan aus. Die Menus aus dem aktuellen Main-Menu holen, schreibe ich mir selber, nix da mit Copy&Paste ;) Dummerweise weiss ich noch nicht, wie ich diese Konfiguration speichern kann ;( Name, neee Pointer hä ? ;) Mir bleibt jetzt wohl nur, jedes TMenuItem mit einem distinct Tag zu versehen und diese Tags zu speichern. Viel Klickerei (aber nur einmal) Heiko |
Re: Drag&Drop mit TMenuItem
mussts ja nicht kopieren, aber zum anschauen ;), gut, die Property-Liste ist nicht sehr gut gelungen mit der stringlist, aber ich wollte mi bisschen Arbeit ersparen ;)
vielleicht findest ja was brauchbares drin, stehe ja auch für fragen zur Verfügung... Gruß Frank |
Re: Drag&Drop mit TMenuItem
Zitat:
Den onDrag Event könnte man allerdings mit Hilfe der Nachricht WM_MENUDRAG abfangen.
Delphi-Quellcode:
private
procedure WMMENUDRAG(var Msg: TMessage);message WM_MENUDRAG; ... procedure TForm1.WMMENUDRAG(var Msg: TMessage); begin Caption:= MainMenu1.FindItem(Msg.LParam,fkHandle).Items[Msg.WParam].Caption; end; procedure TForm1.FormCreate(Sender: TObject); var MenuInfo: TMenuInfo; begin MenuInfo.cbSize:= SizeOf(TMenuInfo); MenuInfo.fMask:= MIM_STYLE; MenuInfo.dwStyle:= MNS_DRAGDROP; SetMenuInfo(MainMenu1.Handle, MenuInfo); end; |
Re: Drag&Drop mit TMenuItem
Hallo,
vielleicht ein bissl spät geantwortet von mir ;-) Es ist mit Bordmitteln möglich. Leider unterstützt die VCL keine Drag'n'Drop Menüs. Aber mit ein bissl Bastelei klappt es ganz gut. Der Code ist recht umfangreich. Wer ihn will, soll mir bitte einfach ne PM schicken. Dann schreib ich ein kleines Demoprogramm. Schritt für Schritt:
Hoffentlich nicht zu kompliziert. gruß Marco |
Re: Drag&Drop mit TMenuItem
Liste der Anhänge anzeigen (Anzahl: 1)
Für alle, die es interessiert, hier ein bissl Code :-)
Das Demoprogramm zeigt, wie man TMenuItems in einen VirtualStringTree befördert und (wenn nötig) auf dem Desktop ablegt. Ich hab den Code aus einem unserer laufenden Projekte herausgelöst. Es kann also sein, daß es an der einen oder anderen Stelle ein wenig hängt. Aber wie gesagt... das Programm dient nur der Demonstration der Technologie! Die Units sind von mir (wenn überhaupt einmal) auf englisch kommentiert. Und bitte nicht so viele Fragen... ich hab ab morgen Urlaub und bin dann ne ganze Woche Offline (*träum*) Gruß Marco P.S. Um ein "DragImage" zu sehen muss unter Windows die Funktion "Fensterinhalt beim ziehen anzeigen" aktiviert sein P.P.S. Um den Hinweistext neben dem DragImage zu sehen, braucht ihr Vista. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:58 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