Combobox

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

Combobox

Mesaj gönderen denizfatihi »

Merhaba Arkadaşlar,

ComboBoxa aynı anda 2 Fields çekme imkanı varmıdır? Kullandığım Kod aşağıda şimdiden tşk...

Kod: Tümünü seç

Combobox1.Items.Clear;
Query3.Close;
Query3.open;
while not  Query3.eof or not Query3.eof do
begin
   ComboBox1.Items.add(query3.Fields[3].AsString) ;
   query3.Next;
eseNuri
Üye
Mesajlar: 23
Kayıt: 03 Nis 2007 12:12

Mesaj gönderen eseNuri »

valla bana da lazım cevap verirseniz sevinirim
palandoken
Üye
Mesajlar: 151
Kayıt: 16 Eki 2006 10:43
Konum: ERZURUM

Mesaj gönderen palandoken »

Kod: Tümünü seç

Combobox1.Items.Clear; 
Query3.Close; 
Query3.open; 
while not  Query3.eof or not Query3.eof do 
begin 
   ComboBox1.Items.add(query3.Fields[3].AsString+' '+query3.Fields[4].AsString) ; 
   query3.Next;
akıllanma , aklını başına toplama , toparlanma , kendisini derleme bu dünyaya ait bir vazife.
ahirette nasıl olsa aklın başına gelecek.
denizfatihi

Mesaj gönderen denizfatihi »

palandoken arkadaşım Allah razı olsun işimi gördü,
yanlız ek bir sorum olacak bu ek fieldı bir edite yazdırmak istesem nasıl olur.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
dblookup comboboxu bi incele istersen istediğin şeyi onda yapabilirsin gibime geliyor.
birde @sadettinpolat ın bir makalesi vardı sanırım. combobox u lookupcombobox gibi kullanmak hakkında. onunda faydası olabilir.
kolay gelsn.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Bu ikinci değer integer türde bir değer mi? Bir fikrim geldi de?
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
denizfatihi

Mesaj gönderen denizfatihi »

sabanakman yazdı:Bu ikinci değer integer türde bir değer mi? Bir fikrim geldi de?
Evet arkadaşım bu alan integer olacak şimdiden tşk...
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

O zaman listeye eklerken şu şekilde ekle.

Kod: Tümünü seç

CoboBox1.Items.AddObject(StrDeger,TObject(intDeger));
Her string değerin kaşılığı olarak sayısal değerlerde hafızada tutulacaktır. TObject türü olsa bile bizim kullanma maksatımız sadece değer tutması olduğu için tür dönüşümleriyle işimizi görürüz. Bir elemanın değerini elde etmek ve yazmak için ise

Kod: Tümünü seç

StrDeger:=ComboBox1.Items[0];
intDeger:=Integer(ComboBox1.Items.Objects[0]);
////////////////////////
ComboBox1.Items[0]:=StrDeger;
ComboBox1.Items.Objects[0]:=TObject(intDeger);
şeklindeki kodlar olacaktır. Hatta daha da ileri gidip bir değerin hangi eleman olduğunu bulalım.

Kod: Tümünü seç

i:=ComboBox1.Items.IndexOf(StrDeger);
j:=ComboBox1.Items.IndexOfObject(TObject(intDeger));
kodları kullanılabilir. Bana lazım olduğunda hep bu şekilde kullanıyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
denizfatihi

Mesaj gönderen denizfatihi »

sabanakman yazdı:O zaman listeye eklerken şu şekilde ekle.

Kod: Tümünü seç

CoboBox1.Items.AddObject(StrDeger,TObject(intDeger));
Her string değerin kaşılığı olarak sayısal değerlerde hafızada tutulacaktır. TObject türü olsa bile bizim kullanma maksatımız sadece değer tutması olduğu için tür dönüşümleriyle işimizi görürüz. Bir elemanın değerini elde etmek ve yazmak için ise

Kod: Tümünü seç

StrDeger:=ComboBox1.Items[0];
intDeger:=Integer(ComboBox1.Items.Objects[0]);
////////////////////////
ComboBox1.Items[0]:=StrDeger;
ComboBox1.Items.Objects[0]:=TObject(intDeger);
şeklindeki kodlar olacaktır. Hatta daha da ileri gidip bir değerin hangi eleman olduğunu bulalım.

Kod: Tümünü seç

i:=ComboBox1.Items.IndexOf(StrDeger);
j:=ComboBox1.Items.IndexOfObject(TObject(intDeger));
kodları kullanılabilir. Bana lazım olduğunda hep bu şekilde kullanıyorum.
Baktım yanlız yine de olmadı rica etsem kodu ayrıntılı bir şekilde yazman mümkün mü? Kolay gelsin
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

sabanakman yazdı:Bu ikinci değer integer türde bir değer mi? Bir fikrim geldi de?
Konu ile alakasız ama... Üstad Buna çok güldüm ya ..Kusura bakma :lol: :D :roll:
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
sabanakman
Kıdemli Üye
Mesajlar: 3081
Kayıt: 17 Nis 2006 08:11
Konum: Ah bi Antalya olaydı keşke (Ankara)

Mesaj gönderen sabanakman »

Demek istediğini anlamadım ama orada her türlü kullanıma örnek var. Uygulamada sıkıntı çektin herhalde. Şimdi TStrings ve türevi nesnelerinin (ComboBox ve ListBox gibi bileşenlerin Items özelliği bu tiptedir) özelliği bir dizi string bilgi tutmasıdır. Bu dizi içerisinde her string değere karşılık gelen birde TObject tipinde değer tutulmaktadır. TObject ile Integer nesneleri hafızada aynı boyutta yer kaplarlar. Bu yüzden iki tip arasında dönüşüm yaparak biz integer değer de tutabiliriz.
Örn:

Kod: Tümünü seç

var ObjTip:TObject; IntTip:Integer;
begin
 .
 .
  ObjTip:=TObject(IntTip);
  IntTip:=Integer(ObjTip)
gibi. Bu örneğe göre listedeki her string değere paralel olarak integer bir değer tutarak tüm işlemleri uygulayabiliriz.

Mesela diyelimki bir tabloda Öğrenciler ve numaraları olsun. Öğrenci isimlerini listede gösterelim numaralarını ise arka plandan takip edelim ve kullanalım. Başlangıç olarak listeyi tablodan dolduralım.

Kod: Tümünü seç

tblOgr.First; cbListe.Items.Clear;//<-Combobox
while nor tblOgr.Eof do begin
  cbListe.Items.AddObject(tblOgrAdSoyad.AsString, TObject(tblOgrNo.AsInteger));
  tblOgr.Next;
end;
bu kodla listede sadece öğrenci isimleri görünecektir. Numaraları ise Objects listesinde tutmaktayız. Ekranda tıklanan bir öğrencinin numarasını ekranda gösterelim:

Kod: Tümünü seç

if cbListe.ItemIndex<0 then lblNo.Caption:=''
else lblNo.Caption:=IntToStr(Integer(cbListe.Items.Objects[cbListe.ItemIndex]));
Bir öğrencinin numarasını değiştirelim

Kod: Tümünü seç

cbListe.Items.Objects[cbListe.ItemIndex]:=TObjects(SpinEdit1.Value);
Bir öğrenciyi isminden arayıp numarasını bulalım

Kod: Tümünü seç

i:=cbListe.Items.IndexOf(Edit1.Text);
if i<0 then lblNo.Caption:=''
else lblNo:=IntToStr(Integer(cbListe.Items.Objects[i]))
Bir numaradan öğrencinin adını bulalım

Kod: Tümünü seç

i:=cbListe.Items.IndexOfObjects(TObject(SpinEdit1.Text));
if i<0 then lblAd:=''
else lblAd:=cbListe.Items[i];
Görüldüğü üzere her string değere paralel bir integer değer takip işlemi yapılabilmektedir. Soruyu ilk okuduğum anda aklıma kendim için oluşturduğum bu çözümü sunmak geldi. Alakasız gibi görünen ama olayın kilit noktası olan TObject ve Integer tip dönüşümünde uyumlu olduğundan böyle bir soru sordum. Bu tekniği kullanarak fazladan değişken ve fonksiyon gibi kod yazma külfetinden kurtulmuş ve hazır VCL kodlarını kullanmış oluyorum.
Şaban Şahin AKMAN
_________________
Derin olan kuyu değil kısa olan iptir. - .
denizfatihi

Mesaj gönderen denizfatihi »

sabanakman arkadaşım çok sağolasın hallettim olaya biraz ters bakmışız ilk başta daha sonra sakin bir kafayla bakınca hallettim
Cevapla