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...
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;
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;
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 )
- 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.
- 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...
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 )
- 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.
- 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...
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...
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;