Obsługa systemowego menu kontekstowe w ListView

0

Jak wykryć nazwę zdarzenia wybranego w systemowym menu kontekstowym ? Na formie umieściłem ListView, do której wczytuję zawartość wybranego katalogu w postaci ikon. Dołożyłem funkcję uruchamiającą systemowe menu kontekstowe. Menu działa po kliknięciu prawym przyciskiem myszki na wybranej ikonie. Jak przechwycić nazwę wybranej opcji (np. Zmień nazwę) celem uruchomienia własnej procedury w tym zakresie ?

1

Nie wiem co dokładnie chcesz zrobić nie lepiej zamiast nazwy opcji która będzie różna w różnych wersjach językowych systemu przechwycić nazwę wysłanej komendy (dla Zmień nazwę będzie to rename)?
Nie wiem jakim kodem wywołujesz menu ale radzę pobaw się tym:
http://blog.issamsoft.com/index.php?q=en/node/65
tam po if Command then jest wszystko co potrzebujesz. W z zmiennej Verb masz komendę o której wspomniałem jak domyślna akcja ma nie być wykonana musisz zadbać aby NIE wykonał się kod opatrzony warunkiem if Supports(nil, IShellCommandVerb, SCV) then ani if not Handled then.

0

Dzięki, brakowało mi tego stringa Verb, ale to dopiero początek :). Najlepiej na przykładzie: wybieram z menu systemowego "Wytnij" (Cut), Następnie gdzieś tam w systemie używam "Wklej" (Paste). Wszystko pięknie działa, ale w tym momencie powinienem ponownie wczytać dane do ListView, gdyż dopiero po wykonaniu drugiego działania wskazany plik zostanie przeniesiony do nowego folderu, ale nadal będzie widoczny w ListView. Chodzi właśnie o to, jak wyczaić ten moment. Równie dobrze mogę zrezygnować z wklejania i plik nadal pozostanie w pierwotnym katalogu. Jak wiadomo ListView nie ma OnChange, a nie chcę go wiązać z TreeView i zmieniać dynamicznie.

2

To się robi zupełnie inaczej należy monitorować folder pod względem zmian i wtedy odświeżyć pliki w ListView.
Tu masz link do przykładu http://www.osnews.com/story/7376/A_Directory_Monitor_Class_For_Delphi/page1/

0

Bardzo dziękuję. To jest to, co tygrysy lubią najbardziej. Wreszcie zrobiłem krok do przodu z moim programem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1