Dokowanie panelu (C#)


Parikon

Recommended Posts

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);

 

Edited by Parikon
Link to comment
Share on other sites

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;

 

Link to comment
Share on other sites

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".

Link to comment
Share on other sites

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.

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