Przypisz skrót klawiaturowy do cmdbutton w UF

Cze wszystkim

Po wielu badaniach i testach nie mogę utworzyć skrótu klawiaturowego, aby aktywować cmdbutton w UserForm.
Próbowałem różnych podejść, z których ostatnie to to:

Prywatny Sub UserForm_Initialize()
Me.KeyPreview = Prawda
Koniec subwoofera

Private Sub UserForm1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Jeśli KeyCode = vbKeyF4 to
Zadzwoń pod cmdButton_1_Click
Zakończ jeżeli:
Koniec subwoofera

Przetestowałem też polecenie: Application.OnKey, ale nic nie pomaga!

Idealnie byłoby, gdyby skrót aktywował cmdbutton bez konieczności określania ogniskowej przez formularz użytkownika.
Powinienem zaznaczyć, że pracuję nad SW 2010. Mogą wystąpić problemy ze zgodnością...

Jeśli kiedykolwiek spotkałeś się z tym problemem i znasz odpowiednie elementy sterujące, byłbym wdzięczny.

Dziękuję!

Dobry wieczór

Jedynym sposobem, jaki znalazłem, aby to zadziałało, jest ustawienie przycisku na Włącz = Fałsz.
Linia przy inicjalizacji UserForm nie jest moim zdaniem konieczna.
I musiałem to zmienić:

Private Sub UserForm1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Przez:

Private Sub UserForm_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

Witam

Czy w formularzu użytkownika jest coś innego niż ten przycisk?

Czy nie jest możliwe stworzenie makra dedykowanego do automatycznego wykonywania funkcji uruchamianej przez wspomniany przycisk, a następnie przypisanie skrótu do przycisku makra na pasku narzędzi?

Innymi słowy, skrót klawiaturowy uruchamia makro, które uruchamia funkcję i zamyka się na następne naciśnięcie skrótów klawiaturowych.

1 polubienie

Dobry wieczór

Dziękuję za odpowiedzi. Spróbuję jutro.
Sylk, tak, mam około dwudziestu guzików na moim UF. Chodzi o to, aby skonfigurować je wszystkie, przypisując im skróty.

Mój UF ma już swój skrót, ale ze względu na wydajność chciałbym skonfigurować około dwudziestu przycisków.

Jest nas około dziesięciu, którzy używają makr, które znajdują się na serwerze. Moim pierwszym pomysłem było wstawienie ich pojedynczo do zakładki w oprogramowaniu; Później zdałem sobie sprawę, jak żmudna byłaby aktualizacja dla wszystkich, gdyby nastąpiła zmiana makr lub gdyby folder zmienił swoją nazwę lub lokalizację. UF wydawał mi się najlepszym rozwiązaniem zapewniającym płynność i prostotę w wyżej wymienionych przypadkach.
Biorąc to pod uwagę, jeśli pominąłem " technikę " i UF nie jest obowiązkowe, jestem do Twojej dyspozycji.

Dziękuję za odpowiedzi,

Witam

W przypadku aktualizacji nie jest to tak restrykcyjne.
W domu opracowałem całą masę makr, które uruchamia się poprzez naciśnięcie ikony obok ikon zapisywania, cofanie się... Podstawa SW.
Ponieważ zarządzamy konfiguracją globalną i generujemy plik konfiguracyjny używany przez wszystkich (sldreg), aktualizacja dowiązań makr może być łatwo wykonana (ale jeśli możemy pozostawić ścieżki i metody zwane stałymi, zawsze jest lepiej).
Następnie, aby zaktualizować kod, musisz tylko znaleźć czas, w którym nikt nie ma otwartego oprogramowania, aby móc zaktualizować zawartość i wdrożyć nowe funkcje lub poprawki błędów.
Pamiętaj, aby ustawić makra jako tylko do odczytu i zablokować ich zawartość hasłem, aby uniknąć manipulacji przez osoby, które nic o tym nie wiedzą (miałem już makra opróżnione z ich zawartości, na szczęście miałem kopie zapasowe gdzie indziej).
Idea @Sylk jest dobra, ale wymaga od użytkowników bycia dobrze poinformowanym o funkcjach związanych z każdym skrótem klawiaturowym.

1 polubienie

Witam @Cyril_f

Tak więc tym razem przejrzystość powiązanych funkcji i skrótów jest właśnie atutem tej metody:
image
Jawna ikona i etykietka narzędzia z tytułem, skrótem i opisem. Trudno jest uczynić to bardziej przejrzystym dla użytkownika.

Dla mnie nic nie przebije osobistego paska narzędzi z przyciskiem dla każdej funkcji połączonym z przyciskiem w formularzu użytkownika. Możesz pozostawić go otwarty i w zasięgu ręki lub ukryć (aby skróty były " natywnie zintegrowane" i niewidoczne.
Paski narzędzi można przenosić za pomocą ustawień oprogramowania, więc jest to dość łatwe do wdrożenia.

Jedynym minusem, wiedząc, że makro zamyka się po każdym wykonaniu funkcji, jest być może to, że niektóre wartości zmiennych muszą utrzymywać się między 2 funkcjami...

W tej chwili nie mam nic lepszego do zaoferowania.

Jestem zsynchronizowany, ale z widoku użytkowników w domu mogę powiedzieć, że nawet podpowiedź wykracza poza ich " kompetencje ".
Zasadniczo muszą raczyć prześlizgnąć się po dostępnych ikonach, a nie tylko używać SW20xx, tak jak my użyliśmy SW9x (95/98/99)

Witam;
Możliwe jest utworzenie jednego (lub więcej) kompletnego i konfigurowalnego paska narzędzi do udostępniania na wszystkich stacjach roboczych Solidworks (za pośrednictwem dodatków):

Ten pasek narzędzi ma również tę zaletę, że może aktywować (lub nie) dostęp do przycisków/makr w zależności od środowiska pracy (jeśli pracujesz w złożeniu, nie jest konieczna możliwość korzystania z makr specyficznych dla rysunków...).
Wadą jest konieczność tworzenia spersonalizowanych i czytelnych ikon, ale nadal jest to możliwe do pokonania.
Uwaga: Wersja, której używamy na naszych stacjach roboczych, to wersja beta (zwana wówczas " MyToolbar "). Nie testowałem wersji " Toolbar+ " oferowanej w pakiecie " Cad+ "...

1 polubienie

Witam

Dziękuję za odpowiedzi.
Rozwiązanie paska narzędzi Toolbar zostało już przetestowane.


Jest to o tyle dobre, że pozwala na przypisanie indywidualnych skrótów,
Jeśli jednak nastąpi zmiana w wielu makrach, konieczne jest zaktualizowanie łącza dla każdego zmodyfikowanego makra i dla każdego użytkownika.
Rzeczywiście, Cyril_f, aby zaktualizować oprogramowanie, każdy użytkownik musiałby mieć zamknięte oprogramowanie, aby je przetestować, jest to restrykcyjne. Ponadto, oprócz zmian dokonywanych w ramach makr, mogą wystąpić zmiany w lokalizacji plików lub zmiany w nazwach folderów.
Przetestowałem już, jak zasugerowałeś, Cyril_f zarejestrować plik .sldreg, który pozwoliłby na szybką aktualizację. Nie okazało się to jednak skuteczne w naszej sytuacji.
Idea USF polegała wówczas na tym, że trzeba było wprowadzić tylko jedną zmianę. Prostsze dla użytkowników.
Idąc dalej, pomysł upuszczenia partii na komputery użytkowników, która pozwoliłaby na lokalne skopiowanie i wklejenie zaktualizowanego pliku makra na serwerze; Ma to na celu znaczne zwiększenie responsywności makr.

Ale zawsze wracam do mojego problemu ze skrótami napisanymi bezpośrednio w kodzie, żadna próbowana składnia nie wydaje się działać!
Cyril_f napisałem UserForm1, ponieważ logicznie rzecz biorąc, mając 2 USFy w moim projekcie, wydawało mi się istotne, aby go nazwać. Czy się mylę?

O tak, ale to, co musisz zakodować, to makro, aby uruchomić funkcję " startUserBrain() " do ich neuronów...

1 polubienie

Witam @N_MS

Nie. Wszystko, co musisz zrobić, to zintegrować wszystkie funkcje w jedno makro (wspólne) i wybrać funkcję (zwaną " Metoda ") przeznaczoną dla każdego przycisku.
Jeśli zaktualizujesz makro, o ile nie zmienisz nazw funkcji wywoływanych przez przyciski, wszystkie aktualizacje będą miały wpływ. Aktualizacja paska narzędzi w domu użytkownika będzie przydatna tylko do dodawania nowych przycisków/funkcji.

To jest cały sens paska narzędzi, który proponuję powyżej.
Ten ostatni ma być zlokalizowany na współdzielonym serwerze, różne makra z nim powiązane mają postać linków (lokalizacja makr) i w przypadku aktualizacji lub dodania funkcji, zostanie automatycznie ponownie załadowany przy następnym uruchomieniu Solidworks dla wszystkich użytkowników.

W przeciwnym razie istnieje narzędzie CustomToolbar, które umożliwia również dodanie paska narzędzi ze skrótami do makra.
Konfiguruję ten pasek na swoim komputerze i wtedy mam plik bat, który pozwala mi propagować na komputerze, z którego plik bat jest uruchamiany.
Plik beat do tworzenia kopii zapasowej plików lokalnych na serwerze i plik przywraca pliki lokalne przez utworzenie kopii zapasowej serwera.
Pozwala mi to szybko propagować ulepszenia za pomocą nowych makr dla wszystkich.
Wcześniej przechodziłem przez ten sam pasek narzędzi @maclane (ale dział IT zablokował instalację oprogramowania ze źródła, które nie było wystarczająco znane!)
Aby kod pliku bat został skopiowany z sieci do lokalnej:

Echo Message > log.txt
Echo Message >> log.txt
chcp 65001
Echo "Fermer Solidworks puis appuyer sur entrée"
pause
cd %LOCALAPPDATA%\Visiativ\myCADtools\CustomToolbar
ren "%LOCALAPPDATA%\Visiativ\myCADtools\CustomToolbar" "CustomToolbar save-%date:/=-%" 
xcopy "Z:\XXX\xxx\Solidworks\Configuration\CustomToolbar\Sauvegarde Profil\Profil-SW2023\" "%LOCALAPPDATA%\Visiativ\myCADtools\CustomToolbar" /e /i /c /h /y > "Z:\XXX\xxx\Solidworks\Configuration\CustomToolbar\log.txt

Edycja: Właśnie złożyłem wniosek o rozwój za pośrednictwem Visiativ, aby mieć ścieżkę kopii zapasowej sieci i przywrócić ją za pomocą pliku kopii zapasowej dla tego narzędzia.

2 polubienia

… Czy odpowiedzieli Ci na ten temat? Ja też o to prosiłem kilka lat temu... bez odpowiedzi.

To samo @Maclane złożyłem nową prośbę przed napisaniem edycji.
Grupując nasze prośby, może to przejść!
A jeśli na przykład @fmarchand może poprzeć prośbę, to jeszcze lepiej!
Przykład konkurencyjnego oprogramowania, które wydaje mi się świetne w tym punkcie:

1 polubienie

Witam

Dziękuję wszystkim za wkład.
Próbowałem zainstalować ToolBar, niestety będąc na wersji oprogramowania 2010, nie działa.

Będąc naprawdę przywiązanym do USF (użytkownicy są do niego przyzwyczajeni i doceniają jego użycie) pozostaję, pomimo Twoich propozycji, bez rozwiązania.
Wydaje się, że różne rozwiązania do przypisywania skrótów bezpośrednio w kodzie nie działają.
Czy pominąłem jakiś krok? Czy należy dokonać regulacji, aby wykrywał naciśnięte?
Czy masz inne składnie w magazynie?

Dziękuję za pomoc,