Zum Thema Dokumenten-Daten und Stream: Die kann man auch trennen. Die Meta-Daten sind idR sehr schnell verfügbar und der Stream dauert manchmal etwas länger. Also trennt man das und stellt ein Sammelobjekt zusammen.
Dieses Sammelobjekt weiß dann genau Bescheid, ob die Daten verfügbar oder angefragt sind.
Delphi-Quellcode:
TDocumentViewModel = class
public
property IsLoading : Boolean;
property HasData : Boolean;
property Data : TStream;
end;
Beim ersten Zugriff auf die Eigenschaft
Data
sorgt das ViewModel dafür, dass die Daten (im Thread) geladen werden und setzt die Eigenschaft
IsLoading
auf
true
. Auf der Anzeige kann man das durch diesen AniIndicator darstellen (der drehende Kreis).
Hat der Thread die Daten geholt, dann wird der Eigenschaft
Data
der Stream gegeben und
IsLoading
wird wieder auf
False
gesetzt.
Hat der Thread keine Daten heranschaffen können, setzt man einfach
HasData
auf
False
.