Hallo Luckie.
Vielen Dank für deine Hilfe! Bei diesen
API-Funktionen habe ich das große Problem, dass ich die Schlagwörter (ContextMenuHandler, ShellMenu, etc.) nicht weiß bzw. diese in anderen Problematiken quasi identisch sind (Beispiel: ShellMenu).
Die benötigte Funktion SHGetIDListFromPath() ist übrigens hier zu finden:
http://www.delphipraxis.net/internal...=121338#121338 .
Hier mein Code:
Delphi-Quellcode:
procedure TMainForm.database_list_mousedown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
tmp: string;
begin
if (Button = mbRight) and (database_list.SelCount > 0) then
begin
tmp := GetDownloadDirectory + database_list.Selected.Caption;
if FileExists(tmp) then
begin
// The left border as well as the title line of the ListView is not included
// in the X and Y parameter, so we have to add X+6 and Y+32... :-/
ContextMenuForFile(tmp, MainForm.Left + database_list.Left + X + 6,
MainForm.Top + database_list.Top + Y + 32,
Application.Handle);
end;
end;
end;
Ich hab nur noch so ein seltsames Problem: Die X und Y Angaben sind abzüglich der Titelzeile und abzüglich des linken Randes der TSortListView (TListView), weswegen ich hier die Zahlen 6 und 32 "hard-coden" musste
(Lösung?)
Ich bin erstaunt darüber, dass sich sofort auch mein sekundäres Problem von selbst gelöst hat - ich wollte nämlich die "Umbenennen"-Funktion deaktivieren bzw. zumindestens behandeln (Datenbankeintrag, der zu der Datei gehört, mit umbenennen). Das Shell-Menu hat den "Umbenennen"-Eintrag nicht
Naja, man kann trotzdem die Datei löschen oder über den Eigenschafts-Dialog die Datei umbenennen. Ich muss mich da noch um ein Shell-Notify (?) für Änderungsereignisse des Zielordners beschäftigen.
Gruß
blackdrake