1

Konu: Combobox

merhaba,
Öncelikle böyle bir siteyi hazırladığınız için emeğe geçen herkese teşekkür ederim.

Benim sormak istediğim bir konu var.
yazdığım programda combobox sadece lsitesinde gözüken seçeneklerin girilmesine izin veriyor.
eğer o alanda seçenekler dışındaki bir bilgi varsa onu göstermiyor.  Fizkisel olarak o bilgi o alanda kayıtlı ama combobox seçeneklerinde olmadığından göstermiyor. 

Sorum şu, combobox seçenekleri içinde var olamyan bir bilgiyi göstermem mümkün mü?

Yardımınız için şimdiden teşekkürler..

2

Re: Combobox

eger combobox a yansimayan kayit o anda girildi ise formu kapatip yeniden calistirana kadar gozukmez ancak buna gerek kalmadan olayı soyle cozebilirsin combobox gotfocus() eventine

Visual Fox Pro
requery()

yazarak listeledigi bilgileri tazelemesini saglayabilirsin...

umarım sorunu dogru anlamisimdir.

* hatırlatma bu yontem rowsourcetype=3-SQL Statement oldugunda gecerlidir, asagidaki kodlar buna ornektir kendine gore uyarlayabilirsin

Visual Fox Pro
&& combobox gotfocus method kodu

requery()

Visual Fox Pro
&& combobox init method kodu

lcSQL1 = "select IL_kodu,IL_ad from Iller order by Il_kodu into cursor cboIller "
with this
.RowSourceType = 3
.RowSource = lcSQL1
.columncount = 2
.columnwidths = "35,75"
endwith

Visual Fox Pro
&& combobox interactivechange method kodu

DoDefault()
With Thisform.pf.pg6
    .txtilkod.Value = cboIller.IL_kodu
    .txtilad.value=cboIller.IL_Ad
    .Refresh
Endwith
http://www.soykansoft.com/images/twitter.jpghttp://www.soykansoft.com/images/wp.jpg

3

Re: Combobox

anladım deneyeceğim önerini.

aslında demek istediğimi tam anlatamadım ben... durum şu..
ilçelerin bulunduğu bir alana önceden rastgele girişler yapılmış... ben bunları düznli hale getirmek istedim. ve yeni kayıtlarda ilçeleri combobox da gösterip ordan seçmelerini sağladım. Ancak daha önce rastgele girilmiş olan ilçe adları eğer benim combobox listemde yok ise görünmüyor. bunu combobox ın listesine eklediğimde sorun yok ama  hatalı verileri bu lsiteye eklemek istemiyorum.
istediğim şu, hatalı da olsa o alandaki bilgilerin gözüksün ama yeni kayıtta veri girerken sadece combobox dan seçim yapabilsin.. çok mu şey istiyorum bilmem smile

diyer bir değişle...
table.ilce="x"
.controlsourse = table.ilce
.rowsource ="a,b,c"
.rowsourcetype= 1 value

bu durumda ilce "x" olduğundan combobox da görünmüyor.
eğer .rowsource ="a,b,c,x" olursa sorun yok
ama ben "x" değerini rowsource a eklemeden çözebilirmiyim?

4

Re: Combobox

SQL rowsource kullan. Union ile girilmisleri ve girilmesi gerekenleri birlestir.

with thisform.myCombo
.RowSourceTyep = 3
.RowSource = "select ilce from myTable"+;
      "  union "+;
      " select ilce from ilceler"+;
      " into cursor crsIlceler"
endwith

5

Re: Combobox

evet...denedim birleştirme oluyor ama hatalı girilmiş veri de seçeneklerde gözüktüğü için sanki seçilmesi doğrudur gibi algılanıyor. yapmak istediğim listede olmasın (yani doğru bir seçenekmiş gibi gözükmesin) ama hatalıda girilmiş ise dropdown combo da görüntü olarak var olsun seçenekler listesinde olmasın.
sql çözümü hatalı bilgiyide listeye ekliyor...  böyle bir yöntem var mı?

6

Re: Combobox

sanırım böle bir yöntem yok smile

diğer önerilere göre bir çözüm üreteceğim.. yardımlarınız için teşekkür ederim..

7

Re: Combobox

hala bir çözüm üretemedim istediğim gibi. bir fikri oaln var mı?

8

Re: Combobox

En temel haliyle kullan: Combonun GotFocus Event veye ilçelerin değiştiği bir Event:

LOCAL Xi
WITH ThisForm.MyCombo
.Clear
Xi=1
SCAN &&ilçeler - indexi dilediğin sıralamayı da belirler
  IF (listeye girsin şartı)
    .AddListItem('Comboya girecek 1.item adı',Xi,1)
    .AddListItem('Comboya girecek 2.item adı',Xi,2)
    IF (bu item seçili olsun şartı) && eğer birini önden seçmek istiyorsan
                                              && örneğin ilçenin ilk 3 harfi benziyor
      .Selected(Xi)=.T.
    ENDI
    Xi=Xi+1
  ENDI
ENDS
&& başka şeyler de ekleyeceksen -istersen en başa koy
.AddListItem('Comboya girecek başka 1.item adı',Xi,1)
.AddListItem('Comboya girecek başka 2.item adı',Xi,2)
Xi=Xi+1

ENDW

VFP9 SP2

9

Re: Combobox

önerin için teşekkürler.. ancak istediğim şu ...
combobox da görünecek değer itemliste görünmüyecek ..yani daha önce var olan değer itemlist'e olmasa bile görünecek ama seçerken seçenekler arasında olmayacak.. 
problem şurda çıktı ..bana verilen hazır bir table da ..ilçeler elle girilmiş.. ve hatalı girişler var..
ben şimdi bu alana combobox ile veri giriş i yapmak istiyorum...böylece hatalı girişler engellenmiş olacak. Ama önceden girilmiş hatalı veriler bu durumda combobox da görünmüyor.. bu hatalı değeride listeye eklesem bu hatalı değerinde seçilme ihtimali çıkıyor..
öle abuk bir durum ..

özetle istediğim şey daha önce hatalı girilmiş veri gözüksün ama seçenekler arasında olmasın..

10 Son düzenleyen, konuka (14.01.2007 09:15:24)

Re: Combobox

LOCAL XiCombo, XiList
STORE 1 TO XiCombo, XiList

oC=ThisForm.MyCombo
oL=ThisForm.MyList

oC.Clear
oL.Clear

* umarım soruyu yanlış anlamadım ....
* oC ve oL RowsourceType=0 olmalı ve örneklerde 2 kolonlu

SCAN &&ilçeler - indexi dilediğin sıralamayı da belirler
  DO CASE
  CASE (comboya girme şartı ve seçilebilir şartı)
    oC.AddListItem('Comboya girecek 1.item adı',XiCombo,1)
    oC.AddListItem('Comboya girecek 2.item adı',XiCombo,2)
    XiCombo=XiCombo+1
  CASE (comboya girme şartı ve seçilmesin şartı)
    oC.AddListItem('\'+'Comboya girecek 1.item adı',XiCombo,1)
    oC.AddListItem('Comboya girecek 2.item adı',XiCombo,2)
    XiCombo=XiCombo+1
  CASE (listeye girme şartı ve seçilebilir şartı)
    oL.AddListItem('listeye girecek 1.item adı',XiList,1)
    oL.AddListItem('listeye girecek 2.item adı',XiList,2)
    XiList=XiLİst+1
  CASE (listeye girme şartı ve seçilemesin şartı)
    oL.AddListItem('listeye girecek 1.item adı',XiList,1)
    oL.AddListItem('\'+'listeye girecek 2.item adı',XiList,2)
    XiList=XiLİst+1
  ENDC

ENDS
&& başka şeyler de ekleyeceksen -istersen en başa koy
    ol.AddListItem(listeye girecek 1.item adı',XiList,1)
    ol.AddListItem(listeye girecek 2.item adı',XiList,2)
    XiList=XiLİst+1
*
   oc.AddListItem('\'+'Comboya girecek 1.item adı',XiCombo,1)
    oc.AddListItem('Comboya girecek 2.item adı',XiCombo,2)
   XiCombo=XiCombo+1

* döngüde diğer özellikleri şarta bağlayıp dilediğin yerde kullan...

VFP9 SP2

11

Re: Combobox

Ben listeye eklemeden çözmeye çalıştım ama olmadı. önerdiğin çözüm işimi görür . "\" simgesinin böle bir yeteneği olduğunu farketmemişim. Yardım için teşekkürler. İşime çok yarayacak. smile