Memo & DBLookupCombobox Özelliklerini kullanma?

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
meren
Üye
Mesajlar: 71
Kayıt: 20 Ara 2004 03:44

Memo & DBLookupCombobox Özelliklerini kullanma?

Mesaj gönderen meren »

Merhaba arkadaşlar bi problem hakkında fikirlerini almak istiyorum,

şimdi benim forumumda bir tane
DBLookupComboBox (User.db) ye bağlı,
1 tane Memo var, ben DbLookupComboBox'ın ListField özelliğini kullarak İsimleri listelettim ve Onclick olayına Memo1.Lines.Add(TbDelegeEmail.AsString+';') bunu yazarak seçmiş olduğum isimlerin veritabanından mail adreslerini Memo'ya ekletiyorum ve otomatik mail attırıyorum fakat burada benim bir problemim oluyor.. Eğer 1'den fazla kişi seçersem memo içerisindeki değer örnek olarak "asd@asd.com;abc@asd.com;ddd@asd.com" gibi oluyor burada bi sorun yok mail gönderme esnasında bunları (noktalı virgülle ayrıldığı için gönderiyor) fakat asıl sorun eğer 1 kişi seçersem listeden bu sefer memonun içeriği yine noktalı virgüllü olarak "asd@asd.com;" oluyor ki sondaki ; (noktalı virgül) işareti işin içine girdiğinden mail gönderemiyor program çünkü böyle bir mail adresini tanımlayamıyor.. benim amacım şimdi eğer DBlookupComboBox'ta bir isim seçersem sadece
Memo3.Lines.Add(TbDelegeEmail.AsString); çalışsın eğer birden fazla isim seçersem
Memo3.Lines.Add(TbDelegeEmail.AsString+';')
çalışmasını istiyorum (yani tek isim koyduğumda noktalı virgül yok, 1'den fazla isim seçtiğimde noktalı virgülü koysun)

bu konuda kurgu olarak aklıma birşey gelmedi takıldım arkadaşlar bana yardımcı olursanız sevnirim, herkezlere sevgiler, saygılar...
assoft

Mesaj gönderen assoft »

Bak bunu bir çok yolla yapabilirisin.
Formuna 2 adet listbox koy sonra ListBox1'e User.DB' deki kullanıcı adresleri ekle diğeride boş kalsın.
ListBox1'e çift tıkladığı zaman Listbox2'ye atarsın tabiki atarken listbox2'nin count fonksiyonundan faydalanarak Listede 1 adetmi yoksa daha fazlamı var burdan yakalarsın. sonrada mail atarken listbox2'i baştan sonra bir memo içine alır gönderirsin.
Umarım anlatabilmişimdir...
meren
Üye
Mesajlar: 71
Kayıt: 20 Ara 2004 03:44

Mesaj gönderen meren »

evet anladım hocam.. benim yapmak istediğim direk olarak comboboxtan yapmak idi ama listbox kullanmadan bu iş olmayacak :(

yani ben işlemi tek aşamada yapmak istiyordum DBLookupCombobox'tan seçer seçmez.. çünkü öteki türlü iki işlem olacak :cry:

teşekkürler
meren
Üye
Mesajlar: 71
Kayıt: 20 Ara 2004 03:44

Mesaj gönderen meren »

peki hocam ben şimdi listbox ile olayı çözmeye çalışıyorum, forumun onshowuna olayına

Kod: Tümünü seç

  Query1.Active := False;
  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT AdSoyad');
  Query1.SQL.Add(' ');
  Query1.SQL.Add('FROM "c:\mesut\toplantıtakip\deleges.db" ');
  Query1.Active  := True;
while not Query1.eof do begin
          ListBox1.Items.Add(Query1AdSoyad.AsString);
         Query1.next;
         end;
şeklinde yazdım.. listelede listbox1'e peki ben listbox1'den herhangi bir ismi seçtiğimde listbox2'ye mail adresini atarken nasıl ona ait kaydı bulupta atıcak? sürekli DB'deki ilk kaydın mail adresini atıyor :cry:

Sevgiler, saygılar
assoft

Mesaj gönderen assoft »

Sen User tablosundaki bütün kayıtları bir defadamı ekliyorsun yoksa tek tek kullanıcıya mı bırakıyorsun;
Bak Listbox1' in altına iki adet buton koy biri temizle olsun diğeride ekle olsun temizle basıtığın zaman listbox2'i sil ekle dediğindede istersen tek tek istersen tümünü birde listeye alırsın.
meren yazdı:peki hocam ben şimdi listbox ile olayı çözmeye çalışıyorum, forumun onshowuna olayına

Kod: Tümünü seç

  Query1.Active := False;
  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT AdSoyad');
  Query1.SQL.Add(' ');
  Query1.SQL.Add('FROM "c:\mesut\toplantıtakip\deleges.db" ');
  Query1.Active  := True;
while not Query1.eof do begin
          ListBox1.Items.Add(Query1AdSoyad.AsString);
         Query1.next;
         end;
şeklinde yazdım.. listelede listbox1'e peki ben listbox1'den herhangi bir ismi seçtiğimde listbox2'ye mail adresini atarken nasıl ona ait kaydı bulupta atıcak? sürekli DB'deki ilk kaydın mail adresini atıyor :cry:

Sevgiler, saygılar
Burada

Kod: Tümünü seç

Query1.Active := True; 
yerine

Kod: Tümünü seç

Query1.Open;
Sonra kodun şöyle şöyle olması lazım

Kod: Tümünü seç

  Query1.Close;
  Query1.SQL.Clear;
  Query1.SQL.Add('SELECT AdSoyad');
  Query1.SQL.Add(' ');// Bunu anlayamadım
  Query1.SQL.Add('FROM "c:\mesut\toplantıtakip\deleges.db" ');
  Query1.Open;
  Query1.First;
     while not Query1.eof do 
     begin
          ListBox1.Items.Add(Query1AdSoyad.AsString);
         Query1.next;
         end;
meren
Üye
Mesajlar: 71
Kayıt: 20 Ara 2004 03:44

Mesaj gönderen meren »

tmm hocam bu düzenlemeleri yaptım buraya kadar herşey normal şimdi 2. Listbox'a çift tıklayıp seçili olan isme ait veritabanındaki email adresini aktarmak için şunu yaptım

ListBox2.Items.Add(TbDelegeEmail.AsString+';');

mesela
Listbox1
Ahmet (DB'deki emaili ahmet@asd.com)
Mehmet (Dbdeki emaili mehmet@asd.com)

Ahmeti tıkladım Listbox2=> ahmet@asd.com oldu
Mehmeti çift tıkladım Listbox2 yine ahmet@asd.com oldu.. :cry: işte burada tıkandım kaldım


Teşekkürler, saygılar sevgiler dostum...
assoft

Mesaj gönderen assoft »

Kusura bakma oruç biraz zorluyor herhalde...
biz bu işi şöyle yapalım ozaman : forma 1 adet DbGrid, Listbox koy
listbox için yazdığın kodları dbgrid için yazacaksın yani
DbGrid'in OnDblClick olayına yazacaksın
meren
Üye
Mesajlar: 71
Kayıt: 20 Ara 2004 03:44

Mesaj gönderen meren »

olmayacak hocam bu şekildede bu iş.. şimdi şöyle düşünüyorum başa dönüyorum
DBLookupComboBox1 koydum ve buradan isimleri seçtim her ismi seçtikten sonra
Listbox1.Items.Add(TbDelegeEmail.Asstring) emailleri listbox'a gönderdik okey.. buraya kadar şimdi bir tane memoya bu isimleri kayıt saytısını kullanarak göndermek lazım örnek veiryorum
Listbox1'den 1'den fazla kayıt varsa
Memo1.Lines.Add(TbDelegeEmail.AsString+';'); (noktalı virgüllü olarak aktarmaya ba$lıyacak) bütün listboxtaki kayıtları eğer 1 veya 1'den az ise virgülsüz o kaydı akratacak memoya... şimdi şurada bunu yapabilirsem olacka herhalde listboxtaki kayıtları sırayla nasıl aktarabilirim memoya :roll:

Saygılar, sevgiler...
a_o
Üye
Mesajlar: 84
Kayıt: 18 Eki 2005 04:41
Konum: Tekirdağ

Mesaj gönderen a_o »

merhaba

dblookupcombobox+memo kullanarak yaptım senin sorununu.
ilk olarak dblookupcomboboxtan seçtiğin kayıtları

Kod: Tümünü seç

procedure TForm1.DBLookupComboBox1Click(Sender: TObject);
begin
Memo1.Lines.Add(TbDelegeEmail.AsString+';');
end;
bu şekilde ekliyordun zaten. daha sonra gönder butonuna bastığın anda memonun kayıt sayısını kontrol ettir. eğer kayıt sayısı 1 se ';' ü sildir. yani buda

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
if Memo1.Lines.Count=1 then
memo1.Text:=AnsiReplaceText(memo1.Text,';','');
end;
bu arada uses kısmına strutils eklemeyi unutma :wink:
umarım işini görür.
kolay gelsin
ii çalışmalar
meren
Üye
Mesajlar: 71
Kayıt: 20 Ara 2004 03:44

Mesaj gönderen meren »

Evet hocam aynen demek istediğim olay buydu valla :lol: Saol saol saol , çok teşekkür ederim,

ilgilinen bütün arkadaşlara teşkkür ederim iyi çalışamlar herkeze.
Cevapla