>>172
今考えている 複数のキャラクタが表示出来るコンポは
 property lines:TStrings;
 を持たせて、内部は Flines:=TStringList.Create;
 で、Lines.Objects[] に

 IMyDrawItem = interface (IUnknown)
  function SetText(s:string):boolean; //表示文字列を渡す(エラーならfalse)
  procedure Paint(Canvas:TCanvas);   //描画させる
  function DragID(x,y):Integer;//0以上なら制御点
  function Drag(x,y,ID):bool; // x,y の位置にIDの制御点を動かす。動かしたら true
  function GetText:string;   //DragがTrueなら読返す
  procedure GetBox(var rect:TRect);//全部が描画出来る箱のサイズ
 end;

と1対1で持たせるという方式です。

これなら簡単でしょ?