====== TAnimate — Bildstreifen abspielen ====== Zeigt einen **Bildstreifen** als Folge: mehrere gleich breite Einzelbilder nebeneinander in einer [[lyx_-_programmiersprache:vega:controls:tbitmap|TBitmap]], die der Reihe nach durchlaufen werden. Der übliche Weg für Warteanzeigen und kleine Bewegungen. Unit: ''vega.extctrls'' · Basis: [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] → [[lyx_-_programmiersprache:vega:controls|Alle Steuerelemente]] · [[lyx_-_programmiersprache:vega:klassenbaum|Klassenbaum]] · [[lyx_-_programmiersprache:vega:guides:komponenten|Guide: Komponenten]] ---- ===== Vererbung ===== **Kette:** [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] → [[lyx_-_programmiersprache:vega:controls:tcontrol|TControl]] → **TAnimate** **Direkte Nachfahren:** keine — diese Klasse wird nicht weiter abgeleitet. **Quelle:** ''vega/extctrls.lyx'' ---- ===== Verwendung ===== var a: TAnimate := new TAnimate(); a.SetBounds(8, 8, 32, 32); a.Frames := streifen; // gehoert dem Control NICHT a.SetFrameCount(12); a.SetInterval(80); // Millisekunden je Bild a.SetParent(f); a.Start(); ---- ===== Besonderheiten ===== * **Der Streifen gehört dem Control nicht** — dasselbe Bild kann an mehreren Stellen laufen. * **Die Einzelbilder liegen nebeneinander**, alle gleich breit: die Breite ergibt sich aus Streifenbreite geteilt durch ''FrameCount''. * **''Interval'' ist die Zeit je Bild**, nicht die Gesamtdauer. ---- ===== Eigenschaften ===== Alle Eigenschaften, auch die geerbten. ^ Name ^ Typ ^ Bedeutung ^ Herkunft ^ | ''ComponentState'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Zustand als Bitmaske (''csLoading'', ''csDestroying'' …) | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentStyle'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Stil als Bitmaske; Vorgabe ''csInheritable'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Name'' | [[lyx_-_programmiersprache:sprache:datentypen#8_zeiger|pchar]] | Name der Komponente — für ''FindComponent'' und beim Laden aus LFM | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''OwnedComponents'' | [[lyx_-_programmiersprache:vega:controls:tobjectlist|TObjectList]] | Die Komponenten, die DIESER gehoeren. Delphis Components[]. Zeigerliste, keine Kopien: TObjectList hält int64-Adressen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Owner'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | Wer diese Komponente wegraeumt. Nicht der Elternteil im Zeichenbaum — das ist bei TControl `Parent` | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Tag'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Freier Wert für eigene Zwecke; die Bibliothek fasst ihn nicht an | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Active'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Laeuft die Folge? | eigen | | ''Center'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Bild in der Flaeche mittig — Delphis Center. Aus heißt links oben | eigen | | ''FrameCount'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Wieviele Einzelbilder nebeneinander liegen | eigen | | ''FrameIndex'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Welches gerade gezeigt wird | eigen | | ''Frames'' | [[lyx_-_programmiersprache:vega:controls:tbitmap|TBitmap]] | Der Streifen. Gehoert dem Control NICHT — dasselbe Bild kann an mehreren Stellen laufen | eigen | | ''Interval'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Millisekunden je Bild | eigen | | ''Loop'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Am Ende wieder von vorn? | eigen | | ''Repetitions'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | 0 heißt endlos. Delphis Repetitions | eigen | | ''ResetOnStop'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Beim Anhalten auf das erste Bild zurück | eigen | | ''StartFrame'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Delphis Ausschnitt: von welchem bis zu welchem Bild gelaufen wird, und wie oft. StartFrame/StopFrame zaehlen ab 0 (Delphi ab 1) — Vega zählt Bilder überall ab 0, und zwei Zaehlweisen in … | eigen | | ''StopFrame'' | [[lyx_-_programmiersprache:sprache:datentypen#1_ganzzahl-typen_signiert|int64]] | Bild, bei dem das Abspielen endet | eigen | | ''Transparent'' | [[lyx_-_programmiersprache:sprache:datentypen#5_wahrheitswerte_bool|bool]] | Ohne Bildfolge nichts zeichnen (statt eines leeren Rahmens) | eigen | ---- ===== Methoden ===== Alle Methoden, auch die geerbten. ^ Signatur ^ Zweck ^ Herkunft ^ | ''ClearState(bits: int64): void'' | Zustandsbits löschen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentCount(): int64'' | Anzahl der eigenen Komponenten | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''ComponentIndex(): int64'' | Delphis ComponentIndex: der eigene Platz in der Liste des Besitzers | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Components(index: int64): TComponent'' | Eigene Komponente an dieser Stelle | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Destroy(): void'' | Raeumt die eigene Liste ab, aber NICHT die Einträge — welche Komponenten ihre Besitztuemer mitnehmen, entscheidet die Ableitung über DestroyComponents() | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''DestroyComponents(): void'' | Baut die Besitztuemer ab. Von hinten, weil jedes Destroy() sich selbst aus der Liste austraegt | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''FindComponent(name: pchar): TComponent'' | Sucht unter den EIGENEN Komponenten, eine Ebene tief — wie in Delphi | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetName(): pchar'' | Namen lesen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetNamePath(): pchar'' | Der eigene Name. Delphi hängt bei Unterkomponenten den des Besitzers davor; Vega hat keine, also ist es der Name selbst | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''GetTag(): int64'' | ''Tag'' lesen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''HasState(bits: int64): bool'' | Sind diese Zustandsbits gesetzt | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''InitComponent(): void'' | Kein Konstruktor: lyxc vererbt Konstruktoren nicht, jede Ableitung ruft InitComponent() im eigenen Create() | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''InsertComponent(c: TComponent): void'' | Komponente in Besitz nehmen; ein bisheriger Besitzer gibt sie ab | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''RemoveComponent(c: TComponent): void'' | Komponente aus dem Besitz nehmen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetName(v: pchar): void'' | Setzt ''Name'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetState(bits: int64): void'' | Zustand setzen | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''SetTag(v: int64): void'' | Setzt ''Tag'' | [[lyx_-_programmiersprache:vega:controls:tcomponent|TComponent]] | | ''Create(): void'' | Anlegen; ''new TAnimate()'' | eigen | | ''EffectiveStartFrame(): int64'' | Erstes tatsächlich gezeigtes Bild | eigen | | ''EffectiveStopFrame(): int64'' | Letztes Bild des Ausschnitts. StopFrame 0 bei mehr als einem Bild heißt "bis zum Ende" — sonst liefe eine frisch gesetzte Folge nur über ihr erstes Bild | eigen | | ''FrameHeight(): int64'' | Höhe eines Einzelbildes | eigen | | ''FrameWidth(): int64'' | Breite eines Einzelbildes | eigen | | ''NextFrame(): void'' | Ein Bild weiter. Getrennt von Tick, damit eine Anwendung auch von Hand blaettern kann — und damit der Test nicht auf die Uhr angewiesen ist | eigen | | ''Reset(): void'' | Zurueck auf den Anfang des Ausschnitts und anhalten — Delphis Reset | eigen | | ''Seek(frame: int64): void'' | Auf ein bestimmtes Bild springen, ohne zu laufen — Delphis Seek | eigen | | ''SetCenter(v: bool): void'' | Setzt ''Center'' | eigen | | ''SetFrameIndex(i: int64): void'' | Setzt ''FrameIndex'' | eigen | | ''SetFrames(bmp: TBitmap, count: int64): void'' | Die Folge setzen. `count` ist die Zahl der Bilder im Streifen; die Größe eines Bildes ergibt sich daraus | eigen | | ''SizeToFrame(): void'' | Größe an ein Einzelbild anpassen — der übliche Wunsch nach SetFrames | eigen | | ''Start(now: int64): void'' | Zeitgeber einschalten | eigen | | ''Stop(): void'' | Zeitgeber ausschalten | eigen | ---- ===== Ereignisse ===== ^ Name ^ Typ ^ Wann ^ Herkunft ^ | ''OnComplete'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Meldet sich, wenn die Folge durchgelaufen ist und NICHT wiederholt | eigen | | ''OnFrameChange'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Ein anderes Einzelbild wird gezeigt | eigen | | ''OnStart'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Delphis OnStart/OnStop: beim Anlaufen und beim Anhalten. OnStop kommt auch, wenn die Folge von selbst zu Ende ist — dann zusammen mit OnComplete | eigen | | ''OnStop'' | [[lyx_-_programmiersprache:vega:guides:events#die_handler-typen|TNotifyEvent]] | Das Abspielen ist zu Ende | eigen | ---- Letzte Aktualisierung: 2026-09-05 — Seite neu angelegt; erhoben aus ''vega/extctrls.lyx'' im Repo ''lyx-vcl''.