Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Refresh form?

Postades av 2004-06-07 13:27:39 - Jerker Pihl, i forum visual basic - allmänt, Tråden har 13 Kommentarer och lästs av 554 personer

Jag försöker göra refresh på ett form när den uppdaterar informationen i dom olika labels och gör en massa korrigeringar men den "fryser" sig efter ett tag. Programmet fortsätter köra men det sker inget med formet. Är det någon form av säkerhetsspärr som slår till för att jag uppdaterar den förofta?
Vad kan man göra för att den inte ska frysa?


Svara

Sv: Refresh form?

Postades av 2004-06-07 14:17:02 - Jerker Pihl

löste det men några välplacerade doevents men vad är farligheten med att använda doevents?


Svara

Sv: Refresh form?

Postades av 2004-06-07 14:18:17 - Sven Åke Persson

Lägg in ett DoEvents på ett strategiskt ställe. Läs om DoEvents.


Svara

Sv: Refresh form?

Postades av 2004-06-07 14:22:17 - Sven Åke Persson

Ingen fara som jag ser det.Programmet gör halt och låter varje process köra färdigt.
Om du tex vill uppdatera en Label i en loop så händer ingenting om du inte lägger in ett DoEvents.
Labeln kommer inte att uppdateras förän du går ur loopen.


Svara

Sv: Refresh form?

Postades av 2004-06-07 14:54:42 - Niklas Jansson

Tja, om användaren gör något under DoEventen, som gör så att koden du var i startas hamnar du i ett odefinierat läge.

Typ:
<code>
Public Sub MinSub()
Do While X
'...
DoEvents
Loop
End Sub

Public Sub Command1_Click()
MinSub
End Sub
</code>
Om du då trycker på Command_1 när DoEventen reagerar så kommer du anropa en funktion som redan är igång.


Svara

Sv: Refresh form?

Postades av 2004-06-08 08:15:12 - Jenny Månsson

Kommentera bort alla doevents för tillfället för att testa följande:
Testa att tillfälligt sätta alla kontrollerna som ska uppdateras till visible = false innan någon uppdatering sker.
Då behöver inte programmet använda resurser för att rita om kontrollerna under tiden.
När alla uppdateringar är klara så sätt dem visible = true igen.
(Förutsatt att uppdateringarna inte tar för lång tid för då ser det bara knasigt ut om kontrollerna försvinner och kommer tillbaka)

Försök hitta i koden om det är någon rutin som tar extra lång tid som fryser programmet och se om du kan optimera den rutinen eller utföra rutinen vid ett tidigare tillfälle.


Svara

Sv: Refresh form?

Postades av 2004-06-08 08:47:07 - Andreas Hillqvist

Vad är det du gör i din kod?


Svara

Sv: Refresh form?

Postades av 2004-06-08 15:46:43 - Jerker Pihl

Jag går recursivt igenom en disk och jag vill att den ska skriva ut var den befinner sig. Har skrivit om det i en annan tråd här på forumet. Men nu funkar programmet som jag vill. Använt att när den hoppar upp-ner recursivt så gör den doEvents. Funkar helt ok


Svara

Sv: Refresh form?

Postades av 2004-06-08 17:20:33 - Sven Åke Persson

Rekursiva anrop är spännande,man hamnar lätt i den binära rymden.

Behärskar man och förstår så är det ett kanon verktyg.


Svara

Sv: Refresh form?

Postades av 2004-06-08 19:36:46 - Oskar Johansson

Tips: Titta lite på det här med trådar ;) På så sätt slipper du köra doevents vilket är jobbigt och långsamt. Du kommer att öka hastigheten enormt om du kör loopningen i en egen tråd ;)


Svara

Sv: Refresh form?

Postades av 2004-06-11 11:49:45 - Andreas Hillqvist

Varför recursivt? Det slösar med mer resurser än nödvändigt.
<code>
Public Function IsDir(Path As String) As Boolean
On Error GoTo IsDir_Error
IsDir = GetAttr(Path) And vbDirectory

Exit Function

IsDir_Error:
Select Case Err.Number
Case Else
Debug.Print "IsDir: " & Err.Number & " - "; Err.Description
Resume Next
End Select

End Function

Public Function Scan(Path As String) As Collection
Dim FullName As String
Dim FileName As String
Dim Directory As String
Dim Directories As Collection
On Error GoTo Scan_Error
Set Scan = New Collection

Set Directories = New Collection
If Path Like "*\" Then
Directories.Add Left(Path, Len(Path) - 1)
Else
Directories.Add Path
End If

Do While Directories.Count
Directory = Directories(1)
Directories.Remove 1

FileName = Dir(Directory & "\*.*", vbDirectory Or vbHidden Or vbReadOnly Or vbSystem)
If FileName = "." Then
Dir
FileName = Dir
End If
Do While Len(FileName)
FullName = Directory & "\" & FileName
If IsDir(FullName) Then
If Directories.Count Then
Directories.Add FullName, , 1
Else
Directories.Add FullName
End If
Else
Scan.Add FullName
End If

FileName = Dir
Loop
Loop
Exit Function

Scan_Error:
Select Case Err.Number
Case Else
Debug.Print "Scan: " & Err.Number & " - "; Err.Description
Resume Next
End Select

End Function
</code>

Om du vill göra doevents bör du göra på följande sätt:
<code>
Public Sub TestDoevents()
Dim I As Long
Dim TimeOut As Singel

For I = 1 To 10000000

If Timer > TimeOut Then
Debug.Print Now
DoEvents

TimeOut = Timer + .2
End If
Next


End Sub
</code>
Du kan givetvis ha kortare eller längre intervall mellan uppdateringarna. Men behöver du verkligen uppadtera skärmen mer än fem gånger i sekunden?

Du ersätter givetvis <code>Debug.Print Now</code> med den skärmuppdatering du önskar.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 158
27 952
271 704
1 596
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies