23 Haziran 2014 Pazartesi

XE5 Chat Ekranı | Whatsapp gibi

XE5 Chat Ekranı | Whatsapp gibi

Merhabalar, Bu yazımda whatsapp, facebook vb. uygulamalardaki chat ekranı yapısını anlatacağım. Sizde Rad Studio'nun XE5 ile bize sağladığı platform seçekleri ile birçok uygulama geliştirmişsinizdir ve bazılarımız da TCP Client Server yapısı veya vb.  yapılar ile kendilerine veya şirketlerine özel sohbet sistemi  yazmaya karar vermiştir. Fakat Rad Studionun bize chat için özel bir component sağladığı söylenemez bunu üzerine herkes kendi başının çaresine bakmaya çalışmaktadır. Yabancı kaynaktan bulduğum bu yapıyı tek bir procedure altında belirli parametreleri verip istediğimiz şekilde yönetmek için ve daha basite indirgeyip sizlerle paylaşmak için kolları sıvamış bulunmaktayım bakarsınız ileriki günlerde bunu componente dökebilirim :) Herşey zaman meselesi.. Neyse biz konumuza dönelim:



//ÖRNEK KULLANIM

NewMessage('R',// R= Sağdan  L= Soldan
           'Bu mesaj sağ tarafta çıkan bir mesajdır. www.brsatalay.com', // Mesajımız
           ChatScreen,//TVertScrollBox'un namesi
           Image1,// Gözükmesini istediğiniz resim, profil resmi olabilir.
           Self);/ Formumuzun adı

 

procedure NewMessage(IO, Messages: String; Parent: TVertScrollBox; Image: TImage;Form:TForm);
var
CR: TCalloutRectangle;
L: TText;
TmpImg: TImage;
begin
CR := TCalloutRectangle.Create(Form);
CR.Parent := Parent;
CR.Align := TAlignLayout.alTop;

if IO = 'R' then CR.CalloutPosition := TCalloutPosition.cpRight
else
if IO = 'L' then CR.CalloutPosition := TCalloutPosition.cpLeft;

CR.Margins.Top := 10;
CR.Margins.Bottom := 10;
CR.Margins.Left := 5;
CR.Height := 55;

L := TText.Create(Form);
L.Parent := CR;
L.Align := TAlignLayout.alClient;
L.Text := Messages;
L.Margins.Right := 15;
if IO = 'R' then
L.Margins.Left := 5
else if IO = 'L' then
L.Margins.Left := 15;
L.Width := CR.Width-20;

L.WordWrap := True;
L.AutoSize := True;

TmpImg := TImage.Create(Form);
TmpImg.Parent := CR;

if IO = 'R' then TmpImg.Align := TAlignLayout.alLeft
else
if IO = 'L' then TmpImg.Align := TAlignLayout.alRight;

TmpImg.Bitmap.Assign(Image.Bitmap);
TmpImg.Width := 65;
end;

 Kaynak