Delphi - MS Agent

2. rész

forráskód letöltése
Mostani cikkünkben az MS Agent kis animált figuráinak a képességeit kérdezzük le és használjuk fel. Így megtudhatjuk, hogy Merlin például 73 különböző animációt ismer, melyet végre is hajtathatunk vele. A mellékelt példaprogram megnyitása előtt az MSAgent ActiveX komponenst telepítenie kell a Delphi alá. Ennek módjáról részletesen a cikksorozatunk első részében olvashat.

Az adott figura megjelenítésekor egyúttal egy TListBox-ba lekérdezzük, hogy milyen animációk hajthatók végre. Így ezek után a TListBox-ból tetszőlegesen választhatunk egy-egy animációt, amelyet szeretnénk látni.

Nézzük miként tudhatjuk meg a végrehajtható animációk listáját.

Az Agent1.Characters.Item['AgentChar1']-en belül találunk egy AnimationNames property-t. Ez rendelkezik egy Enum interfésszel. Ezt felhasználva egy while ciklussal és a Next metódus segítségével mindig lekérdezzük a soron következő animáció megnevezését, melyet a TListBox-ban tárolunk el.
procedure TForm1.Button1Click(Sender: TObject);
var
  unknown : IUnknown;
  enum : IEnumVariant;
  animation : OleVariant;
  ret: LONGWORD;
begin
    with Agent1.Characters.Item['AgentChar1'] do begin
      ListBox1.Items.Clear;
      unknown:=AnimationNames.Enum;
      if Assigned(unknown) and (unknown.QueryInterface(
               IEnumVariant, enum)=S_OK) then begin
        while enum.Next(1, animation, ret)=S_OK do begin
          ListBox1.Items.Add(animation)
        end;
      end;
  end;

A TListBox-ból választott animáció lejátszása ugyanúgy történik, mint ahogy azt a múlt héten már bemutattuk.

MS Agent cikksorozat