formatlı yazı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

formatlı yazı

Mesaj gönderen Fatih! »

Kod: Tümünü seç

with Sender as TDBEdit do
if (SelStart = 0) or
(Text[SelStart] = ' ') then
begin
 Case Key of
    'ı': Key := 'I';
    'i': Key := 'İ';
    else Key := AnsiUpperCase(Key)[1];
    end;
end; 
yukrıdaki kodla editin ilk karakterini büyük harfe çeviriyorum ama benim istediğim bir harften önce nokta veya boşluk tuşu varsa o harfin büyük yazılması. onkeypress olayına nasıl bir kod yazacağımı çözemedim. dün en az 1000 mesajı kontrol ettim ama bulamadım.

örnek:

Kod: Tümünü seç

m.ali sultan mehmet 
değil

Kod: Tümünü seç

M.Ali veya Sultan Mehmet
Misafir

Mesaj gönderen Misafir »

merhaba.
kodu keydown yordamına yazmaya ne dersin?son basılan karakterin değerini length ile öğrenip (length(text)-1)'inci karaktere bakarsın nokta vs.kontrolünü yaparsın ve son harfi büyük harfe çevirirsin.
kolay gelsin.
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

bu dediklerinin hepsini düşündüm ama ne yaptıysam bir yerde hata verdi yani malzeme var ama helva yapamadım :oops:
Kullanıcı avatarı
rsimsek
Admin
Mesajlar: 4482
Kayıt: 10 Haz 2003 01:48
Konum: İstanbul

Mesaj gönderen rsimsek »

Aşağıdaki kod işini görecektir.

Kod: Tümünü seç

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
function TR_Upper(ch: char): char;
begin
    Case ch of
      'ı': result := 'I';
      'i': result := 'İ';
      else result := AnsiUpperCase(ch)[1];
   end;
end;

var
  i, ss: integer;
  st: string;
begin
  ss := Edit1.SelStart;
  st := Edit1.Text;
  for i := 1 to length(st) do
    if (i = 1) or ((i > 1) and (st[i - 1] = ' ') or (st[i - 1] = '.')) then
      st[i] := TR_Upper( st[i] );
  Edit1.Text := st;
  Edit1.SelStart := ss;
end;
Bilgiyi paylaşarak artıralım! Hayatı kolaylaştıralım!!
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

teşekkürler
Kullanıcı avatarı
Fatih!
Kıdemli Üye
Mesajlar: 1172
Kayıt: 26 Kas 2004 10:46
Konum: Malatya
İletişim:

Mesaj gönderen Fatih! »

Yukarıda üstadımın verdiği kodlarda bir hata var.sonradan farkettiğim için tekrar sormaya yüzüm tutmadı. epey uğraş.tıktan sonra helvamı yapmayı başardım. başkasının işine yarar diye buraya ekliyorum

Saygı,Sevgi,Muhabbetle.......

Kod: Tümünü seç

procedure TForm3.Edit1KeyPress(Sender: TObject; var Key: Char);
var
strng:string;
begin
strng:=Edit1.text;

if (Edit1.SelStart = 0) or
(Edit1.SelTEXT = ' ') then

     Case Key of
               'ı': Key := 'I';
               'i': Key := 'İ';
               else Key := AnsiUpperCase(Key)[1];
               end
               else
 if (strng[Length(Edit1.Text)]=' ') or (strng[Length(Edit1.Text)]='.') then
      Case Key of
               'ı': Key := 'I';
               'i': Key := 'İ';
               else Key := AnsiUpperCase(Key)[1];
               end
               else
 if NOT  (strng[Length(Edit1.Text)]=' ') or NOT (strng[Length(Edit1.Text)]='.')  then
      Case Key of
               'I': Key := 'ı';
               'İ': Key := 'i';
               else Key := AnsilowerCase(Key)[1];
               end;
end;   
Cevapla