--- Michael Köhler <[EMAIL PROTECTED]> wrote:

> Also in der Sprachreferenz steht folgendes dazu:
> 
> Gibt die Kontrolle an REALbasic zurück, damit es
> ausstehende Events verarbeiten kann. [...]
> 
> Das steht zwar bei den Consolenanwendungen aber es
> steht da nicht, 
> dass es nicht auch für Desktop-Anwendungen benutzt
> werden kann. Ganz  
> im Gegenteil, an andere Stelle (App Klasse) steht
> nämlich folgendes Beispiel: 

Ich beziehe mich hier auf die Online-Hilfe von Rb
2007r2, wo das genannte Beispiel nicht mehr drin ist
und auch explizit steht: 

"However, using DoEvents in a GUI application will
likely cause instability. In effect, you would be
placing a main event loop inside the 'real' main event
loop. You should consider using threads to handle
lengthy operations rather than placing them in the
main thread and calling DoEvents to maintain the
interface."

Ich hab mich ehrlich gesagt nie näher damit
auseinandergesetzt, da ich noch nie eine Situation
hatte, in der das nötig geworden wäre. 

Wie Aaron Ballman unter dem bereits erwähnten Link
erläutert, _kann_ App.DoEvents in den allermeisten
Fällen funktionieren und dann aus irgendeinem Grund,
den du eventuell nicht beeinflussen kannst, eben
nicht. 

Sich also darauf zu verlassen, dass es funktioniert
würde ich als Programmieren mit Nebeneffekten
bezeichnen, womit du eine potentielle Fehlerquelle in
dein Programm einfügst, die du genausogut hättest
vermeiden können. Ob du den Punkt berücksichtigen
willst, hängt auch davon ab, ob es sich um eine
Anwendung für den persönlichen Gebrauch handelt, oder
ob du das Programm veröffentlichen möchtest. 

Was heisst das nun für die ursprüngliche
Fragestellung? 
Ich persönlich würde die Grafik in ein Picture der
richtigen Grösse zeichnen und dann im Paint Event
schliesslich das Picture im Canvas anzeigen. Damit
überlässt du effektiv RB die Kontrolle, wann das Bild
gezeichnet wird, kannst aber deine Methode jeweils
dann aufrufen, wenn das Bild neu gezeichnet werden
muss.

Sub Paint(g As Graphics) 
    if myPicture <> nil then
        g.drawPicture myPicture, 0, 0
    end if
End Sub

Grüsse, 
Jef

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

Antwort per Email an