Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Emojiyi Kaydetmek
#1
Edit veya memo nesnesindeki emoji'yi dataya nasıl kaydederim ve tekrar nasıl gösterebilirim?

Örneğin  : Edit1.Text := ' Smile selam nasılsın'; gibi bir yazıyı kayıt etmek ve tekrar göstermek istiyorum.

Delphi 10.2 kullanıyorum database firebird 2.5...

Yardımlarınız için şimdiden teşekkür ederim.

----------------------
Saygı değer hocalarım fikirleriniz için çok tşk ederim yalnız
ben emoji içeren metni firebird databasesine kaydetmek ve grid vb gibi yollarla tekrar göstermek istiyorum. Bu kısmı bir türlü başaramadım. Yardımlarınızı bekliyorum.
Cevapla
#2
Merhaba. 

Emojiyi hangi kodla veya nasıl ekliyorsunuz? Forum örneğinde her emoji için iki karakterlik harf / sembol kombinasyonu kullanılır.

Kayıt altında bu kombinasyon tutulurken, gösterim anında resimcik ile değiştirilir.

Siz aslında emojiyi değil, onu ifade eden karakter ikilisini kaydetmiş olursunuz.

Özel emoji ise bu durumda kayıtlarda bir index oluşturup yine karakter olarak o index kaydedilir, gösterim aşaması gelince ilgili index aıradaki resimcik tespit edilerek yerleştirilir.

Karşı tarafta gerekli emoji resimciği yoksa görüntülenemez veya muadili gösterilir. Örneğin bu forumda gülen adam için kullanılan : ) sembolü başka forumda da kullanılabilir ancak emoji resimciği farklı olabilir. Diğer formdan alınan metin burada muadil resimcik ile gösterilir.

Aşağıdaki örnek, resimcikler ImageList1'de bulunuyor, text içerisinde geçtiği yerde resmi veriliyor. 

smileytest.jpg

procedure TForm1.Edit1Change(Sender: TObject);
Var
 a, b,
 Konum : Integer;
begin
 PaintBox1.Canvas.FillRect( PaintBox1.Canvas.ClipRect );
 Application.ProcessMessages;
 PaintBox1.Canvas.TextOut( 5, 5, Edit1.Text );
 Konum := Pos(':)', Edit1.Text);
 if Konum > 0 then begin
   a := PaintBox1.Canvas.TextWidth( Copy(Edit1.Text, 1, Konum) );
   ImageList1.Draw(PaintBox1.Canvas, a, 5, 0);
 end;
end;
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#3
Unicode : https://unicode.org/emoji/charts/full-emoji-list.html

567ea534e6183e26008b4f0e
Cevapla
#4
Hoş bir deney,

Boş bir VCL projesi oluşturun, üzerine TMemo nesnesi ekleyin, ardından FormCreate olayına şunu yazın;

procedure TForm1.FormCreate(Sender: TObject);
var
 S: WideString;
begin
 S := #$1F600;
 Memo1.Lines.Add(S);
end;
YouTube Delphi Tips
"Yaşlanarak değil, yaşayarak tecrübe kazanılır. Zaman insanları değil, armutları olgunlaştırır" Peyami Safa
WWW
Cevapla
#5
Ben de şöyle bir ekleme yapayım, unicode işinizi görüyorsa, kaydederken encoding kısmını ayarlamayı unutmayın.  Wink

// Kaydet...
  Memo1.Lines.SaveToFile( ExtractFilepath(ParamStr(0)) + 'test.txt', TEncoding.Unicode );

// Geri Çağır...
  Memo1.Lines.Clear;
  Memo1.Lines.LoadFromFile( ExtractFilepath(ParamStr(0)) + 'test.txt', TEncoding.Unicode );
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#6
(10-12-2020, Saat: 22:33)uparlayan Adlı Kullanıcıdan Alıntı: Hoş bir deney,

Boş bir VCL projesi oluşturun, üzerine TMemo nesnesi ekleyin, ardından FormCreate olayına şunu yazın;

procedure TForm1.FormCreate(Sender: TObject);
var
 S: WideString;
begin
 S := #$1F600;
 Memo1.Lines.Add(S);
end;

merhaba;
emoji görüntüsü ve metin değerlerinin bulunduğu en fazla 300 karakterlik bir metin bilgisini veri tabanına kaydedip, gerektiğinde memo veya textedit içinde görüntülemek istiyorum. bu #$1F600 değeri database kaydedip çağırdığım zaman ilgili emoji görüntüsü gelmiyor. yaptığınız örneği uygulayınca geliyor. 

benim uygulamaya çalıştığım şey şu;
kullanıcının genelde kullandığı emoji yada unicode ları bir tabloya kaydetmek ve bir metin oluştururken buradan ilgili emojileri yazıya ekleyerek bir metin oluşturmak. oluşan metni veritabanına kaydetmek ve gerektiğinde aynı görüntüde çağırmak.

bunu için bir örnek paylaşabilirmisiniz.

delphi 10.3 ve firebird 2.5.9 kullanıyorum
Cevapla
#7
merhaba
cxtextedit1.Text:=#$1F600;
yukarıdaki şekilde kodu yazınca gülen yüz karekterini editte görüntüleyebiliyorum.

ancak kodu firebird 2.5.9 yada sqlite database yazıp aşağıdaki şekilde çağırınca gülen yüz görüntüsü yerine kodun kendisi geliyor. gülen yüz görüntüsünü almak için ne yapmalıyım. internetten yaptığım araştırmalara göre bir çok şeyi denedim olmadı. 
cxtextedit1.text := Trim(dm.UniQuery1.FieldByName('EMOJIKODU').AsString);
Cevapla
#8
procedure TfrmAna.Edit1Click(Sender: TObject);
var s:string;
ss: AnsiString;
begin
 s:= Trim(dm.UniQuery1.FieldByName('EMOJIKODU').AsString); //#$1F600;
 ss := AnsiToUtf8(s);
 edit1.Text:=ss;
end;
işe yarar mı acaba? ( https://stackoverflow.com/questions/4307...elphi-2007 )
saygılar mustafa ֍zgün 
Cevapla
#9
(07-07-2021, Saat: 09:19)emozgun Adlı Kullanıcıdan Alıntı:
procedure TfrmAna.Edit1Click(Sender: TObject);
var s:string;
ss: AnsiString;
begin
 s:= Trim(dm.UniQuery1.FieldByName('EMOJIKODU').AsString); //#$1F600;
 ss := AnsiToUtf8(s);
 edit1.Text:=ss;
end;
işe yarar mı acaba? ( https://stackoverflow.com/questions/4307...elphi-2007 )

merhaba;
işe yaramadı gülen yüzü alamadık. 
teşekkürler.
Cevapla
#10
(10-12-2020, Saat: 11:20)mrmarman Adlı Kullanıcıdan Alıntı: Merhaba. 

Emojiyi hangi kodla veya nasıl ekliyorsunuz? Forum örneğinde her emoji için iki karakterlik harf / sembol kombinasyonu kullanılır.

Kayıt altında bu kombinasyon tutulurken, gösterim anında resimcik ile değiştirilir.

Siz aslında emojiyi değil, onu ifade eden karakter ikilisini kaydetmiş olursunuz.

Özel emoji ise bu durumda kayıtlarda bir index oluşturup yine karakter olarak o index kaydedilir, gösterim aşaması gelince ilgili index aıradaki resimcik tespit edilerek yerleştirilir.

Karşı tarafta gerekli emoji resimciği yoksa görüntülenemez veya muadili gösterilir. Örneğin bu forumda gülen adam için kullanılan : ) sembolü başka forumda da kullanılabilir ancak emoji resimciği farklı olabilir. Diğer formdan alınan metin burada muadil resimcik ile gösterilir.

Aşağıdaki örnek, resimcikler ImageList1'de bulunuyor, text içerisinde geçtiği yerde resmi veriliyor. 

smileytest.jpg

procedure TForm1.Edit1Change(Sender: TObject);
Var
 a, b,
 Konum : Integer;
begin
 PaintBox1.Canvas.FillRect( PaintBox1.Canvas.ClipRect );
 Application.ProcessMessages;
 PaintBox1.Canvas.TextOut( 5, 5, Edit1.Text );
 Konum := Pos('Smile', Edit1.Text);
 if Konum > 0 then begin
   a := PaintBox1.Canvas.TextWidth( Copy(Edit1.Text, 1, Konum) );
   ImageList1.Draw(PaintBox1.Canvas, a, 5, 0);
 end;
end;

merhaba hocam;

bir metin içinde kalp, gülenyüz, çiçek kelimelerinin geçtiği yerlere imagelist içindeki ilgili resimlerin Paintbox ta eklenmesini nasıl sağlayabiliriz. bununla ilgili örnek bir kodlama yapabilirmisiniz.
Cevapla




Konuyu Okuyanlar: 1 Ziyaretçi