Query Editör fields'e Run-Time da alan adlarını eklemek?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kahraman1285
Üye
Mesajlar: 360
Kayıt: 10 Nis 2006 09:07

Query Editör fields'e Run-Time da alan adlarını eklemek?

Mesaj gönderen kahraman1285 »

Merhaba

Bir query yada Table nesnesinin üzerini çift tıkladığımızda o nesnenin Editör Fields kısmı açılır ve sağ tıklayarak Add all fields komutuyla bağlı olduğu table'ın alan adları listeye eklenir.

*Ben bu işlemi Run-Time da kod yazarak nasıl yapabilirim?

[img][img]http://img254.imageshack.us/img254/8860 ... e10ri3.jpg[/img][/img]
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

run-time da bu islemi yapabileceginiz bi kisayolun oldugunu sanmiyorum. cunku bu islem sonucunda kaynak koda yeni yeni siniflar eklenir.

run-time da tbu tip bir islem yapmak icin fieldin tipini belirleyip uygun bir sinif secerek ilgili atamalari yapmaniz gerekir.

formun dfm dosyasinda ve pas dosyasinda bunlari gorebilirsiniz.

dfm dosyasinda

Kod: Tümünü seç

    object Table1Country: TStringField
      FieldName = 'Country'
    end
pas dosyasinda

Kod: Tümünü seç

    Table1Country: TStringField;
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
delphiibo
Üye
Mesajlar: 72
Kayıt: 27 Eki 2005 04:55
Konum: istanbul
İletişim:

Re: Query Editör fields'e Run-Time da alan adlarını eklemek

Mesaj gönderen delphiibo »

Eklenebiliyor. Aşağıdaki kodu kullan.

Kullanımı :

AddAllFields(DatasetComponentAdın);

Bu Kadar. Çok aranan bir kod aslında. bende yabancı bir sitede denk geldim.

Kod: Tümünü seç


procedure AddAllFields(DataSet: TDataset);
var
   FieldsList: TStringList;
   FieldName: WideString;
   Field: TField;
   WasActive: boolean;
   FieldDef: TFieldDef;
   i: Integer;
   FieldNameBas : string;
begin
   WasActive := DataSet.Active;
   FieldNameBas := DataSet.Name;
   if WasActive then
      DataSet.Active := False;
   try
      FieldsList := TStringList.Create;
      try
         DataSet.FieldDefs.Update;

         for i := 0 to DataSet.FieldDefList.Count - 1 do
            with DataSet.FieldDefList[i] do
               if (FieldClass <> nil) and not(faHiddenCol in Attributes) then
               begin
                  FieldName := DataSet.FieldDefList.Strings[i];
                  Field := DataSet.FindField(FieldName);
                  if (Field = nil) or (Field.Owner <> DataSet.Owner) then
                     FieldsList.Add(FieldName);
            end;

         for i := 0 to FieldsList.Count - 1 do
         begin
            FieldName := FieldsList[i];
            FieldDef := DataSet.FieldDefList.FieldByName(FieldName);
            Field := FieldDef.CreateField(DataSet.Owner, nil, FieldName, False);
            try
               Field.name := FieldNameBas + FieldName + IntToStr(random(MaxInt)); // make the name unique
            except
               Field.Free;
               raise ;
            end;
         end;
      finally
         FieldsList.Free;
      end;
   finally
      if WasActive then
         DataSet.Active := true;
   end;
end;

Onun tek dostu Allah
Kullanıcı avatarı
burakb44
Üye
Mesajlar: 131
Kayıt: 11 Mar 2005 03:13

Re: Query Editör fields'e Run-Time da alan adlarını eklemek

Mesaj gönderen burakb44 »

delphiibo yazdı:Eklenebiliyor. Aşağıdaki kodu kullan.

Kullanımı :

AddAllFields(DatasetComponentAdın);

Bu Kadar. Çok aranan bir kod aslında. bende yabancı bir sitede denk geldim.

Kod: Tümünü seç


procedure AddAllFields(DataSet: TDataset);
var
   FieldsList: TStringList;
   FieldName: WideString;
   Field: TField;
   WasActive: boolean;
   FieldDef: TFieldDef;
   i: Integer;
   FieldNameBas : string;
begin
   WasActive := DataSet.Active;
   FieldNameBas := DataSet.Name;
   if WasActive then
      DataSet.Active := False;
   try
      FieldsList := TStringList.Create;
      try
         DataSet.FieldDefs.Update;

         for i := 0 to DataSet.FieldDefList.Count - 1 do
            with DataSet.FieldDefList[i] do
               if (FieldClass <> nil) and not(faHiddenCol in Attributes) then
               begin
                  FieldName := DataSet.FieldDefList.Strings[i];
                  Field := DataSet.FindField(FieldName);
                  if (Field = nil) or (Field.Owner <> DataSet.Owner) then
                     FieldsList.Add(FieldName);
            end;

         for i := 0 to FieldsList.Count - 1 do
         begin
            FieldName := FieldsList[i];
            FieldDef := DataSet.FieldDefList.FieldByName(FieldName);
            Field := FieldDef.CreateField(DataSet.Owner, nil, FieldName, False);
            try
               Field.name := FieldNameBas + FieldName + IntToStr(random(MaxInt)); // make the name unique
            except
               Field.Free;
               raise ;
            end;
         end;
      finally
         FieldsList.Free;
      end;
   finally
      if WasActive then
         DataSet.Active := true;
   end;
end;


hay allah razı olsun senden çok güzel bi kod gerçekten denedim sorunsuz çalışıyor. teşekkürler.
erdemdemirel
Üye
Mesajlar: 8
Kayıt: 24 Tem 2010 06:29

Re: Query Editör fields'e Run-Time da alan adlarını eklemek

Mesaj gönderen erdemdemirel »

Hay Allah razı olsun yaa...
firatdesign
Üye
Mesajlar: 10
Kayıt: 25 Nis 2014 09:08

Re: Query Editör fields'e Run-Time da alan adlarını eklemek

Mesaj gönderen firatdesign »

bu kodu forma ekledim fakat ben alan adlarını nasıl kullanabilirim adotable1Miktar.value şeklindeki gibi nasıl kullanıcam yardım lütfen
Cevapla