Programujeme v .NET - 3.díl: Seznam CATIA oken v roletovém menu
Publikováno: 15. prosince 2013 | Zobrazeno: 5333x
V dnešním dílu seriálu si ukážeme, jak se dá v makru jednoduše vytvořit rozbalovací menu, ve kterém bude seznam oken s otevřenými dokumenty v CATIA. Určitě se ptáte, proč vytvářet něco, co v CATIA už je. Ano, máte pravdu, v hlavním menu CATIA skutečně je položka Window, pod kterou se skrývá seznam okem. Zkušený uživatel však ví, že (pro mě dosud z neznámého důvodu) se zobrazí pouze deset prvních oken a pak se úplně vespod ukáže More window..., a až když na tuto nabídku klikneme, teprve pak se otevře další okno, ve kterém jsou všechna okna, viz obrázek vpravo Pokud máme otevřeno více dokumentů, je to pomalé a otravné. Přitom je řešení tak snadné.
Vrátíme se k našemu poslednímu projektu MojeMakro a rozšíříme ho o další funkce, které načtou seznam okem do položky menu a po výběru toto okno nastaví jako aktivní.
Než začneme s programováním funkcí, vložíme si do formuláře prvek typu
Formulářový prvek MenuStrip najdeme stejně jako všechny ostatní prvky v Toolboxu, ve skupině
Po vložení klikneme do políčka s textem Type here a napíšeme název položky - Okno. Současně si tuto položku položku pojmenujeme jako MenuOkno v kartě Properties.
Tím máme připraveno vše potřebné a můžeme se vrhnout na samotné programování. Vytvoříme dvě funkce. První načte seznam oken a vloží ho do menu Okno jako nové položky, druhá pak toto okno aktivuje v CATIA.
Dále už jen kontrolujeme, jestli se název okna shoduje s aktivním oknem (v seznamu přidáme zatržítko pro indikaci) a nakonec takto vytvořenou položku přidáme do seznamu.
A to je všechno. Pokud jsme postupovali správně, můžeme si makro vyzkoušet.
Tuto funkcionalitu můžeme zabudovat do každého makra (já to tak dělám), nebo ji upravit do samostatného makra v nějaké kompaktní podobě, kdy se form otevře u horního okraje obrazovky, bude trvale skrytý a zobrazí se po najetí myši do těchto míst. Makro pak může být trvale spuštěno a sloužit jako lepší alternativa ke CATIA menu Window.
Autor článku: Jan Cinert
Příště: Selekce a její možnosti
Vrátíme se k našemu poslednímu projektu MojeMakro a rozšíříme ho o další funkce, které načtou seznam okem do položky menu a po výběru toto okno nastaví jako aktivní.
Než začneme s programováním funkcí, vložíme si do formuláře prvek typu
MenuStrip
, což je klasické roletové menu. Jeho strukturu můžeme vytvořit jako pevnou přímo v okně Designer nebo jí můžeme měnit při běhu makra dynamicky. V našem případě využijeme druhou možnost, tj. položky menu (názvy dokumentů) budeme do menu přidávat vždy při kliknutí na položku Okno. Tím zajistíme, že se v seznamu objeví vždy aktuálně otevřená okna (dokumenty).
Formulářový prvek MenuStrip najdeme stejně jako všechny ostatní prvky v Toolboxu, ve skupině
Menus & Toolbars
. Do formuláře jej vložíme pouhým přetažením na místo, kde ho chceme mít (horní okraj formu).
Po vložení klikneme do políčka s textem Type here a napíšeme název položky - Okno. Současně si tuto položku položku pojmenujeme jako MenuOkno v kartě Properties.
Tím máme připraveno vše potřebné a můžeme se vrhnout na samotné programování. Vytvoříme dvě funkce. První načte seznam oken a vloží ho do menu Okno jako nové položky, druhá pak toto okno aktivuje v CATIA.
VytvorSubmenu:
Tato první funkce se volá při začátku rozbalování menu, tj. ve chvíli, kdy na položku Okno klikneme myší, ale ještě předtím, než se položky uvnitř rozbalí. V tomto mezičasu si makro poskládá položky a vloží je do seznamu, který se pak rozbalí. Velmi důležitý krok je vytvoření nové položky menu, ve kterém kromě názvu přidáváme ještě Handler, tj. říkáme makru, co se stane při kliknutí na položku. Stane se totiž to, že se zavolá druhá fuknce, které se předá název okna, které se má aktivovat.Dále už jen kontrolujeme, jestli se název okna shoduje s aktivním oknem (v seznamu přidáme zatržítko pro indikaci) a nakonec takto vytvořenou položku přidáme do seznamu.
oWindows = CATIA.Windows
oActiveWindow = CATIA.ActiveWindow
Private Sub VytvorSubMenu(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuOkno.DropDownOpening
If Not PripojCatia() Then
Exit Sub
End If
oWindows = CATIA.Windows ' nacteme okna
oActiveWindow = CATIA.ActiveWindow
MenuOkno.DropDownItems.Clear() ' vyprazdnime polozky menu Okno
For Each oWindow As Window In oWindows ' vytvorime noveho submenu v menu Okno
Dim Okno As New ToolStripMenuItem(oWindow.Caption, Nothing, New EventHandler(AddressOf PrepniOkno))
If oWindow.Caption = oActiveWindow.Caption Then
Okno.Checked = True ' zatrhneme aktivni okno
End If
' pridame submenu Do meno Okno
MenuOkno.DropDownItems.Add(Okno)
Next
End Sub
PrepniOkno
Druhá funkce je ještě jednodušší. Vezme si název okna z menu z objektusender
, kterým je vlastní položka menu, na kterou jsme klikli. Pak jen kontrolujeme, zda se název položky neshoduje s právě aktivním oknem. V opačném případě zavoláme metodu Activate
objektu Window
, který vybereme z kolekce CATIA.Windows
.
Private Sub PrepniOkno(ByVal sender As System.Object, ByVal e As System.EventArgs)
If Not PripojCatia() Then
Exit Sub
End If
' oktivni okno nejde aktivovat
If oActiveWindow.Caption <> sender.ToString() Then
CATIA.Windows.Item(sender.ToString).Activate()
End If
End Sub
A to je všechno. Pokud jsme postupovali správně, můžeme si makro vyzkoušet.
Tuto funkcionalitu můžeme zabudovat do každého makra (já to tak dělám), nebo ji upravit do samostatného makra v nějaké kompaktní podobě, kdy se form otevře u horního okraje obrazovky, bude trvale skrytý a zobrazí se po najetí myši do těchto míst. Makro pak může být trvale spuštěno a sloužit jako lepší alternativa ke CATIA menu Window.
Autor článku: Jan Cinert
Příště: Selekce a její možnosti