Die Properties für CATParts werden auf fünf Tab-Seiten dargestellt.

(Um denselben Dialog im Produkt zu erhalten ,muss das Part blau hinterlegt sein!)

Problematik:

Es gibt keine Möglichkeit per CAA die Tab-Seite zu wechseln.

Änderungen an den nicht per CAA zugänglichen Einstellungen sind somit auch unmöglich.

 

Zur Lösung:

Im ersten Schritt wird per Spy++ 11/64bit der Dialog analysiert.


 


Dabei stellt sich heraus, dass die fünf Tabs in einem 'Container', einem Behälter abgebildet werden.

Ausserdem zeigt sich, dass dieser Behälter keinen Text hat, nur eine Klasse.

Die Tabs selbst sind nur als Bereich ansprechbar:

'part properties tab bar layout (x-werte der trennstellen sind ca.-werte)
'   x0           x73      x119         x178        x235               x350               x494
' y0+------------+--------+------------+-----------+------------------+------------------+
'   | Mechanical |  Mass  |  Graphic   |  Product  | Color Management |                  |
'   +------------+--------+------------+-----------+------------------+------------------+
' y23
'
' das tabbar-window geht von 0/0 - 494/23

Beim Klick auf ein Tab registriert Spy ein WM_LBUTTONDOWN/WM_LBUTTONUP - Paar.

Dabei werden noch die X/Y-Werte für die Mauskoordinaten ausgegeben und zwar relativ zum Tab-Behälter - Koordinatensystem;

zB (10/30) für einen Klick auf Mechanical.

 

Vorgehensweise:

Zunächst werden die Handle für Dialog, Tabulator-Bar und sonstige Kontrollelemente bestimmt.

Danach wird der CLIENTRECT, das Klientenrechteck des Tabulators abgefragt (Ergebnis siehe obige Grafik).

Zum Schluss geht's nur noch darum, an der richtigen StelleMausklicks zu simulieren.

Sub MyMouseClick(x As Long)                  'mimick mouse click
   SendMessageByNum hWndTabBar, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(rccl.Left + x, (rccl.Bottom - rccl.Top) \ 2)
   SendMessageByNum hWndTabBar, WM_LBUTTONUP, MK_LBUTTON, MAKELPARAM(rccl.Left + x, (rccl.Bottom - rccl.Top) \ 2)
End Sub

wobei rccl die Rechteckkordinaten der TabBar sind.

Die Demo sieht zunächst so aus:

... und nach öffnen des Catia-Property-Dialoges dann so:

Durch Klick auf den jeweiligen Button, wird in Catia die entsprechende Tab-Seite geöffnet.

Um die Demo   auszutesten, muss zuvor ein CATPart aktivert werden.

Zum Seitenanfang