如何在delphi中创建聊天标注

时间:2015-05-11 02:46:39

标签: delphi firemonkey

我想创建一个聊天气球,就像信使通过FireMonkey TCalloutPanel一样,所以我怎么能通过给它一个文本作为参数然后根据给出的文本调整大小来调整注释^^

提前致谢

1 个答案:

答案 0 :(得分:3)

我很快就写完了。可以使用此作为示例来满足您的特定需求。另外,我强烈建议以这种方式进入自定义样式路径,将TControls添加到TListBoxItem(尽管有效)会使TListbox滚动可怕。

procedure TForm1.LoadMessage(SelfSent:Boolean;msg:String;var LItem:TListBoxItem);
var
  panel:Tcalloutpanel;
  memo:TMemo;
begin
  panel:=TCalloutPanel.Create(LItem);
  panel.Parent:=LItem;
  panel.Align:=TAlignLayout.Client;
  panel.Margins.Left:=5;
  panel.Margins.Right:=5;
  panel.Margins.Top:=5;
  panel.Margins.Bottom:=5;
  if selfSent=true then
    panel.CalloutPosition:=TCalloutPosition.right
  else
    panel.CalloutPosition:=TCalloutPosition.Left;
  panel.CalloutOffset:=10;
  memo:=TMemo.Create(panel);
  memo.Parent:=panel;
  memo.Align:=TAlignLayout.Contents;
  memo.Margins.Left:=15;
  memo.Margins.Right:=15;
  memo.Margins.Top:=5;
  memo.Margins.Bottom:=5;
  memo.HitTest:=false;
  memo.Text:=msg;

  LItem.Height:=memo.ContentBounds.Height+30;
  if LItem.Height<60 then
    LItem.Height:=70;
end;