Rekomendowane odpowiedzi

Opublikowano (edytowane)

Potrzebuje rozwiązania problemu braku automatycznego dokowania od wersji 2020. W 2019 po włączeniu ZwCAD panele automatycznie się dokują zgodnie z  kodem c#. A od wersji 2019.3 lub w wersji 2020 panel wyrzucony jest na bok.

Nie chce zakładać oddzielnego tematu

PaletaBazaZbrojenia.DockEnabled = (zzw.DockSides)((int)zzw.DockSides.Left + (int)zzw.DockSides.Right);

 

Edytowane przez Parikon
Opublikowano
Dnia 14.10.2019 o 19:48, Parikon napisał:

Brak zapamiętywania ustawienia panelu to przypadłość, której nie było w ZwCAD 2019. Pojawiło się w ZwCAD 2019 Sp 3 i ZwCAD 2020

 

Sztuczka polega na tym, żeby ustawić np

 _ps.Dock = DockSides.Left;

ale dopiero PO

_ps.Visible = true;

Czyli np:

_ps = new PaletteSet("Group Manager");
_ps.DockEnabled = (DockSides)((int)DockSides.Left + (int)DockSides.Right);
_ps.Visible = true;
_ps.Dock = DockSides.Left;

 

Opublikowano

Działa, ale teraz zawsze jest z lewej. A wcześniej jak ustawiłem z prawej i zamknąłem panel a potem znów go chciałem włączyć to dopóty nie restartowałem całego ZwCADA panel startował po prawej.

Opublikowano

Jeżeli nie da się tego naprawić po staremu, to można dać możliwość użytkownikowi wyboru strony w formie ustawień w programie. Co możecie zaimplementować  też w powyższym programie.

Opublikowano

Można dodać obsługę zdarzenia na zamknięcie palety

_ps.StateChanged += new PaletteSetStateEventHandler(OnPaletteClose);

Tam zapisać położenie panelu

static void OnPaletteClose(object sender, PaletteSetStateEventArgs e)
{
	if (e.NewState == StateEventIndex.Hide)
	{
		; tutaj zapisujemy położenie panelu w jakimś "pamiętniku" np zmiennej środowiskowe.
	}
}

A przy wczytywaniu sprawdzić co jest zapisane w "pamiętniku".

Opublikowano

Jest to jakieś rozwiązanie i działa. Jednakże dziwne, że nagle trzeba zmienić kod aby coś działało jak należy. Dla sprawnego oka widoczne jest, że paleta najpierw pojawia się obok, a potem dopiero jest dokowana. Przy czym objawia się to tylko po uruchomieniu ZwCAD-a. Dobrze by było to zgłosić do poprawki. Natomiast sam kod udało  mi się zaimplementować z powodzeniem.

static void OnPaletteClose(object sender, zzw.PaletteSetStateEventArgs e)
        {
            if (e.NewState == zzw.StateEventIndex.Hide)
            {
                if (_ps.Dock == zzw.DockSides.Left)
                {
                    Settings1.Default._ps = "left";
                }
                else
                {
                    Settings1.Default._ps = "right";
                }
            }
        }

Dziękuję za pomoc.

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się