Dışarıdan istenen font un istenen karekterini richedit e yaz

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
menderes

Dışarıdan istenen font un istenen karekterini richedit e yaz

Mesaj gönderen menderes »

Selam Arkadaşlar !
Benim meramım richEdite 1/2 v.b kesirli şeklinde yazdırma.
Aynı klasörde birkaç tane font tiplerim var bu font type yi butonla seçtirip butonun üzerinde mesela 1/2 olsun(bu 1/2 arka planda oluşturulup) tıklayınca yazılacak. (Yani font karekterleri içerisindeki harf veya rakam)
Dışarıdan seçtireceğim bir fontu buton halinde seçtirip nasıl ekrana yazdıracağım ve klavyeden de devam edebileceğim.Yalnız RichEdit içerisine (problemim richEdit) ve yazılanı seçtirerek font seçimi şeklinde değil...
herkese kolay gelsin.....
En son menderes tarafından 28 Eki 2005 02:16 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

merhaba, birkaç kere okumama rağmen anlayamadım. 1/2 fontun ismi mi, içerisinde geçiyor demişsiniz. richeditte yazılacak olan nedir? fontu buton halinde seçtirmek? kafam karıştı benim :roll:
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
menderes

Mesaj gönderen menderes »

Dışarıdan seçtireceğim bir font name mesela Arial olsun bu karekterin C harfini buton halinde forma yazdım, kullanıcı da bu butona tıkladığında RichEdit içerisine a yazacak. .1/2 de üç adet font karekteri mevcut bunuda arka planda üstte 1 ortada çizgi gibi altta da (ssSuperscript ssSubscript gibi) 2 rakamı.Yine kullanıcı buna tıkladığı zaman 1/2 richedit e yazacak ve isterse bu rakamları değiştirebilecek. İstediğim bu. Burada görüldüğü gibi aslında iki soru var,
İlgine çok teşekkür ederim mucar kardeş... Yardımlarınızı bekliyorum arkadaşlar.....Teşekkür ederim....
menderes

Mesaj gönderen menderes »

Henüz bir cevap gelmedi, bir örnek daha vereyim,Mesela kendimiz bir harf grubu oluşturup istediğimiz gibi RichEdit 'e mouse ile yazı yazdırabiliriz.

Kod: Tümünü seç

var
  Form1: TForm1;
// Global değişkenimizi tanımlayalım
alfabeButon : array[0..31] of TButton; //Harf buttonları
implementation

{$R *.dfm}

procedure TForm1.harfbutonuolustur(Sender : TObject);
var 
i : Integer;
    alfabe : array[0..31] of char;
begin
alfabe := 'ABCÇDEFGĞHIİJKLMNOÖPQRSŞTUÜVWXYZ';
for i:=0 to 31 do
 begin
  alfabeButon[i] := TButton.Create(Form1);
  alfabeButon[i].Parent := Panel1;
  alfabeButon[i].Height := 26;
  alfabeButon[i].Width  := 26;
  alfabeButon[i].Left   := 4 + 26*(i mod 16);
  alfabeButon[i].Top    := 4 + 26*(i div 16);
  alfabeButon[i].Caption := alfabe[i];
   alfabeButon[i].Font.Style := [fsBold];
  alfabeButon[i].OnClick := SpeedButton1Click;
 end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject); // bu procedure yi elle oluşturuyoruz.
var
   Harf:string;
   begin
 Harf:=TButton(Sender).Caption;//Basılan Butonun gösterdiği harfin alınması
//TButton(Sender).Enabled:=False;//Basılan butonun Pasif hale getirilmesi
RichEdit1.AddFormatText(harf);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
harfbutonuolustur(Sender);
end;
Bu örnek te harfleri kendimiz oluşturduk.
Benim istediğim var olan fontları da kullanmayacağım, başka bir yerde kendi hazırladağım bir font type leri var. Bunları projemde bir klasöre koyup oradan kullanacağım.
Form a bir butonlar grubu koyacağım, bu butonların da üzerinde bu font type lerinden seçtiğim karekterler olacak, mesela tıklanan buton 'Arial Font' i seçip buton üzerinde de A harfi olsun yazdıracağı yer ise RichEdit,
RichEdit içerisine A harfi yazılacak. Sonra da klavyeden devam edebilecek bu yazım işine..... Genelde örnekler seçip te yapmak bu işin kolayı. Aslında basit ama takılınca zor oluyor tabi.....
Arkadaşlar yardımlarınızı bekliyorum. Teşekkürler şimdiden.
Kullanıcı avatarı
fatihtolgaata
Üye
Mesajlar: 382
Kayıt: 04 Mar 2004 09:46
Konum: K.çekmece / İstanbul
İletişim:

Mesaj gönderen fatihtolgaata »

Kusura bakma, noktalama işaretlerinden zannedersem, anlayabildiğim kadarı ile cevaplayayım. :roll:
Eğer word'deki equation editor gibi bir formül editörü yapmak istiyorsan, ve bu formül editöründe 1/2 gibi kesirli ifadeler yapmak istiyorsan richedit sana dar gelir :!: Bu iş için belki bileşenler mevcuttur ama ben olsaydım şu şekilde yapardım. Öncelikle bu işi yapacak bir renderleme sistemi kurmalısın. Örnek olarak synEdit bileşeni RichEdit'e benzer ama uzaktan yakından akrabası değildir. Tamamen karakterleri kendisi form üzerine çizdirir. İşte bu bileşen gibi bazı bileşenler, standart bileşenler yerine kendi çizim fonksiyonlarını kullanırlar. Sen de bunun gibi GDI ya da delphi'deki tabirle Canvas ile bu işini yapabilirsin. Ama uğraşmak istemiyorsan bileşen dünyası geniş.

Eğer meseleyi daha iyi açıklayıp, anlatmaya çalışırsan benim gibi buradaki herkes sana yardım etmeye hazırdır, cevap vermeye çalışırız.

vesselam
menderes

Mesaj gönderen menderes »

Neyi anlatamadığımı bende anlatamıyorum herhalde arkadaşlar...
RichEdit 'e hiç te dar gelmez kafanı yorma, yukarıda verdiğim örnekte harfler yerine bu denilen rakamları da koyarım. O zaman font kullanmanın bir anlamı kalmıyor.
Sadece şunu anlasam yeterli. (gerçi az kaldı onada)
Şimdi biz yazılmış bir kelime grubunu RichEdit'te seçip fontunu değiştirebiliyoruz, bunun örnekleri her yer de var. Benim dediğim ben fontumu projemle aynı klasöre dışarıdan getiriyorum. Bu font un bir harfini forma koyacağım butonun üzerine yazacağım ona da 'A' dedim, tıklayınca RichEdit'e bu harf yazacak, klavyeden de devam edecem yazmaya... Mesela dışarıdan gelen font type fences.ttf diyelim bu windows da yok. Projemde kullanacağım ama. (Burada font deyince anlaşılır diye name size style diye yazmıyorum herhalde kastettiğim anlaşılıyor.)
Tekrar teşekkür ederim ilgilenen ilgilenmeyen tüm arkadaşlara.
Ama ben Ah ettim Jedi nin RichEdit'ini kullanıyorum ve oraya da bu 1/2 i yazdıracam. Kullanıcı da bu 1/2 yi isterse 3/4 v.s olarak yazdıracak.
Tekrar Allah Razı olsun bu foruma emeği geçenlerden......
Kullanıcı avatarı
mucar
Kıdemli Üye
Mesajlar: 247
Kayıt: 17 May 2005 01:14

Mesaj gönderen mucar »

Yani şu an için sorun fontlarınızı program içine yüklemek mi :?: Eğer böyleyse fontları windows/fonts klasörüne atmadan programdan kullanabilmeniz için şu şekilde bir yöntem var;

Kod: Tümünü seç

procedure TForm1.FormCreate(Sender: TObject);
begin
 AddFontResource('c:\FONTS\MyFont.TTF');
 SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;

procedure TForm1.FormClose (Sender: TObject; var Action: TCloseAction);
begin
 RemoveFontResource('C:\FONTS\MyFont.TTF');
 SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
end;
Daha sonra da dediğiniz gibi istediğiniz kısımlarda seçim yapıp fontunu değiştirerek sonuca ulaşabilirsiniz.
"Evine bakmaktan aciz olan; ilerici, üç kıtaya hükmeden ecdadın mı gerici?"
menderes

Mesaj gönderen menderes »

Mucar kardeş önce ilgilendiğin için teşekkür ederim ama dikkat edersen sorum font yüklemeyle değil yüklemeyi biliyorum. Sorun bu yüklemeden sonraki kullanımda.....
Mesela Edit.Text te sorun yok onda olabiliyor, sorun RichEdit te;

Kod: Tümünü seç

procedure TForm1.BitBtn2Click(Sender: TObject);
begin
 AddFontResource(pchar(ExtractFilePath(ParamStr(0)+'fences.TTF')));
  SendMessage(HWND_BROADCAST,WM_FONTCHANGE,0,0);
Edit1.Font.Name:='fences';
end;
dediğimiz zaman Edit1.Text e ekleyebiliyor ve klavyeden müdahale ederek yazabiliyoruz.
Cevapla