Michał J Opublikowano 8 Października 2012 Zgłoś Opublikowano 8 Października 2012 (edytowane) 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 8 Października 2012 przez Michał J Cytuj
dmatusz3 Opublikowano 9 Października 2012 Zgłoś Opublikowano 9 Października 2012 Witam, znaczną część załogi zmogła choroba typowo jesienna. Postaramy się odpowiedzieć tak szybko jak to tylko możliwe. Pozdrawiam Cytuj
gruzin Opublikowano 9 Października 2012 Zgłoś Opublikowano 9 Października 2012 znaczną część załogi zmogła choroba typowo jesienna. hmm.. jak znaczną cześć załogi to chyba KAC :mrgreen: Cytuj
dmatusz3 Opublikowano 9 Października 2012 Zgłoś Opublikowano 9 Października 2012 :rolleyes: Zaręczam, że to nie to. :) Cytuj
kruszynski Opublikowano 24 Października 2012 Zgłoś Opublikowano 24 Października 2012 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 Cytuj
Michał J Opublikowano 26 Października 2012 Autor Zgłoś Opublikowano 26 Października 2012 (edytowane) 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 26 Października 2012 przez Michał J Cytuj
kruszynski Opublikowano 29 Października 2012 Zgłoś Opublikowano 29 Października 2012 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. Cytuj
Michał J Opublikowano 16 Kwietnia 2013 Autor Zgłoś Opublikowano 16 Kwietnia 2013 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 ?? Cytuj
dmatusz3 Opublikowano 16 Kwietnia 2013 Zgłoś Opublikowano 16 Kwietnia 2013 Witam, najszybciej w czwartek/piątek będziemy mogli Panu odpowiedzieć. nasz specjalista od VBA jest na urlopie. Pozdrawiam Cytuj
kruszynski Opublikowano 18 Kwietnia 2013 Zgłoś Opublikowano 18 Kwietnia 2013 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 Cytuj
Michał J Opublikowano 18 Kwietnia 2013 Autor Zgłoś Opublikowano 18 Kwietnia 2013 (edytowane) 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 18 Kwietnia 2013 przez Michał J Cytuj
kruszynski Opublikowano 18 Kwietnia 2013 Zgłoś Opublikowano 18 Kwietnia 2013 Analogicznie to raczej się nie da. Nie znalazłem takiej funkcji, ale postaram się jeszcze coś dowiedzieć. Jeśli mi się uda to zrobić oczywiście zamieszczę odpowiednią informację w tym temacie. Cytuj
Rekomendowane odpowiedzi
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ą.