Sıra numarası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Sıra numarası

Mesaj gönderen hido »

İyi akşamalar;


Sürükle bırak işleminde altaki kodları kullanıyorum, taşıma sırasında satır değişiyor fakat sıra numarası güncellenmiyor bu durum neden kaynaklanabilir...

Kod: Tümünü seç

procedure TMainForm.ListViewDragDrop(Sender, Source: TObject;
  X, Y: Integer);
var
  CurrentItem, NextItem, DragItem, DropItem: TListItem;
begin
  if (Sender is TListView) and (Source is TListView) then
  begin
    DropItem := TListView(Sender).GetItemAt(X, Y);
    CurrentItem := TListView(Source).Selected;
    while Assigned(CurrentItem) do
    begin
      NextItem := TListView(Source).GetNextItem(CurrentItem, SdAll,
        [IsSelected]);
      if Assigned(DropItem) then
        DragItem := TListView(Sender).Items.Insert(DropItem.Index)
      else
        DragItem := TListView(Sender).Items.Add;
      DragItem.Assign(CurrentItem);
      if (Source = Sender) then
        CurrentItem.Free; 
      CurrentItem := NextItem;
    end;
  end;
end;

Kod: Tümünü seç

procedure TMainForm.ListViewDragOver(Sender, Source: TObject;
  X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  if (Source is TListView) then
  begin
    Accept := True;
  end;
end;
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Sıra numarası

Mesaj gönderen hido »

Konu hakkın bilgisi olan yokmu....
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Sıra numarası

Mesaj gönderen mrmarman »

Merhaba. Kendimce önceki mesajındaki gibi zaten çözümü bulmuşsundur dedim.. :)

- Sıra numarası nerede duruyor ? Bunu sen mi yazıyorsun yoksa ListView kendisi mi yazıyor ( ikinciyi ironik olarak soruyorum bunu yapmadığını biliyoruz ) :wink:

- Yani senin yazdığın bilgiden sen sorumlusun. Caption kısmına sıra no yazmışsan, baştan sona döngü ile yine sen düzenlemek zorundasın. :idea:

- ListView'in kendisi yazdığı hususunda bir istisna var ki senin soruna ve kodlarında göre bunun aksi olduğu açık. Eğer ki Item'lerin OnDrawItem olayında dinamik olarak sırası gelen Item'in Index'ini en başa Canvas.TextOut ile yazmıyorsan... :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Sıra numarası

Mesaj gönderen hido »

mrmarman yazdı:Merhaba. Kendimce önceki mesajındaki gibi zaten çözümü bulmuşsundur dedim.. :)

- Sıra numarası nerede duruyor ? Bunu sen mi yazıyorsun yoksa ListView kendisi mi yazıyor ( ikinciyi ironik olarak soruyorum bunu yapmadığını biliyoruz ) :wink:

- Yani senin yazdığın bilgiden sen sorumlusun. Caption kısmına sıra no yazmışsan, baştan sona döngü ile yine sen düzenlemek zorundasın. :idea:

- ListView'in kendisi yazdığı hususunda bir istisna var ki senin soruna ve kodlarında göre bunun aksi olduğu açık. Eğer ki Item'lerin OnDrawItem olayında dinamik olarak sırası gelen Item'in Index'ini en başa Canvas.TextOut ile yazmıyorsan... :idea:

Hocam yukarıda verdiğim kodlarla formlar arası sürükle bırak yapıyorum ve otamatik olarak captiona 1,2,3, diye numaralandırıyor, fakat aktardığım listviewde satırların yerini değiştirince sırano değişmiyor otomatik olarak sıra noyu nasıl güncellerim...
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Sıra numarası

Mesaj gönderen mrmarman »

Caption'a nerede 1,2,3,4 yazılıyorsa benzerini her DragDrop işleminden sonra yapacaksın.
Resim
Resim ....Resim
Kullanıcı avatarı
hido
Üye
Mesajlar: 268
Kayıt: 29 Mar 2014 04:32

Re: Sıra numarası

Mesaj gönderen hido »

Hocam bana göre kodlarda hata yok ama sıra numarası güncellenmiyor

Kod: Tümünü seç

procedure TMainForm.ListViewRowNumber(Sender: TObject);
begin
  with ListView do
  begin
    if Items.Count > 0 then
    begin
      for I := 0 to Items.Count - 1 do
      Begin
        Caption := IntToStr(Items.Count);
      end;
    end;
  end;
end;
Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: Sıra numarası

Mesaj gönderen mrmarman »

Kod: Tümünü seç

  if (Sender is TListView) and (Source is TListView) then
  begin
    ...
    ...
    ListViewRowNumber( Sender );
  end;
dene
sana ilk mesajımda dediğim gibi sen bir şey demezsen ListView birşey yapmaz...
Resim
Resim ....Resim
xxxjedixxx
Üye
Mesajlar: 216
Kayıt: 10 Ara 2013 03:50

Re: Sıra numarası

Mesaj gönderen xxxjedixxx »

Sanırım hatanız burada.

for I := 0 to Items.Count - 1 do
Begin
Caption := IntToStr(Items.Count);
end;

yazmışsınız.

Caption := IntToStr(i + 1);

olmalı
Cevapla