Çoklu seçme - chkboxla

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
cmkare
Üye
Mesajlar: 177
Kayıt: 23 Ağu 2010 11:29

Çoklu seçme - chkboxla

Mesaj gönderen cmkare »

Merhaba. Formumda 10-15 tane checkbox var. ben bunların arasından çoklu seçim yapıp aynı alana kayıt ettirmek istiyorum. nasıl bir yol önerirsiniz yada başka bir yöntem.
ben şu şekilde düşündüm. checkboxları edite aktarıp en sondada editleri ard ardına yazdırmak. şu şekilde

dbalani.Text:=( edt1.Text+','+edt2.Text+'','+edt3.Text+' ); gibi

yada başka bir yöntem öneren varmı?
daha sonra bunları tekrardan programdan tekrar girip değiştirmek, okumak isteyebilirim. Okumak yada düzenlemek istediğimde hangilerini seçtiysem o Checkboxların tickleri tikli olabilir.
Kullanıcı avatarı
KoPilot
Üye
Mesajlar: 185
Kayıt: 05 Eki 2007 08:02

Re: Çoklu seçme - chkboxla

Mesaj gönderen KoPilot »

Neden tek bir alana yazmaya çalıştığını anlayamadım. Bence yapını tekrar kontrol et..
Dosyalarınızı kendi bulutunuza yedekleyin. Yandex Disk
Eyvallah..
cmkare
Üye
Mesajlar: 177
Kayıt: 23 Ağu 2010 11:29

Re: Çoklu seçme - chkboxla

Mesaj gönderen cmkare »

Tek bir alan var çünkü. bize nasıl ulaştınız gibi bir soru var mesela?
Cevaplar ise şöyle. Gazete - Tv - İnternet - Dergi - Billboard .. gibi

adam Gazete, Tv, İnternet, dergiyi seçti mesela Tek bir alana hepsini yazdıracağım.

Yoksa her chkbox için veritabanında bir alanmı açayım? İnternet,Tv,Gazete .. gibi?

bunları ayrı ayrı kaydettirmem biraz saçma olmazmı. onun için tek bir alanda olması lazım.
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: Çoklu seçme - chkboxla

Mesaj gönderen aslangeri »

s.a.
veri tabnındaki alanın tipi nedir.
eğer sayısal bir alansa
sayının her bir bitini bir checkbox karşılık gelecek şekilde ayarlayabilirsiniz.
eğer alfasayısal bir alansa
10111000 şeklinde bir string ile değerleri tutabilirsiniz.
her checkbox a bir sıranumarası verirsiniz o karakter 1 ise işaretli 0 ise işaretsiz olur.
eğer projeye yeni başlıyorsanız ve veri tabanını değiştirme imkanınız varsa tasarımı bir gözden geçirin derim.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
cmkare
Üye
Mesajlar: 177
Kayıt: 23 Ağu 2010 11:29

Re: Çoklu seçme - chkboxla

Mesaj gönderen cmkare »

Hayır. Alan varchar. yazı gelecek. bunu rapor aldığım zamanda görmem lazım ama. 1-2 diye yazdırırsam rapor aldığımda 1in neyi 2nin neyi ifade etiğini nasıl ayarlıyacağım?
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Çoklu seçme - chkboxla

Mesaj gönderen CiTiZEN »

varchar alanda saklanan veri bir stringe alınır şöyle ki:

Kod: Tümünü seç

procedure vs.vs
var s:String;
begin
s:=dataset.fieldbyname('alan_adı').value;
if s[0]=1 then
checkbox1.cheched=false
else
checkbox1.checked=true;
bunu 2-3-4-5 vs gibi tekrarlayın
end;
en basit yöntemlerden birisi kaydederkende bir string in aynı şekilde s[0] biti kullanılabilir. integer bir ifadeye aktarırsanız case ile daha kolay yapabilirsiniz.

Koılay Gelsin.
UWESIS CORPORATION
cmkare
Üye
Mesajlar: 177
Kayıt: 23 Ağu 2010 11:29

Re: Çoklu seçme - chkboxla

Mesaj gönderen cmkare »

kaydederken nasıl olacak?
Kullanıcı avatarı
CiTiZEN
Üye
Mesajlar: 1163
Kayıt: 06 Oca 2008 04:15

Re: Çoklu seçme - chkboxla

Mesaj gönderen CiTiZEN »

Kod: Tümünü seç

if checkbox1.checked=true then
s[1]:=1
else
s[1]:=0;
if checkbox2.checked=true then
s[2]:=1
else
s[2]:=0;

checkboxN

yani örneğin 1. checkbox aktif, 2 değilse s string de "10" değeri olur
kayıt ise;
dataset.insert;
dataset.fieldbyname('alan_adı').value:=s;
dataset.post;
basit bir yöntem ama array yani dizi değerlerini araştır daha komplike ve sağlam bir yapı oluşturabilirsin.
UWESIS CORPORATION
orhancc
Üye
Mesajlar: 585
Kayıt: 24 Ağu 2010 02:14
Konum: İstanbul / Kadıköy
İletişim:

Re: Çoklu seçme - chkboxla

Mesaj gönderen orhancc »

Şöyle birşey yapabilirsin ama bu kesin sonuç vermeyebilir çünkü hangi checkboxa ait olduğu belli değil ayrıca onu da kayıt edip ona göre kontrol ettirmen lazım. Böyle yapacağına bir tane grid içinde checkbox sütunu veya satırı tanımla daha sağlıklı olur.

Kod: Tümünü seç

procedure TForm3.GetCheckBox;
var
  chkText: string;
  i: Integer;
  Comp: TComponent;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    Comp := Components[i];
    if Comp is TCheckBox then
      chkText := chkText + BoolToStr((Comp as TCheckBox).Checked) + ',';
  end;
  ListBox1.Items.Add(chkText);
end;
Cevapla