Многие ищут, как в программе выводить смайлы Я и сам интересовался по этому вопросу, и видел у других такие вопросы.. Вот, кому надо, вылаживаю исходный код, где с помощью компонента RichView программа поддерживает смайлы - довольно простой код... RichView довольно хороший компонет, поэтому для тех, кто пишет чат как раз!
Код | unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList, StdCtrls, RVStyle, RVScroll, RichView;
type TForm1 = class(TForm) rv: TRichView; RVStyle1: TRVStyle; Memo1: TMemo; Button1: TButton; ImageList1: TImageList; Label1: TLabel; procedure Button1Click(Sender: TObject); function SmileNo(Smile:String) : Integer; procedure AddWithIcons( s: String; StyleNo: Integer; var ParaNo: Integer); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AddWithIcons( s: String; StyleNo: Integer; var ParaNo: Integer); var s2: String; p: Integer; smile:String; begin s2 := ''; while s<>'' do begin p := Pos(':', s); if p=0 then begin rv.AddNL(s2+s, StyleNo, ParaNo); ParaNo := -1; exit; end; if (Length(s)>p) and (s[p+1] in [')','1','2', '3', '4', '5', '6', '7', '?', '!', '(']) then begin s2 := s2+Copy(s, 1, p-1); if s2<>'' then begin rv.AddNL(s2, StyleNo, ParaNo); s2 := ''; ParaNo := -1; end; rv.AddBulletEx( '', SmileNo(s[p+1]), ImageList1, ParaNo); ParaNo := -1; s := Copy(s, p+2, Length(s)); end else begin s2 := Copy(s, 1, p); s := Copy(s, p+1, Length(s)); end; end; if s2<>'' then begin rv.AddNL(s2, StyleNo, ParaNo); s2 := ''; ParaNo := -1; end; end;
function TForm1.SmileNo(Smile:String) : Integer; begin if Smile = ')' then SmileNo:=0; if Smile = '1' then SmileNo:=1; if Smile = '2' then SmileNo:=2; if Smile = '3' then SmileNo:=3; if Smile = '4' then SmileNo:=4; if Smile = '5' then SmileNo:=5; if Smile = '6' then SmileNo:=6; if Smile = '7' then SmileNo:=7; if Smile = '?' then SmileNo:=8; if Smile = '!' then SmileNo:=9; if Smile = '(' then SmileNo:=10; end;
procedure TForm1.Button1Click(Sender: TObject); var ParaNo:Integer; begin rv.AddNL('', 0, 0); ParaNo:=-1; AddWithIcons(Memo1.Text, 0, ParaNo); rv.FormatTail; Memo1.Clear; end;
|
удачи в проектах ;-) |