Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Lookupcombobox - Tablosuz Liste
#1
Bazen Delphi ile uğraşmak okyanusları aşıp derede boğulmak gibi bir şey oluyor. Belki de aradığım şeyin örnekleri var ama ben ulaşamıyorum.
Tablomda üye durumunu tutan bir alan var. Kayıtlı değerler -1,0,1,2
-1 : Genel
0: Firma
1: Muhasebe
2: Depo

Ya da
0: Pasif
1: Aktif

Benim bu değerleri lookupcombobox içinde gösterebilmek için illa ki bir tablo mu oluşturmam gerekiyor? ListSource bölümüne tablo dışında alternatif olarak ne ekleyeceğimi bulamadım.

ClientDataSet denmiş bazı kaynaklarda. Onunla ilgili de pek bir şey bulamadım.
Cevapla
#2
https://stackoverflow.com/questions/1600...n-delphi-7
İmam Süleyman Yakub <--> Molla Mustafa Mansur
Evlatlarım!
Cismanımız TÜRK ruhumuz ise İSLAM.
Bu yolda daim olalım her an.
Cevapla
#3
Eğer ek bileşen kullanmak istemiyorsanız en kolay yöntem virtualTable/memTable kullanmaktır.
Cevapla
#4
DBLookupCombobox farklı . Items diye bir bölüm yok.
Cevapla
#5
DbLookupCombobox için kullanmanız gereken properties leri yazayım

Verileri listelemek için ;
ListField = listede görünecek olan Field
ListSource = Verinin alınacağı dataSource
KeyField = kayıt edilecek anahtar Field

Kayıt için gerekenler ;
DataField = kayıt edilecek Field
DataSource = kayıt edilecek dataSource

eğer arama filtreleme veya başka işlemlerde de kullanmak isterseniz kayıt için gerekenler kısmını girmeden de kullanabilirsiniz.
Cevapla
#6
Tablodan veri almada problemim yok.
ListSource = Verinin alınacağı dataSource yazmışsınız ya. ListSource olarak pratik bir yol arıyorum. İki sütunlu, 3-4 satırlı bir şey yeterli olacak. Bu tip girişler için ayrı ayrı tablo yapmak mantıklı gelmiyor bana. Items diye bir şey olacak. Orada Label ve Value olacak sadece. 3-4 tane veri girişi yapılacak.
Örneğin Evet/Hayır (1,0) şeklinde bir kayıt tutmam gerektiğinde bunun için de ayrı bir tablo yapmam gerekecek bu mantıkla.
Cevapla
#7
(14-06-2022, Saat: 14:21)nehirnnn Adlı Kullanıcıdan Alıntı: Tablodan veri almada problemim yok.
ListSource = Verinin alınacağı dataSource  yazmışsınız ya. ListSource olarak pratik bir yol arıyorum. İki sütunlu, 3-4 satırlı bir şey yeterli olacak. Bu tip girişler için ayrı ayrı tablo yapmak mantıklı gelmiyor bana. Items diye bir şey olacak. Orada Label ve Value olacak sadece. 3-4 tane veri girişi yapılacak.
Örneğin Evet/Hayır (1,0) şeklinde bir kayıt tutmam gerektiğinde bunun için de ayrı bir tablo yapmam gerekecek bu mantıkla.


Devexpress component seti var ise ImageComboBox var Hem Değer, hem de gelmesini istediğiniz tanımı yazabiliyorsunuz.
Cevapla
#8
(14-06-2022, Saat: 12:18)ahmet_sinav Adlı Kullanıcıdan Alıntı: https://stackoverflow.com/questions/1600...n-delphi-7

Merhabalar,

Kodu tekrar inceleyin bence.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#9
Biraz uzun işlem gerektirdi ancak aşağıdaki şekilde ClientDataSet ile yapabildim. İhtiyaç duyan olursa diye aldığım notları paylaşıyorum:
_____________________
DBLookupCombobox ekle.
Her bir lookup alan için DataSource ve ClientDataSet ekle.
ClientDataSet i seç ve FieldDefs bölümünde olması gereken alanları ve türlerini ekle. (label -value)
ClientDataSet i sağ tıkla ve Create Dataset i tıkla.
ClientDataSeti sağ tıkla ve Save To MyBase XML Table tıkla. Dosyayı isimlendirip ana dizine kaydet.
Başka alanlar içinde ClientDataSet i sağ tıklayıp ClientDataSet1.LoadFromFile() komutuyla oluşturulan XML kullanılabilir.
DataSource un DataSet i olarak ClientDataSeti ayarla.
DBLookupCombobox bileşeninin Properties-ListSource bölümünde DataSource u seç.
ListFieldName olarak Label alanını seç.
KeyFieldName olarak Value alanını seç.
Kaydetmiş olduğun XML dosyasını bir editörle aç.
ROW tagı içine kayıtlarını ekle.
Örnek Dosya:

<?xml version="1.0" standalone="yes"?>
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="ClientDataSet1Label" fieldtype="string" WIDTH="20"/>
<FIELD attrname="ClientDataSet1Value" fieldtype="i1"/>
</FIELDS>
<PARAMS/>
</METADATA>
<ROWDATA>
<ROW ClientDataSet1Label="Aktif" ClientDataSet1Value="1"/>
<ROW ClientDataSet1Label="Pasif" ClientDataSet1Value="0"/>
</ROWDATA>
</DATAPACKET>
Cevapla
#10
JVCL'in JvDBCoomboBox'ını kullanırsanız bunu çok daha kolay halledebilirsiniz. Onda Items ve Values diye iki property mevcut. Items'e PASİF, AKTİF giriyorsunuz, Values'a 0, 1 giriyorsunuz. Pasif'i seçtiğinizda Dataset'in ilgili alanına 0, Aktif'i seçtiğinizde 1 ataması yapıyor.
Kullanımı sizin yaptığınıza göre çok daha kolay.
Ayrıca ClientDataSet çok karmaşık bir bileşen (daha çok client-server uygulamalarda kullanılmak üzere 90'lı yıllarda gündeme girmişti), onun yerine MemTable, MemoryData, VirtualTable gibi bileşenleri kullansanız işiniz çok daha kolay olurdu.
Ya da en doğal olanı, Aktif, Pasif tanımları için de ayrıca bir tablo açabilirdiniz.
Neyse, uzun da olsa, zaten bir yolu seçmiş, sorununuzu çözmüşsünüz.
Ayrıca @ahmet_sinav ın da kısayolunu verdiği kod işinizi daha kısa halletmenizi sağlardı.
Kolay gelsin.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  cxgrid lookupcombobox sonersss 0 807 05-06-2022, Saat: 20:44
Son Yorum: sonersss
  FMX ve Liste sorunları. tabikisura10 6 4.021 22-05-2020, Saat: 20:46
Son Yorum: tabikisura10
  Lookupcombobox ile yeni kayıt ekleme canbir 2 3.054 21-06-2018, Saat: 10:01
Son Yorum: adelphiforumz
  DBLookupComboBox liste elemalarini arama klavye 7 7.068 13-06-2018, Saat: 16:59
Son Yorum: adelphiforumz



Konuyu Okuyanlar: 1 Ziyaretçi