SOLVED: Global vs MainWindow again

Please report bugs.

SOLVED: Global vs MainWindow again

Postby Henning » Wed Aug 08, 2012 9:40 pm

Hi,

Declaring Public arrays of QPushButtons in Global using them in MainWindow still doesn't work. Those buttons are dead when running the app. If moved to MainWindow it works again.
There is no error the buttons are just dead. Signal on_MX11_buttonClicked(ky As QAbstractButton) doesn't trigger at all when declared in Global.

Code: Select all
Public Dim MUX1[8] As QPushButton
Public Dim MUX2[8] As QPushButton
Public Dim MUX3[8] As QPushButton
Public Dim MUX4[8] As QPushButton
Public Dim MUX5[8] As QPushButton
Public Dim MUX6[8] As QPushButton
Public Dim MUX7[8] As QPushButton
Public Dim MUX8[8] As QPushButton
Public Dim MUX11[8] As QPushButton
Public Dim MUX12[8] As QPushButton
Public Dim MUX13[8] As QPushButton
Public Dim MUX14[8] As QPushButton
Public Dim MUX15[8] As QPushButton
Public Dim MUX16[8] As QPushButton
Public Dim MUX17[8] As QPushButton
Public Dim MUX18[8] As QPushButton
Public Dim SYSX[9] As QPushButton
Public Dim cSYSTEM[9] As QPushButton
''
Public Dim MX1 As QButtonGroup
Public Dim MX2 As QButtonGroup
Public Dim MX3 As QButtonGroup
Public Dim MX4 As QButtonGroup
Public Dim MX5 As QButtonGroup
Public Dim MX6 As QButtonGroup
Public Dim MX7 As QButtonGroup
Public Dim MX8 As QButtonGroup
Public Dim MX11 As QButtonGroup
Public Dim MX12 As QButtonGroup
Public Dim MX13 As QButtonGroup
Public Dim MX14 As QButtonGroup
Public Dim MX15 As QButtonGroup
Public Dim MX16 As QButtonGroup
Public Dim MX17 As QButtonGroup
Public Dim MX18 As QButtonGroup
Public Dim SX As QButtonGroup
'
Dim cwid As QWidget = Me.Child("centralWidget")


Signal on_ProjectOpen()
  Dim i As Integer
  Dim s As String

'  If App.PrevInstance = True Then
'     MsgBox( "Already running....")
'     Close  /*Unload Me*/
'     Exit Sub
'  End If

  For i = 0 To 7
    MUX1[i] = cwid.Child("pb00" & i)
    MUX1[i]!BackColor = "Red"
    MX1.AddButton(MUX1[i])
    MUX2[i] = cwid.Child("pb01" & i)
    MUX2[i]!BackColor = "Red"
    MX2.AddButton(MUX2[i])
    MUX3[i] = cwid.Child("pb02" & i)
    MUX3[i]!BackColor = "Red"
    MX3.AddButton(MUX3[i])
    MUX4[i] = cwid.Child("pb03" & i)
    MUX4[i]!BackColor = "Red"
    MX4.AddButton(MUX4[i])
    MUX5[i] = cwid.Child("pb04" & i)
    MUX5[i]!BackColor = "Red"
    MX5.AddButton(MUX5[i])
    MUX6[i] = cwid.Child("pb05" & i)
    MUX6[i]!BackColor = "Red"
    MX6.AddButton(MUX6[i])
    MUX7[i] = cwid.Child("pb06" & i)
    MUX7[i]!BackColor = "Red"
    MX7.AddButton(MUX7[i])
    MUX8[i] = cwid.Child("pb07" & i)
    MUX8[i]!BackColor = "Red"
    MX8.AddButton(MUX8[i])
    MUX11[i] = cwid.Child("pb10" & i)
    MUX11[i]!BackColor = "Red"
    MX11.AddButton(MUX11[i])
    MUX12[i] = cwid.Child("pb11" & i)
    MUX12[i]!BackColor = "Red"
    MX12.AddButton(MUX12[i])
    MUX13[i] = cwid.Child("pb12" & i)
    MUX13[i]!BackColor = "Red"
    MX13.AddButton(MUX13[i])
    MUX14[i] = cwid.Child("pb13" & i)
    MUX14[i]!BackColor = "Red"
    MX14.AddButton(MUX14[i])
    MUX15[i] = cwid.Child("pb14" & i)
    MUX15[i]!BackColor = "Red"
    MX15.AddButton(MUX15[i])
    MUX16[i] = cwid.Child("pb15" & i)
    MUX16[i]!BackColor = "Red"
    MX16.AddButton(MUX16[i])
    MUX17[i] = cwid.Child("pb16" & i)
    MUX17[i]!BackColor = "Red"
    MX17.AddButton(MUX17[i])
    MUX18[i] = cwid.Child("pb17" & i)
    MUX18[i]!BackColor = "Red"
    MX18.AddButton(MUX18[i])
  Next

  For i = 1 To 8
    SYSX[i] = cwid.Child("SYS_" & i)
    SYSX[i]!BackColor = "Red"
    SX.AddButton(SYSX[i])
  Next

  SYSX[1]!BackColor = "Grn"
  SYSX[1].setStyleSheet("background-color: rgb(0, 255, 0)")

'  Me.Caption = Revision
  AutoTx = False
  Module1.Setup()
  OpenWindow("frm_InitLAN")

'  Do While Channel = 0
'    DoEvents(300)
'  Loop
'  CloseWindow("frm_InitLAN")
'
  cmdAck!BackColor = "Grn"
  cmdAck.setStyleSheet("background-color: rgb(0, 255, 0)")

  txtSystem.setText(String(SystemPort))
'  Timer1.Interval = Val(TmrVal.Text)
  cmdLog2File!BackColor = "Red"
'  MsgBox("Udp1 Settings", RemoteIp)

'  Udp1.Host = RemoteIp
''  MsgBox("Udp1 Settings", THPort)
'  Udp1.Port = THPort
'  Udp2.Bind(LocalHost, MyPort)
'  Udp1.Open()
'
End Signal 'on_ProjectOpen()

Signal on_Form_CloseEvent(e As QCloseEvent)
'  MsgBox("CLOSING", "About to Close")
  Udp1.Close()
  Udp2.Close()
  Timer1.Stop()
  Application.Quit()
End Signal

Signal on_MX11_buttonClicked(ky As QAbstractButton)
  Dim ix As Integer
  Dim b As Integer

  ix = Integer(Right(ky.ObjectName, 1))

  If MUX11[ix]!BackColor = "Red" Then
    Relays[1] = Relays[1] Or PortBit[ix]
  Else
    Relays[1] = Relays[1] And InvPortBit[ix]
  End If

  b = Integer(UtPort!text)
  SetUpRelays(b, 1)
End Signal



/Henning
Henning
 
Posts: 522
Joined: Fri Aug 13, 2010 6:29 pm

Re: Global vs MainWindow again

Postby berndnoetscher » Wed Aug 15, 2012 2:33 pm

Hi Henning

This is actually not a bug, but as you declare the controls outside of a class which is connected to ui file, there is no automatically signals handling connection possible.

Take a look at the command help "ReconnectSignals", which will help you to skip this problem.
berndnoetscher
Site Admin
 
Posts: 344
Joined: Thu Mar 25, 2010 9:57 am

Re: SOLVED: Global vs MainWindow again

Postby Henning » Wed Aug 15, 2012 3:33 pm

Thanks for that info!

Now that I know, problem accepted and solved. :)

/Henning
Henning
 
Posts: 522
Joined: Fri Aug 13, 2010 6:29 pm


Return to Bug Reports

Who is online

Users browsing this forum: No registered users and 1 guest

cron