Talk.pas

<< Click to Display Table of Contents >>

Navigation:  Demos > X > Eliza >

Talk.pas

unit Talk;

 

interface

 

uses

 Classes, SysUtils, IWAppForm, IWApplication, IWTypes, IWExtCtrls,

 IWCompLabel, IWCompEdit, Controls, IWVCLBaseControl, IWBaseControl,

 IWControl, IWCompButton, Forms, IWVCLBaseContainer, IWContainer, IWRegion,

 IWHTMLControls, EZEngine, IWCompText;

 

type

 TformTalk = class(TIWAppForm)

 IWRegion1: TIWRegion;

 imgfPicture: TIWImageFile;

 editQuestion: TIWEdit;

 butnAsk: TIWButton;

 linkQuit: TIWLink;

 linkChangePersonality: TIWLink;

 textResponse: TIWText;

 procedure butnAskClick(Sender: TObject);

 procedure linkQuitClick(Sender: TObject);

 procedure IWAppFormCreate(Sender: TObject);

 procedure IWAppFormDestroy(Sender: TObject);

 procedure linkChangePersonalityClick(Sender: TObject);

 protected

 FEliza: TEZEngine;

 public

 procedure SetPersonality(const AName: string);

 end;

 

implementation

{$R *.dfm}

 

uses

 ServerController;

 

procedure TformTalk.butnAskClick(Sender: TObject);

var

 LResponse: string;

begin

 LResponse := FEliza.TalkTo(editQuestion.Text);

 if FEliza.Done then begin

 WebApplication.Terminate(LResponse);

 end else begin

 textResponse.Lines.Text := LResponse;

 end;

 editQuestion.Text := '';

end;

 

procedure TformTalk.linkQuitClick(Sender: TObject);

begin

 WebApplication.Terminate('Good bye!');

end;

 

procedure TformTalk.IWAppFormCreate(Sender: TObject);

begin

 FEliza := TEZEngine.Create(nil);

end;

 

procedure TformTalk.IWAppFormDestroy(Sender: TObject);

begin

 FreeAndNil(FEliza);

end;

 

procedure TformTalk.SetPersonality(const AName: string);

begin

 FEliza.SetPersonality(AName);

 imgfPicture.ImageFile.Filename := FEliza.Personality.Attributes.Name + '.jpg';

end;

 

procedure TformTalk.linkChangePersonalityClick(Sender: TObject);

begin

 Release;

end;

 

end.