Zobrazit plnou verzi příspěvku: Vypnutí a zapnutí pole komponent v sestavě iLogic

rizekB
04.12.2017, 10:14
Zdravím, mám jeden problém.Mám vytvořené tři(3) pole komponent v sestavě a pomocí podmínky chci tyto pole zapínat a vypínat. Zkoušel jsem to přes True a False ale pokud je pole False, tak už se nechce zpátky přepnout do True. Děkuji za rady

Navara
05.12.2017, 08:52

No podle mě je nejjednodušší použít metodu IsActive [code]Dim activePattern As Integer = 1 ' 2 3Component.IsActive("Pole komponent 1:1") = (activePattern = 1)Component.IsActive("Pole komponent 2:1") = (activePattern = 2)Component.IsActive("Pole komponent 3:1") = (activePattern = 3)[/code]

rizekB
05.12.2017, 09:39
Jak to zkombinuji s podmínkou If?If delka<8500 then.........else......End If

Navara
05.12.2017, 11:28

třeba takhle [code]Dim activePattern As IntegerIf delka < 1000 Then activePattern = 1ElseIf 1000 <= delka AndAlso delka < 2000 Then activePattern = 2Else activePattern = 3End IfComponent.IsActive("Pole komponent 1:1") = (activePattern = 1)Component.IsActive("Pole komponent 2:1") = (activePattern = 2)Component.IsActive("Pole komponent 3:1") = (activePattern = 3)[/code]

rizekB
05.12.2017, 12:10
To ale jenom ty pole zapíná že? Potřeboval bych i vypínání polí na základě podmínky.

Navara
05.12.2017, 12:42

No tak si to zkuste. Podle mě je to to, co potřebujete.

rizekB
06.12.2017, 12:06
můžete mi prosím vysvětlit, na jakém principu to funguje? chtěl bych to pochopit :) děkuji

Navara
06.12.2017, 14:02

První část definuje a nastaví proměnnou activePattern na hodnotu, která odpovídá poli, které chcete zapnout na základě hodnoty parametru delka.[code]Dim activePattern As IntegerIf delka < 1000 Then activePattern = 1ElseIf 1000 <= delka AndAlso delka < 2000 Then activePattern = 2Else activePattern = 3End If[/code]  Druhá část použije metodu Component.IsActive pro zapnutí/vypnutí pole.[code]'Zapne pole komponentComponent.IsActive("Pole komponent 1:1") = True'Vypne pole komponentComponent.IsActive("Pole komponent 1:1") = False[/code] no a výraz v závorce (activePattern = 1) lze vyhodnotit jako logickou hodnotu True/False. To je celé.

rizekB
06.12.2017, 15:08
Teď to mám takhleDim activePattern As IntegerIf delka < 8500 Then activePattern = 1Else activePattern = 2End IfComponent.IsActive("SP 10") = (activePattern = 2)Component.IsActive("SP 5 L") = (activePattern = 1)Component.IsActive("SP 5 P") = (activePattern = 1)Component.IsActive("SP 0 P") = (activePattern = 1)Component.IsActive("SP 0 L") = (activePattern = 1)Potřeboval bych to tak, aby se mi při nedodržení podmínky zapnuly všechny pole a ne jenom pole SP 10.

Navara
06.12.2017, 15:31

No dá se to napsat i tak, že pro různé podmínky explicitně zapnete/vypnete pole [code]'Zapinani pole podle podminky'If delka < 8500 Then  Component.IsActive("SP 10") = FalseElse  Component.IsActive("SP 10") = TrueEnd If'Tato pole jsou zapnuta vzdy'Component.IsActive("SP 5 L") = TrueComponent.IsActive("SP 5 P") = TrueComponent.IsActive("SP 0 P") = TrueComponent.IsActive("SP 0 L") = True[/code] Nebo zkráceně [code]'Zapinani pole podle podminky'Component.IsActive("SP 10") = Not (delka < 8500) 'Tato pole jsou zapnuta vzdy'Component.IsActive("SP 5 L") = TrueComponent.IsActive("SP 5 P") = TrueComponent.IsActive("SP 0 P") = TrueComponent.IsActive("SP 0 L") = True[/code]  

rizekB
07.12.2017, 08:11
Už to fakčí :) děkuji