ListView belirli alanı kopyalama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

ListView belirli alanı kopyalama

Mesaj gönderen Dostk »

İyi gecelerler,

Listviewde seçili olan satırı kopyalıyorum, fakat tüm alanları değil de sadece belirli alanı nasıl kopyalatabilirim?
Kopyalama sırasında id ve sıra numarası alanlarım var bu alanların kopyalanmasını istemiyorum...

Kod: Tümünü seç

procedure TForm11.Button2Click(Sender: TObject);
var
  SelArray: array of Integer;
begin
  with ListView do
  begin
    for I := 0 to Items.Count - 1 do
      if Items[I].Selected then
      begin
        SetLength(SelArray, Length(SelArray) + 1);
        SelArray[High(SelArray)] := I; // Seçili satır index
      end;
    for I := High(SelArray) downto 0 do // Seçili satır altına kopyala
    begin
      Items.Insert(SelArray[I] + 1).Assign(Items[SelArray[i]]);

      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
    end;
  end;
end;
Kullanıcı avatarı
G.Arkas
Üye
Mesajlar: 829
Kayıt: 01 Eki 2007 07:16
Konum: İstanbul
İletişim:

Re: ListView belirli alanı kopyalama

Mesaj gönderen G.Arkas »

Dostk yazdı:İyi gecelerler,

Listviewde seçili olan satırı kopyalıyorum, fakat tüm alanları değil de sadece belirli alanı nasıl kopyalatabilirim?
Kopyalama sırasında id ve sıra numarası alanlarım var bu alanların kopyalanmasını istemiyorum...

Kod: Tümünü seç

procedure TForm11.Button2Click(Sender: TObject);
var
  SelArray: array of Integer;
begin
  with ListView do
  begin
    for I := 0 to Items.Count - 1 do
      if Items[I].Selected then
      begin
        SetLength(SelArray, Length(SelArray) + 1);
        SelArray[High(SelArray)] := I; // Seçili satır index
      end;
    for I := High(SelArray) downto 0 do // Seçili satır altına kopyala
    begin
      Items.Insert(SelArray[I] + 1).Assign(Items[SelArray[i]]);

      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
    end;
  end;
end;

Kod: Tümünü seç

      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
      SubItems.Add('Dritte Spalte');
Kopyalama işleminin aktrımı burada yapılıyor. Hangi kolonları istemiyorsan çıkartabilirsin. (Id vs kolon belirtmediğin için bişey diyemedim)
Resim
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: ListView belirli alanı kopyalama

Mesaj gönderen Dostk »

Hocam işte tamda sorun burada başlıyor, SubItems.Add('Dritte Spalte'); insert komutu veremiyorum insert komutunu nasıl çözerim...
Kullanıcı avatarı
Dostk
Üye
Mesajlar: 144
Kayıt: 22 Ağu 2015 12:21

Re: ListView belirli alanı kopyalama

Mesaj gönderen Dostk »

Kısmi olarak belirli alanı kopyalama olayını çözdüm, anacak bu seferde kopyalama işlemini yaparken seçili satırı değil de en üsteki satırı veya birden fazla satır seçilmiş ise kopyalama işlemini kafasına göre yapıyor.

Gözümden kaçan veya nerede hata yapıyorum acaba???...


Kod: Tümünü seç

procedure TForm11.Button2Click(Sender: TObject);
var
  Li: TListItem;
  SelArray: array of Integer;
begin
  with ListView do
  begin
    for I := 0 to Items.Count - 1 do
      if Items[I].Selected then
      begin
        SetLength(SelArray, Length(SelArray) + 1);
        SelArray[High(SelArray)] := I;
      end;
    for I := High(SelArray) downto 0 do
    begin
      Li := Items.Insert(SelArray[I] + 1);
      Li.SubItems.Add(Items[I].SubItems[0]);
      Li.SubItems.Add(Items[I].SubItems[1]);
      Li.SubItems.Add(Items[I].SubItems[2]);
      Li.SubItems.Add(Items[I].SubItems[3]);
      Li.SubItems.Add(Items[I].SubItems[4]);
      Li.SubItems.Add(Items[I].SubItems[5]);
      Li.SubItems.Add(Items[I].SubItems[6]);
    end;
  end;
end;
Cevapla