Witaj @binoyte ,
PropertyManagerPage, obszerny temat...
Pozwala to na zintegrowanie interfejsu użytkownika/oprogramowania ze środowiskiem programowym, ze standardowymi i specjalistycznymi komponentami, a wszystko to o wyglądzie Solidworks.
Z trzema poziomami kontenerów: samą stroną, kartami z zakładkami (PropertyManagerPageTab) i grupami (PropertyManagerPageGroup).
Każdy kontener może otrzymywać różne i zróżnicowane kontrolki, podobne do tych z UserForm (takich jak Label, TextBox, Button itp.) oraz inne wyspecjalizowane kontrolki (wybór obiektów SW).
Ale zarządzanie pozycją kontrolek na stronie jest dość proste.
Problem polega na tym, że Solidworks sam definiuje położenie elementów sterujących na stronie PropertyManager, przynajmniej częściowo.
Pozwól, że wyjaśnię: na początku tworzona jest karta zakładki na stronie. Na tej karcie tworzony jest przycisk (PropertyManagerPageButton) i grupa (PropertyManagerPageGroup) w tej kolejności. Logicznie rzecz biorąc, spodziewalibyśmy się, że przycisk zostanie umieszczony nad grupą. W rzeczywistości jest umieszczony pod spodem, dzięki SW.
Ponieważ SW nadaje priorytet pozycji grupie (grupom), przyciski pojawią się po...
Niemożliwe jest również precyzyjne dostrojenie położenia kontrolek w tym samym kontenerze.
Ponieważ Label i TextBox są zdefiniowane w tej samej grupie, są one domyślnie umieszczane jeden pod drugim z tylko jednym wcięciem, pojedynczym lub podwójnym.
To ograniczenie można obejść, rzutując Label (typu PropertyManagerPageLabel) na typ wariantu OLE, a element TextBox (typu PropertyManagerPageTextBox) na typ wariantu OLE. W ten sposób formanty korzystają z właściwości Top i Left swoich " przodków " (takich jak PropertyManagerPageControl), co pozwala im wymusić swoje pozycje w kontenerze.

Ale są też ograniczenia, ponieważ SW trzyma to wszystko pod nadzorem: właściwość Left wydaje się być ograniczona do przedziału [0... 100], co uniemożliwia umieszczenie wielu przycisków na całej szerokości strony.
Niemożliwe jest uzupełnienie linii za pomocą 4 lub 5 przycisków.

Jeśli chodzi o ikony znajdujące się przed składnikami strony, są one wyświetlane przez metodę SetPictureLabelByName zdefiniowaną dla kontrolek. Ponownie należy rzutować komponenty na typ PropertyManagerPageControl lub typ neutralny wariantu OLE.

Nie wspominając już o kilku innych nieszczęściach...