AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Ein Windows ShellMenu für eine Datei erscheinen lassen
Thema durchsuchen
Ansicht
Themen-Optionen

Ein Windows ShellMenu für eine Datei erscheinen lassen

Offene Frage von "blackdrake"
Ein Thema von blackdrake · begonnen am 25. Aug 2008 · letzter Beitrag vom 26. Aug 2008
 
blackdrake

Registriert seit: 21. Aug 2003
Ort: Bammental
618 Beiträge
 
Delphi 10.3 Rio
 
#5

Re: Ein Windows ShellMenu für eine Datei erscheinen lassen

  Alt 25. Aug 2008, 21:02
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
Daniel Marschall
  Mit Zitat antworten Zitat
 


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 20:28 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