Avatar billede shjdsi Nybegynder
18. december 2003 - 15:04 Der er 13 kommentarer og
1 løsning

form opdaring udføres ikke

Hej! jeg haar et mindre problem, jeg har et program der skal overvåge nogle værdier i en database, der bliver kørt en query ca. hvert 5 minut vha. en timer kontrol. Dette virker fint, jeg har lavet et program derr dynamisk opretter kontroller (shapes og labes) på en form aslt efter hvor meget data der er repræsenteret fra mit db udtræk, dette virker også fint.

Men nmår det er kørt en gang vil formen efterfølgende ikke opdatere med nye værdier.

jeg lavede et lille test program for sat verificere at der var endnu en udfordring for mig :-)

dette miniprogram burde efter min logik opdatere formen, men det gør det ikke

Private Sub Command1_Click()
If Shape1.FillColor = vbBlue Then
Shape1.FillColor = vbRed
DoEvents

End If
If Shape1.FillColor = vbRed Then
    Shape1.FillColor = vbBlue
DoEvents

End If
End Sub

Private Sub Form_Load()
Shape1.FillColor = vbRed
End Sub


Det er nogenlunde samme problem jeg har i mit projekt, eneste forskel er at jeg loader min shapes dynamisk

Nogen der har et bud på hvordan sådan noget kunne løses, jeg poster gerne min ,kode men har valgt dette eks. for overblikkets skyld.
Avatar billede jrl0469 Nybegynder
18. december 2003 - 15:14 #1
Vis lige koden
Avatar billede shjdsi Nybegynder
18. december 2003 - 15:29 #2
her er hele funktionen


Public Sub CheckQueue()
Dim mosFunction As New Class1
Dim dbUserName, dbservername, dbPassword As String
Dim NytIndeks As Integer
Dim ix, iTop, iLeft As Integer
Dim FyldFarve As OLE_COLOR
Dim tst() As MyQueue
Dim i As Integer
Dim Queue() As String
Dim queueCnt As Integer

dbUserName = QueryValue(HKEY_LOCAL_MACHINE, "SOFTWARE\PineQueueMonitor", "dbUser")
dbservername = QueryValue(HKEY_LOCAL_MACHINE, "SOFTWARE\PineQueueMonitor", "dbserver")
dbPassword = QueryValue(HKEY_LOCAL_MACHINE, "SOFTWARE\PineQueueMonitor", "dbPassword")
'convert the strings so they work

dbUserName = generalFunctions.CheckStringFromReg(dbUserName)
dbservername = generalFunctions.CheckStringFromReg(dbservername)
dbPassword = generalFunctions.CheckStringFromReg(dbPassword)
   
    With mosFunction
        .databaseServer = dbservername
        .dbUserName = dbUserName
        .dbPassword = dbPassword
    End With

'der hentes fra listbox ind i array
    queueCnt = lstQueueSelected.ListCount
    ReDim Queue(lstQueueSelected.ListCount)
    For i = 0 To UBound(Queue)
        Queue(i) = lstQueueSelected.List(i)
       
    Next i

'udfra array testes der i tabellen
tst() = generalFunctions.testCheckQueue(Queue)
iTop = 120
iLeft = 10
'monitor formen genereres
    With frmMonitor
        For ix = 0 To UBound(tst)
            NytIndeks = frmMonitor.Shpfigur.Count
            NytIndeks = .stdLabel.Count
            Load .Shpfigur(NytIndeks)
            Load .stdLabel(NytIndeks)
            .stdLabel(NytIndeks).Top = iTop + 100
            .stdLabel(NytIndeks).Left = iLeft + 2000
            .stdLabel(NytIndeks).Caption = tst(ix).MyQueue
            .Shpfigur(NytIndeks).Top = iTop
            .Shpfigur(NytIndeks).Left = iLeft
            'hvis state = 4 ska den være rød etc...
            If tst(ix).MyState = 4 Then
                FyldFarve = vbRed
                ElseIf tst(ix).MyState = 0 Or tst(ix).MyState = 1 Then
                    FyldFarve = vbBlack
                ElseIf tst(ix).MyState = 2 Then
                FyldFarve = vbGreen
            End If
   
            .Shpfigur(NytIndeks).FillColor = FyldFarve
            .Shpfigur(NytIndeks).Visible = True
            .stdLabel(NytIndeks).Visible = True
            iTop = iTop + 700
        Next ix
        .Show
    End With
End Sub


Denne funktion kaldes med et interal og formen frmmonitor skal bare opdatere.
Avatar billede shjdsi Nybegynder
18. december 2003 - 15:30 #3
Dim tst() As MyQueue er en hjemme gjort type
Avatar billede jrl0469 Nybegynder
18. december 2003 - 15:46 #4
hvad er FillStyle property sat til?
Avatar billede shjdsi Nybegynder
18. december 2003 - 15:50 #5
den er sat til 0-solid
Avatar billede jrl0469 Nybegynder
18. december 2003 - 15:58 #6
har du fejl opfangning på? Jeg er tilbage i morgen!
Avatar billede shjdsi Nybegynder
18. december 2003 - 16:07 #7
Der er ingen fejl beskeder! den opdatere vare ikke formen.... tror det er en general ting i vb, der er en eller anden property (eller også er det min funktion) der skal sættes.

symtomerne er jo de samme med følgende

Private Sub Command1_Click()
If Shape1.FillColor = vbBlue Then
Shape1.FillColor = vbRed
DoEvents

End If
If Shape1.FillColor = vbRed Then
    Shape1.FillColor = vbBlue
DoEvents

End If
End Sub

Private Sub Form_Load()
Shape1.FillColor = vbRed
End Sub
Avatar billede Slettet bruger
18. december 2003 - 17:54 #8
Jamen du har koden på en Click og den bliver jo kaldt 1 gang, nemlig når der klikkes på knappen. Du kan evt der hvor du skal opdatere kalde Command1_Click() så vil koden blive udført igen.
Avatar billede shjdsi Nybegynder
19. december 2003 - 11:54 #9
jamen hvis jeg trykker flere gange på knappen sker der ikke noget. I min logik skulle den vel skifte fra rød til blå hvergang jeg klikker på knappen :-) Eller er det bare mig der ikke fatter det.
Avatar billede Slettet bruger
19. december 2003 - 17:18 #10
Næ det har du da ret i. Jeg prøver lige at lave et lille projekt senere og paste din kode ind, hvis du kan vente?
Avatar billede Slettet bruger
19. december 2003 - 19:51 #11
Nu gik lyset op for mig...tror jeg :-)

Hvis farven er blå så gør den rød, derefter
Hvis farven er rød så gør den blå
Og der er jo sandt da den bliver sat til rød og så blå igen
Prøv dette :

Private Sub Command1_Click()
If Shape1.FillColor = vbBlue Then
  Shape1.FillColor = vbRed
  DoEvents
Else
  If Shape1.FillColor = vbRed Then
    Shape1.FillColor = vbBlue
    DoEvents
  End If
End If

End If
End Sub
Avatar billede Slettet bruger
19. december 2003 - 20:11 #12
Der er lige et End If formeget:
Private Sub Command1_Click()
If Shape1.FillColor = vbBlue Then
  Shape1.FillColor = vbRed
  DoEvents
Else
  If Shape1.FillColor = vbRed Then
    Shape1.FillColor = vbBlue
    DoEvents
  End If
End If
End Sub
Avatar billede shjdsi Nybegynder
23. december 2003 - 11:18 #13
Tak for hjælpen og glædelig jul!
Dit eksemple virker, men får at få det aktuelle program hvor jeg også dynamisk opretter kontrollerne til ast virke må jeg lave en unload frmmonitor i loopet. hmmm jeg synes jo det burde virke med .refresh eller en repaint.
Avatar billede Slettet bruger
23. december 2003 - 11:36 #14
Tak for point og glædelig jul til dig også :-)

Nu kender jeg ikke lige din kode men synes det lyder mystisk at du skal lave en unload midt i for at få det til at virke. Du er velkommen til at poste mere kode så kan jeg da tage et kig.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester