Runtime da Display formata müdahale
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Runtime da Display formata müdahale
Çalışma esnasında Display formatı değiştirmek istiyorum fakat Fieldlar belli değil yani önceden Query deki fieldları tanımlayamıyorum.Seçilen kriterlere query oluşuyor ve gridde gösteriliyor.
Kodu yazarken de gelmiyor field(x).displayformat şeklinde
nasıl yapılabilir.
İyi çalışmalar.
Kodu yazarken de gelmiyor field(x).displayformat şeklinde
nasıl yapılabilir.
İyi çalışmalar.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Runtime da Display formata müdahale
s.a.
şöyle bir kodla yapabilirsin.
kodları afaki yazdım. doğruları ile değiştirirsin.
kolay gelsin.
şöyle bir kodla yapabilirsin.
Kod: Tümünü seç
for i:=0 to query.fields.count-1 do
begin
if query.fields[i].fieldtype=ftcurrency then
query.fields[i].displayformat:='#######'
end;
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Re: Runtime da Display formata müdahale
fieldtype da gelmiyorki
fieldno,
fieldkind,
Fieldname geliyor.

fieldno,
fieldkind,
Fieldname geliyor.
Bir kelimenin anlamını öğretsen bile yeter..



Re: Runtime da Display formata müdahale
Ben DBGrid de gösterim için bir procedure geliştirmiştim...hem sağa dayalı hem formatlı yazıyor duruma göre...
Senin istediğin kısmı böyle oluyor...aslangeri'nin örneğine uygulayabilirsin...
Kod: Tümünü seç
if Column.Field.DataType=ftFloat then
begin
S:=FormatFloat('#,##0.00',StrToFloatDef(Column.Field.Text,0));
end;
for i:=0 to query.fields.count-1 do
begin
if query.fields.DataType=ftcurrency then
query.fields.displayformat:='#######'
end;
Re: Runtime da Display formata müdahale
Kod: Tümünü seç
with MainForm.ADOCariRap do begin
Open;
for i:=0 to fields.count-1 do
begin
if fields[i].DataType=ftcurrency then
fields[i].displayformat:='#######'

Kod: Tümünü seç
[Error] Unit11.pas(110): Undeclared identifier: 'displayformat'
Bir kelimenin anlamını öğretsen bile yeter..



Re: Runtime da Display formata müdahale
Kod: Tümünü seç
for i:=0 to DataSet.fields.count-1 do
begin
if DataSet.fields[i].DataType=ftcurrency then
TFloatField(DataSet.Fields[i]).DisplayFormat:='#,##0.00';
end
Re: Runtime da Display formata müdahale
yoktur zaten...Query de önceden tanımlı filedler için böyle bir method var bildiğin gibi...Buda Field in ongetext olayında çalışyor sanırsam...Dolayısıyla OnGetText methodu gibi çalışan bir procedure yapman icab edebilir her field için, bence luzumsuz birşey...Sana nerde lazım olcağını söylersen daha iyi çözümler sunulabilir..Bende ön tanımsız fieldler ile çalışıyorum dolayısıyla bütün DBGrid lerim için bir procedure yaptım ondrawcolumncell olayına yazıyorum mesele çözülüyor...çözüme birde bu taraftan bak...
Re: Runtime da Display formata müdahale
Dbgridlerde kullacağım.
Fakat, Calculated fieldlarda kullanmam gerekecek efff
Fakat, Calculated fieldlarda kullanmam gerekecek efff
Bir kelimenin anlamını öğretsen bile yeter..



Re: Runtime da Display formata müdahale
Sana kendi procedure mu vereyim işine yarayabilir...
GridHucreFormatla(Sender,Rect,Column); yazman ..eğer bu olayda başka kodların varsa sona eklersen daha iyi olur....
İnteger alanları binlik ayraç koyar,float alanlarıda parasl yazar...ayrıca sağa dayalı yazar...yapman gereken DrawColumnCell olayına;Procedure GridHucreFormatla(Sender: TObject;const Rect: TRect;Column: TColumn);
var
l_oldalign:word;
S:string;
Begin
with (Sender as TJvDBUltimGrid) do
begin
S:=Column.Field.Text;
Canvas.FillRect(Rect);
l_oldalign:=settextalign(canvas.handle,ta_left);
canvas.textrect(rect,rect.Left+2, Rect.top+2,S);
if Column.Field.DataType=ftFloat then
begin
S:=FormatFloat('#,##0.00',StrToFloatDef(Column.Field.Text,0));
l_oldalign:=settextalign(canvas.handle,ta_right);
canvas.textrect(rect,rect.right-2, Rect.top+2,S);
end;
if Column.Field.DataType=ftInteger then
begin
S:=FormatFloat('#,##',StrToFloatDef(Column.Field.Text,0));
l_oldalign:=settextalign(canvas.handle,ta_right);
canvas.textrect(rect,rect.right-2, Rect.top+2,S);
end;
settextalign(canvas.handle,l_oldalign);
End;
End;
GridHucreFormatla(Sender,Rect,Column); yazman ..eğer bu olayda başka kodların varsa sona eklersen daha iyi olur....
Re: Runtime da Display formata müdahale
Bu kod işimi çözdü.mahsuni yazdı:Kod: Tümünü seç
for i:=0 to DataSet.fields.count-1 do begin if DataSet.fields[i].DataType=ftcurrency then TFloatField(DataSet.Fields[i]).DisplayFormat:='#,##0.00'; end
Bir kelimenin anlamını öğretsen bile yeter..


