problem z skrótem w menu

0

Chcę zrobić coś takiego:

Mam SynEdit i tam jest już ustawione wklejanie ze schowka przez skrót CTRL+V. Teraz gdy tylko to wcisne - wklei się do schowka. Jeśli natomiast wywołam TFindDialog i tu wcisne CTRL+V - wklei się do TFindDialog (tak ma być!). Jednak w menu --> edycja --> wklej chcę mieć widoczny skrót CTRL+V (w ramach estetyki). Gdy tylko taki tam zadeklaruje, wciśnięcie CTRL+V w TFindDialog powoduje wklejenie tekstu do SynEdit... bo menu przechwytuje ten skrót...

Jak można zrobić w menu, aby skrót był widoczny, ale nie aktywny.. ?

0

Są 2 sposoby (może i więcej, ale ja mam pomysł na 2):

  1. Dezaktywujesz skrót przy pokazaniu finddialoga i aktywujesz po zamknięciu.
  2. Właczasz tryb ownerdraw i samemu rysujesz tekst na menu. Wtedy możesz z prawej strony napisać 'Ctrl+V'.
0
<font color="green"> 1. Dezaktywujesz skrót przy pokazaniu finddialoga i aktywujesz po zamknięciu.</span>

Jak to zrobić?

<font color="green">2. Właczasz tryb ownerdraw i samemu rysujesz tekst na menu. Wtedy możesz z prawej strony napisać 'Ctrl+V'.</span>

Odpada... nie będzie wyrównane z innymi skrótami.

0

ElementMenu.Enabled:=False; :) - od razu wyłączy skrót.

0
  1. Dezaktywujesz skrót przy pokazaniu finddialoga i aktywujesz po zamknięciu.

Jak to zrobić?

Zmieniając właściwość shortcut.

  1. Właczasz tryb ownerdraw i samemu rysujesz tekst na menu. Wtedy możesz z prawej strony napisać 'Ctrl+V'.

Odpada... nie będzie wyrównane z innymi skrótami.

Właśnie, że nie. W trybie ownerdraw sam rysujesz tekst na wybranej pozycji, więc możesz wyliczyć pozycję uwzgledniając wyrównanie. Możesz wyrównać albo do prawej, albo do jakiejkolwiek linii, nie ma problemu.

// Odpowiedź na post poniżej (znudziło mi się pisanie nowych postów :) )
Aby ustawić Ctrl+V programowo:
Item.ShortCut:=ShortCut(Word('V'), [ssCtrl]);

Aby wyczyścić, nie wiem... może coś w rodzaju:
Item.ShortCut:=ShortCut(0, [ssNone]);

W każdym razie tryb ownerdraw to prosta i niezawodna metoda. A jeszcze przy okazji można upiększyć menu.

0

<font color="green">Zmieniając właściwość shortcut.</span>

No dobra - lamerski problem... jakoś nie mogę wyłączyć shortcut`a programowo, a później go ustawić jak należy.

ElementMenu.Shortcut := nil;

nie działa...

W helpie niestety nie ma za dużo na temat typu TShortCut - również nie mogę ustawić np. na CTRL+V

0

Okej już znalazłem jak to zrobić, należy:

<font color="blue">ElementMenu.ShortCut := ShortCut(Word('V'), [ssCtrl]);</span>

Ale nadal nie wiem, jak wyłączyć skrót ....

0

Tu problem nie lezy w tym że menu przejmuje, ale raczej synedit....

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