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


Recommended Posts

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

Edited by Michał J
Link to comment
Share on other sites

  • 3 weeks later...

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

Link to comment
Share on other sites

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ć ??

Edited by Michał J
Link to comment
Share on other sites

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.

Link to comment
Share on other sites

  • 5 months later...

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 ??

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Edited by Michał J
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share