[VBA w ZwCad+ ] wywołanie okna dialogowego w czasie wykonywania makra


Rekomendowane odpowiedzi

Witam

Jakie zmienne systemowe w ZwCad+ należy pozmieniać lub co innego należy zrobić żeby była możliwość wyświetlania okien dialogowych z ZwCada w trakcie działania makra ??

Potrzebuje przy otwartym moim oknie z poziomu VBA wywołać jakieś okno dialogowe z ZwCada i je zamknąć następnie powrócić do mojego okna (moje okno cały czas uruchomione), w wersji 2011 i 2010 działo mi to bez problemu

Podam przykład, do przycisku na formie podpinam kod:

Private Sub CommandButton1_Click()
ThisDrawing.SendCommand "color" & Chr$(13)
End Sub

Okno otwiera się dopiero po zamknięciu formy, przy czym musiałem dodatkowo wywołać naciśnięcie klawisza enter co w poprzednich wersjach niebyło konieczne.

Niezgłebiałem wcześniej tego zagadnienia, bo nie miałem wcześniej z tym problemu :)

pozdrawiam

Edytowane przez Michał J
Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 tygodnie później...

Potwierdzam błędne działanie programu. Zgłosiłem to do ZWSOFT.

Jako rozwiązanie tymczasowe co mogę zasugerować, to w funkcji uruchamiającej okno można go uruchomić z parametrem vbModeless. Wówczas będzie się wyświetlało okno wyboru koloru nawet jeśli własne okno będzie otwarte

UserForm1.Show vbModeless

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

Zastosowanie vbModeless przy wywołaniu formy pomogło :)

ale mam jeszcze problem żeby wybraną wartość koloru po zaknięciu okna "color" zwracało mi do TextBox'a umieszczonego na tej samej otwartej formie

przykładowy kod:

Private Sub CommandButton1_Click()

ThisDrawing.SendCommand "color" & Chr$(13)

' tutaj jakiś kod który kazał czekać na zamknięcie okna

TxtBox1.text = ThisDrawing.GetVariable("CECOLOR")

End Sub

powyższy kod wywołuje otwarcie okna "color" ale przy otwartym oknie nie czeka na zamknięcie tego okna i wykonuje kod dalej i pobiera wartośc koloru zanim go ustawie,

niewiem jak zatrzymać wykonywanie kodu na czas otwarcia innego okna,

jak to rozwiązać ??

Edytowane przez Michał J
Odnośnik do komentarza
Udostępnij na innych stronach

Rzeczywiście po uruchomieniu okna wyboru koloru program działa dalej i nie znam sposobu, żeby to zatrzymać. Myślałem, że może uda sie przechwycić zdarzenie zamknięcia tego okna, to byłoby nawet możliwe, ale i tak nie uda się przekazać wyniku do formularza, bo jego obiekt musiałby być globalny a to nie chce się uruchomić, bo wyświetla komunikat, że moduły nie mogą być zmiennymi globalnymi.

Niestety myślę, że pozostaje czekać do wydania wersji ZWCADa, w której będzie to poprawione.

Odnośnik do komentarza
Udostępnij na innych stronach

  • 5 miesięcy temu...

Witam

W najnowszej wersji ZwCAD+ (z 2013.03.31) zastosowanie vbModeless przy wywołaniu formy daje oczekiwany efekt, czyli zwraca wybrany kolor do TextBox'a :-)

ale przy zastosowaniu vbModeless niemożna nic wpisać do wszystkich TextBox'ów umieszczonych na tej formie, wpisywany tekst jest wyświetlany w wierszu poleceń :cry:

jak rozwiązać ten problem ??

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

Tak, dwa dni urlopu spowodowały u mnie natchnieni pomysłem które objawiło się następującym kodem:

Private Declare Function zcedSetColorDialog Lib "zwcad.exe" (Color As Long, ByVal bAllowMetaColor As Boolean, ByVal nCurLayerColor As Long) As Boolean

Public Function ColorDialog(DefCol As Long, MtaCol As Boolean, LayCol As Long) As Long
MeGetAcadColor = -1
On Error Resume Next
 If zcedSetColorDialog(DefCol, MtaCol, LayCol) Then
 MeGetAcadColor = DefCol
 End If
On Error GoTo 0
End Function
Private Sub CommandButton1_Click()
ColorDialog 1, True, 1
End Sub

W ramach wytłumaczenia dodam, że importujemy funkcję zcedSetColorDialog z pliku "zwcad.exe" (tak jakby było to plik dll)

Wywołujemy ją przy kliknięciu przycisku na formularzu. Myślę, że jest to skuteczne rozwiązanie Pana problemu

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Witam

Dzięki za pomoc pomogło, uzyskałem pożądany efekt :)

A jeszcze zapytam jak analogicznie zaimportować funkcję z pliku zwcad.exe dla okna dialogowego wywoływanego z polecenia "ddosnap" (lokalizaja wzgl. obiektu)??

pozdrawiam

Edytowane przez Michał J
Odnośnik do komentarza
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie