‰字体的控制£(100分)

  • 主题发起人 主题发起人 dioalucard
  • 开始时间 开始时间
D

dioalucard

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟做了个聊天的程序,模式就像QQ那种。请教各位大侠怎么才能像QQ那样--在传递聊天的内容同时也把字体的样式传过去,在接受那边能按发送方字体的样式显示出来?
1。传递的是string撒,怎么把字体样式加进去?
2。在接受时接的也是string撒,假如我要显示内容在memo1中,memo1.font:=???(传来的字体样式)
谢谢!!!
 
自定一个格式阿 比如前10个字节发送字体信息 后面的是正文
 
我是这个意思,就是不晓得传什么?比如
发送时:serversocket1.sendtext('?????');
接收时:memo1.font:=????;
 
const
csfsBold = '|Bold';
csfsItalic = '|Italic';
csfsUnderline = '|Underline';
csfsStrikeout = '|Strikeout';
//将字符转换为字体
procedure StringToFont(sFont: string; Font: TFont; bIncludeColor: Boolean = True);
var
P : Integer;
sStyle: string;
begin
with Font do
try
P := Pos(',', sFont);
name := Copy(sFont, 2, P - 3);
Delete(sFont, 1, P);
P := Pos(',', sFont);
Size := StrToInt(Copy(sFont, 2, P - 2));
Delete(sFont, 1, P);
P := Pos(',', sFont);
sStyle := '|' + Copy(sFont, 3, P - 4);
Delete(sFont, 1, P);
if bIncludeColor then
Color := StringToColor(Copy(sFont, 3, Length(sFont) - 3));
Style := [];
if (Pos(csfsBold, sStyle) > 0) then
Style := Style + [fsBold];
if (Pos(csfsItalic, sStyle) > 0) then
Style := Style + [fsItalic];
if (Pos(csfsUnderline, sStyle) > 0) then
Style := Style + [fsUnderline];
if (Pos(csfsStrikeout, sStyle) > 0) then
Style := Style + [fsStrikeOut];
except
end;
end;

//将字体转换为字符
function FontToString(Font: TFont; bIncludeColor: Boolean = True): string;
var
sStyle: string;
begin
with Font do
begin
sStyle := '';
if (fsBold in Style) then
sStyle := sStyle + csfsBold;
if (fsItalic in Style) then
sStyle := sStyle + csfsItalic;
if (fsUnderline in Style) then
sStyle := sStyle + csfsUnderline;
if (fsStrikeOut in Style) then
sStyle := sStyle + csfsStrikeout;
if ((Length(sStyle) > 0) and ('|' = sStyle[1])) then
sStyle := Copy(sStyle, 2, Length(sStyle) - 1);
Result := Format('"%s", %d, [%s]',[name, Size, sStyle]);
if bIncludeColor then
Result := Result + Format(', [%s]',[ColorToString(Color)]);
end;
end;
 
比如:‘宋体,11,clRed|我这就吃饭去了’
以|为分割符,前为字体控制,后为要显示的字符串
 
对于我那个来说能再说具体点吗?谢谢!
 
发送时:serversocket1.sendtext('?????');
接收时:memo1.font:=????;

问号的地方该是什么内容?谢谢!小弟对这方面不熟!不好意思!
 
1、发送全部字符串 (‘宋体,11,clRed|我这就吃饭去了’)
2、在Memo显示时 //接收方
Memo1.Font.Name:='宋体'; //宋体,11,clRed
Memo1.Font.Size:=11;
Memo1.Font.Color:=clRed; //取出收到的字串字体控制部分

Memo1.Lines.Add(Copy(vStr,pos('|',vStr)+1,Length(vStr))); //我这就吃饭去了
 
我发个简易的给你,帮我改一下,好吗?
 
webz99@163.com
不过我就要下了
 
发了!谢谢你哟!
 
收到的撒?
 
dioalucard ,收吧
 
多人接受答案了。
 
后退
顶部