html dekine benze Combobox

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

html dekine benze Combobox

Mesaj gönderen erkan1525 »

Merhaba,
html yazarken <selectted value="tr">TÜRKİYE</selected> gibi combobox oluşturuyoruyoruz ve kullanıcı TÜRKİYE olarak görüyor fakat değer TR olarak gönderiliyor.

Delphide buna benzer birşey yapmak istiyorum. Stringlistlerle falan idare ediyoruz ama zor oluyor. Jedi de kurdum ama bulamadım böyle bir component varmı? Mümkünse data combonent???

Şimdiden Çoook teşekkürler
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: html dekine benze Combobox

Mesaj gönderen unicorn64 »

delphinin standart combobox nesnesiyle bunu yapabilirsiniz,
delphi combobox add object olarak arayın, örnek olarak şuna bakabilirsiniz
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: html dekine benze Combobox

Mesaj gönderen mrmarman »

Doğru ve pratik kullanımı @unicorn64 önerdiği şekildedir.

Alternatif olarak Object olayına aşina değilseniz, combobox sayınız sayıca az ise her birine ikinci bir liste içeren kutu (örneğin ComboBox1'e karşlılık Visible özelliği FALSE olan bir LitstBox1, ComboBox2'ye karşılık Visible özelliği FALSE olan bir ListBox2 şeklinde) ayna listeler kurabilirsiniz.

ComboBox1'in içinda sırasıyla Türkiye, Almanya, İtalya varken onun ayna listesi olacak olan ListBox1'de TR, DE, IT olacak.
Örneğin ComboBox1'in onChange olayında yapılacak işlem aşağıdaki gibi olacaktır.

Kod: Tümünü seç

  strUlkeKodu := ListBox1.Items[ ComboBox1.ItemIndex ];
Bilmem ifade edebildim mi ...
Resim
Resim ....Resim
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: html dekine benze Combobox

Mesaj gönderen esistem »

Selam, kendimce 3 fonksiyon yazıp db den verileri alıp combo ya basan, db de ilgili kayda konumlanan, gerektiğinde kayıt numarasını dışarıya çıkartma işlemlerini yaptırmıştım,

Kod: Tümünü seç


Procedure COMBODOLDUR( SORGU:STRING; COMBO:TComboBox );
begin
 TRY
data.QSORGU.Close; // data modulde boş bir QSORGU querysi bulunduruyorum mesela "Select kod, adi from doviz" gibi sorgu gönderiyorum.
data.QSORGU.SQL.Clear;
data.QSORGU.SQL.Add(SORGU);
data.QSORGU.Open;
data.QSORGU.FetchAll;
data.QSORGU.FieldDefs.Update;
(COMBO AS TComboBox).Items.Clear;
data.QSORGU.First;
WHILE NOT DATA.QSORGU.Eof DO BEGIN // DONGU
with (COMBO AS TComboBox).Items do Objects[Add(DATA.QSORGU.Fields[1].AsString)] := TObject(DATA.QSORGU.Fields[0].AsInteger);
DATA.QSORGU.Next;
                             END;  // DONGU
// yukarıda VT deki verileri kod ve adı şeklinde combobox a basıyor
data.QSORGU.Close;
 EXCEPT
 on E: Exception do begin
 MessageDlg('DİKKAT...!'+#13+(COMBO AS TComboBox).Name+' ComboBox Yükleme Hatası Oluştu'+#13+E.ClassName + #13 + E.Message, mtInformation, [mbOK], 0);
                        end;
 END;
end;

// aşağıdaki procedure ise, mesela combobox vt den id si kaç olan kayda konumlansın onu gönderiyorsunuz
Procedure COMBOSEC( COMBO:TComboBox; ID:LongInt );
var
  SKOD,X:INTEGER;
begin
 TRY
 FOR X:=0 TO (COMBO AS TComboBox).Items.Count-1 DO BEGIN
  (COMBO AS TComboBox).ItemIndex:=X;
  with (COMBO AS TComboBox) do SKOD:=LongInt(Items.Objects[ ItemIndex ]);
 IF SKOD=ID THEN Break;
                                                   END;
 EXCEPT
 on E: Exception do begin
 MessageDlg('DİKKAT...!'+#13+(COMBO AS TComboBox).Name+' ComboBox Seçim Hatası Oluştu'+#13+E.ClassName + #13 + E.Message, mtInformation, [mbOK], 0);
                        end;
 END;
end;
// aşağıda ise seçtiğiniz combobox taki seçili olan alanın id sini veriyor.
function COMBOVER( COMBO:TComboBox ):INTEGER;
begin
 TRY
 IF (COMBO AS TComboBox).Visible=TRUE THEN
 with (COMBO AS TComboBox) do RESULT:=LongInt(Items.Objects[ ItemIndex ])
 ELSE RESULT:=-1;
 EXCEPT
 on E: Exception do begin
 RESULT:=-1;
 MessageDlg('DİKKAT...!'+#13+(COMBO AS TComboBox).Name+' ComboBox Geri Dönüşüm Hatası Oluştu'+#13+E.ClassName + #13 + E.Message, mtInformation, [mbOK], 0);
                        end;
 END;
end;
kullanımı;

Mesela döviz türlerinin olduğu bir combobox ı doldurmak için;
COMBODOLDUR('SELECT KOD, KISALTMA FROM DOVIZ ORDER BY KOD',DOVIZ_KODU); // DOVIZ_KODU combobox

Doldurulmuş olan combobox taki mesela id si 2 olan USD kurunun seçili olmasını istiyorsam
COMBOSEC(DOVIZ_KODU,2); // 2 id li dovize konumlanır

DOVIZ_KODU combobox unda hangi id li döviz seçili onu almak için
id:=COMBOVER(DOVIZ_KODU);

şeklinde kullanabilirsiniz.
erkan1525
Üye
Mesajlar: 113
Kayıt: 12 Ağu 2014 01:31

Re: html dekine benze Combobox

Mesaj gönderen erkan1525 »

Çok tşekkür ederim sizinkilere benze bir yöntemde ben geliştirmiştim zaten ama kombolar artınca dedim acaba visial basicdeki gibi birde ekstadan dataitems özelliği olan bir kontrol varmı diye yok galiba
Kullanıcı avatarı
esistem
Üye
Mesajlar: 464
Kayıt: 02 Eki 2007 11:22
İletişim:

Re: html dekine benze Combobox

Mesaj gönderen esistem »

DBLookUpComboBox var onuda inceleyebilirsiniz.
Kullanıcı avatarı
badkursat
Üye
Mesajlar: 84
Kayıt: 03 Mar 2014 08:58

Re: html dekine benze Combobox

Mesaj gönderen badkursat »

Standart DBComboboxa Value propertysi ekleyip bu value yede istediğin bir kolonu TFieldDataLink ile set edebilirsin.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: html dekine benze Combobox

Mesaj gönderen mrmarman »

Aklıma geldi de, ekranda bu kodların görünmesi sıkıntı olur mu ? Mesela "Türkiye (TR)" "Almanya (DE)" şeklinde görünmesinde sıkıntı yoksa böyle giriş yapın, sonra OnChange olayında parantez içini parse edin.

Örneğin :

Kod: Tümünü seç

procedure TForm1.ComboBox1Change(Sender: TObject);
Var
  strKod : String;
begin
  strKod := ComboBox1.Text;
  System.Delete (strKod, 1, Pos('(', strKod)   );
  strKod := Copy(strKod, 1, Pos(')', strKod)-1 );
  ShowMessage(strKod);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  With ComboBox1 do begin
    Style := csDropDownList;
    Items.Add('Türkiye (TR)' );
    Items.Add('Almanya (DE)' );
    Items.Add('Italya (IT)'  );
    Items.Add('Hollanda (NE)');
    ItemIndex := 0;
  end;
end;

Resim
Resim ....Resim
Cevapla