Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Editor ile hızalama
#1
selam arkadaşlar

 tc adı soyadı sicil ve tutar kısmını hepsini hizada yapmak istiyorum. Bir türlü beceremedim rica etsem yardımcı olurumsunuz. 

AŞAĞIDAKİ GİBİ YAPMAYA ÇALIŞIYORUM AMA BECEREMEDİM 

1478523612345678912DENEME      DENEME SOYAD      1236548      000000000120.00
1486222232145698741DENEME1     DENEME SOYAD     1147852      000000000052.00

Cevapla
#2
Form üzerindeki memo nesnesinde bu dediğinizi yapmak istiyorsanız, font tipini "Courier New" olarak değiştirin ve karakter sayısına göre kelime aralarına ilave edeceğiniz boşluk karakteri sayısını hesaplayarak sonrasında araya boşluk karakteri ekleyerek yapabilirsiniz.
Cevapla
#3
Dediğiniz gibi yaptım ama gine olmadı. sütunlar sıralı şekilde çıkmıyor.

kod kısmının bir bölümü bu şekilde

type myproctype=procedure(maskno:byte) of object;
d_rec1=record
d_sube_kodu:string[4];
d_KURUM_kodu:string[2];
d_islem_ayi:string[2];
d_odeme_turu:string[1];
d_bos:string[10];

d_musteri_hesap_no:string[8];
d_sss_soyadi: string[13];
d_sss_adi:string[12];
d_sicil_no:string[9];
d_miktar:currency;
d_kimlik_no:string[11];
---------------------------------------------------
d_kurum_kodu:= d_kurum_kodu1;

hesap1:=''+hesap;
hesap2:=query1.FieldByName('BANKA_HES2').AsString;
d_musteri_hesap_no:=hesap2;
d_kimlik_no:=(query1.fieldbyname('KIMLIK_NO').ASSTRING);
d_sss_adi:=query1.fieldbyname('ADI').AsString ;
d_sss_soyadi:=query1.fieldbyname('SOYADI').AsString;
numara :=floattostr(query1.fieldbyname('SICIL_NO').Asfloat);
for jj:=1 to (12-length(numara)) do
sifir_str:=sifir_str+'';
d_sicil_no:=sifir_str+numara;
d_miktar:=query1.FieldByName('TUTAR').AsFloat;
d_odeme_turu:=UPPERCASE(Edit2.text);

d_bos:=' ';
yeni_deger := StringReplace(formatfloat('0###########.00',d_miktar) , ',', '.',
[rfReplaceAll, rfIgnoreCase]);


// disket rapor kısmı sıralaması

satir_str1:= d_musteri_hesap_no+
d_kimlik_no+
d_sss_adi+' '+
d_sss_soyadi+ ' '+
d_sicil_no+ ' '+
yeni_deger ;
Cevapla
#4
Paylaştığınız kod parçacığında yukarıdaki mesajda önerdiğim çözüm yöntemini uyguladığınızı göremedim.

Daha basit şekilde yukarıdaki örneği şu şekilde uygulayabilirsiniz. Her sütünunda hizalamaya çalıştığınız içeriklerin max uzunluğu belli ise, ve belirli sütünlardaki kelime uzunlukları eşit ise (ör: kimlik no) kelimelere ayırmak ve bunları dinamik işlemek yerine daha statik bir yaklaşım kurgulanabilir.

Hizalama ihtiyacınıza göre  boşluk sayısını değiştirebilirsiniz.

Aşağıdaki kodlar doğrudan çalışmayacaktır, probleme yaklaşım yöntemi konusunda size fikir vermesi içindir.



var maxuzunluk:integer = 20; //sss_adi en fazla 20 karakter veri içerebilir.
.....

memo1.Font.Name:= 'Courier New';

......
satir_str1:=d_musteri_hesap_no+ '5 adet boşluk' + // hesap no fix uzunlukta 
d_kimlik_no+ '5 adet boşluk' + // kimlik no fix uzunlukta 
d_sss_adi+ 'maxuzunluk-length(d_sss_adi) kadar boşluk' + '5 adet boşluk' + // sss_adi uzunluğu dinamik 
d_sss_soyadi+ ......
d_sicil_no+ ......
yeni_deger ;

memo1.lines.add(satir_str1);

Cevapla
#5
Font tipini Courier New yaptıktan sonra
Satır satır girişi Format()  fonksiyonu kullanmak da isteyebilirsiniz.

FORMAT( '%-20s %.5d', ['abc', 123] )

gibi deneyin isterseniz.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif
Cevapla
#6
@mrmarman  beyin çözüm önerisi çok daha pratik. Shy
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi ile geliştirdiğiniz uygulamalar neler? - İki Ödüllü Mr.Developer 20 12.333 01-01-2024, Saat: 22:46
Son Yorum: aegean
  Delphi 7 ye göre MB Döviz kurları nasıl alırız maydin60 7 802 31-12-2023, Saat: 02:18
Son Yorum: maydin60
  Delphi 7 Indy Komponent SKC3948 12 2.396 22-12-2023, Saat: 20:36
Son Yorum: maydin60
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 12 4.066 08-11-2023, Saat: 00:06
Son Yorum: berkan
  Delphi Sürekli Adı Değişen Excel Dosyasından Veri Çekme bünyamin68 2 497 05-10-2023, Saat: 12:50
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi