ListView Append (son kayıt olarak keydetme)

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

ListView Append (son kayıt olarak keydetme)

Mesaj gönderen brs »

Merhaba ListView Append komut yerine ne kullanabilirim?

Örnek: AAA ListView de kayıtlar arasında yoksa son kayıt olarak eklemek istiyorum

Kod: Tümünü seç

 
if ListView1.Items[i].SubItems[1] <> 'AAA' then
        begin
          ListView1.Items.Append(ListView1.Items[i].SubItems[1] := 'AAAA');
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: ListView Append (son kayıt olarak keydetme)

Mesaj gönderen mrmarman »

(1) VAR bloğunda BOOLEAN bir değişken tanımla. Örneğin ismi boolBulundu olsun.
(2) boolBulundu := False; ile ilk değeri FALSE olsun
(3) Listview Itemlerini 0'dan başlayıp ItemsCount-1'e kadar dolaşıp ilgili subitem içerisinde AAA var mı diye sorgula. Eğer var ise boolBulundu := TRUE; dersin.
(4) Döngü bitince TRUE veya FALSE olduğunu sorup ona göre ekler veya ekleme yapmadan devam edersin.

Kod: Tümünü seç

if NOT boolBulunu THEN With ListView1.Items.Add do begin ... end;
benzeri bir kod işini görür
Resim
Resim ....Resim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: ListView Append (son kayıt olarak keydetme)

Mesaj gönderen brs »

Bir şey patım ama tam olarak olmadı

Kod: Tümünü seç

var
Ara:Boolean;
i: integer;
begin
for i := 0 to ListView1.Items.Count - 1 do
begin
Ara:=ListView1.Items[i].SubItems[1]=  Edit3.Text ;
if Ara= False then
begin
Caption:='Kayıt yok';
end
else
begin
Caption:='Kayıt var';
end;
end;
end;

En son brs tarafından 02 Tem 2014 11:07 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: ListView Append (son kayıt olarak keydetme)

Mesaj gönderen mrmarman »

- Burada atladığın nokta şudur : if / then / else kurgusunda arama yapıyorsan ELSE kurmamalısın.
- Çünkü örneğin 10 ITEM'den 4'üncü itemde aradın var ise VAR oldu. Bir sonraki 5.nci itemde VAR olan caption YOK olarak değişecektir. Şanslı isen en sondaki ITEM'deki aradığın ise sonuç doğru çıkar ama bozuk saat günde iki defa doğru zamanı gösterir deyimine benzer bir durum olur.

Yapan gereken ise döngüye girmeden CAPTION'a YOK yazdırıp, sorgu sırasında var ise CAPTION'daki değeri VAR olarak değiştirmen, aksi halde (ELSE durumu) caption'a dokunmaman lazım.
Resim
Resim ....Resim
Kullanıcı avatarı
brs
Üye
Mesajlar: 626
Kayıt: 04 Eki 2012 03:52

Re: ListView Append (son kayıt olarak keydetme)

Mesaj gönderen brs »

bir de bu var

Kod: Tümünü seç

var
Ara:Boolean;
i: integer;
begin
Ara:=ListView1.Items[i].SubItems[1]=  Edit3.Text ;
if Ara= False then
begin
Caption:='Kayıt yok';
end
else
begin
Caption:='Kayıt var';
end;

end;
İşi bilen yardım eder, az bilen akıl verir, bilmeyen eleştirir, yapamayan ise çamur atar...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: ListView Append (son kayıt olarak keydetme)

Mesaj gönderen mrmarman »

brs yazdı:bir de bu var

Kod: Tümünü seç

var
Ara:Boolean;
i: integer;
begin
Ara:=ListView1.Items[i].SubItems[1]=  Edit3.Text ;
if Ara= False then
begin
Caption:='Kayıt yok';
end
else
begin
Caption:='Kayıt var';
end;

end;
Döngü nerede ? Bir de ELSE için yazdığımı yine değerlendirmemişsin....

Neyse sen aşağıdaki gibi dene.

Kod: Tümünü seç

var
  i: integer;
begin
  Caption:='Kayıt yok';
  for i := 0 to ListView1.Items.Count - 1 do
    if ListView1.Items[i].SubItems[1] =  Edit3.Text
      then Caption:='Kayıt var';
end;
Resim
Resim ....Resim
Cevapla