VB Programm wird durchsichtig

Uli

Grünschnabel
Hi!

Ich habe ein kleines Problem mit meinem VB Programm.

Wenn ich über mein Programm Emails von Outlook abrufe werd die Form und alle darauf befindlichen Elemente durchsichtig.
Wenn alle Emails geladen sind und das Programm auf eine weitere Aktion von mir wartet, dann baut sich die Form mit allen Elementen neu auf.

Woran liegt das und kann man da was machen?

Die Funktionen sind nicht beeinträchtigt, aber das sieht irgendwie blöd aus.


Cu Uli
 
was meinst du mit "durchsichtig"? richtig transparent oder wird nach einem modalen dialog die flaeche des dialogfensters auf dem formular nicht neu gezeichnet?
poste mal etwas code...

falls das innerhalb einer schleife vorkommt, solltest du einfach nach jedem schleifendurchlauf (also als letzte anweisung der schleife) mit der methode DoEvents dafuer sorgen, dass das programm trotz der schleife noch weiterlaeuft. normalerweise arbeitet das programm die schleife ab, und nimmt erst nach der schleife wieder messages an oder wird neu gezeichnet.
 
Zuletzt bearbeitet:
Hi wicked,

Deine Lösung mit DoEvents am Ende der Schleife hat den erwünschten Erfolg gebracht. Thanx!

Folgende For Schleife war verantwortlich:
---------------------
For zaehler = 1 To ObjIt.Count
MSFlexGrid1.ColWidth(0) = 3100
MSFlexGrid1.ColWidth(1) = 5500
MSFlexGrid1.ColWidth(2) = 1000
eingang = Hour(ObjIt(zaehler).ReceivedTime) * 3600 + Minute(ObjIt(zaehler).ReceivedTime) * 60 + Second(ObjIt(zaehler).ReceivedTime)
uebermittelt = Hour(ObjIt(zaehler).SentOn) * 3600 + Minute(ObjIt(zaehler).SentOn) * 60 + Second(ObjIt(zaehler).SentOn)
DauerEmail = eingang - uebermittelt
ss = DauerEmail Mod 60
mm = Int(DauerEmail / 60)
hh = 0
If (mm > 59) Then
hh = Int(mm / 60)
mm = mm Mod 60
End If

If (hh * 60 + mm < Int(Text2.Text) And CheckGreen = 1) Then
Call writeData
MSFlexGrid1.CellForeColor = &HFF00& 'grün
ElseIf (hh * 60 + mm < Int(Text1.Text) And CheckYellow = 1) Then
Call writeData
MSFlexGrid1.CellForeColor = &HFFFF& 'gelb
ElseIf (hh * 60 + mm >= Int(Text1.Text) And CheckRed = 1) Then
Call writeData
MSFlexGrid1.CellForeColor = &HFF& 'rot
End If

status = Int(zaehler * 100 / ObjIt.Count)
Label2.Caption = status
DoEvents
Next zaehler
----------------

Ist nicht gerade der beste Code, aber ich fang ja auch erst an.

Zur Erklärung:

In der For Schleife werden von den Emails der SenderName, das Subject , der Absendezeitpunkt und die Ankunftszeit abgefragt.
Die Zeiten werden subtrahiert, um die Durchlaufzeit zu ermitteln und das Ganze wird dann in eine Tabelle geschrieben und entsprechend eingefärbt.

Ohne DoEvents wird beim Einlesen der Infos alles blockiert.

Cu Uli
 

Neue Beiträge

Zurück