Solved

How to cut and paste in Tlistview

Posted on 2000-04-09
7
316 Views
Last Modified: 2010-04-04
my Delphi app has listview and i want to be able to cut and paste with multivalues in it,how to do it?
sample code please.

Rgds.

Shekou
0
Comment
Question by:shekou
  • 4
  • 3
7 Comments
 
LVL 1

Expert Comment

by:Probie
ID: 2697555
What do you wan't to cut and paste?
And how do you want the result to be?

/Probie

0
 

Author Comment

by:shekou
ID: 2697565
I want to cut records in a Listview and
paste it back again.

Rgds

Shekou
0
 
LVL 1

Accepted Solution

by:
Probie earned 100 total points
ID: 2697593
Here is an example...

Basicly I create a second TListView and uses a listitem there as a buffer:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    CopyButton: TButton;
    PasteButton: TButton;
    procedure CopyButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PasteButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  BufferItem : TListItem;
  BufferItems : TListItems;
  BufferListView : TCustomListView;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
 BufferListView := TCustomListView.CreateParented(handle);
 BufferItems := TListItems.Create(BufferListView);
 BufferItems.BeginUpdate;
 BufferItem := TListItem.Create(BufferItems);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 BufferListView.free;
end;

procedure TForm1.CopyButtonClick(Sender: TObject);
// Copy Item
begin
 if Assigned(ListView1.Selected) then begin
  bufferItem.Caption := 'test';
  BufferItem.Assign(ListView1.Selected);
 end;
end;

procedure TForm1.PasteButtonClick(Sender: TObject);
begin
 ListView1.Items.Add.Assign(BufferItem);
end;

end.
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 

Author Comment

by:shekou
ID: 2699220
Thank you probie:

1. you give out copy and paste sample,
   how about CUT and paste?
2. Your sample only work with single
   records, how about multivalues?
   I mean if i want cut 5 records at
   the same time and then paste them   back again, how to do it?


Thanks

Shekou
0
 

Author Comment

by:shekou
ID: 2699706
waiting...
0
 
LVL 1

Expert Comment

by:Probie
ID: 2700139
Ok, here is the code you need...

Rgds
Probie

----


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    CopyButton: TButton;
    CutButton: TButton;
    PasteButton: TButton;
    procedure CopyButtonClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure PasteButtonClick(Sender: TObject);
    procedure CutButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  BufferItem : TListItem;
  BufferItems : TListItems;
  BufferListView : TCustomListView;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
 BufferListView := TCustomListView.CreateParented(handle);
 BufferItems := TListItems.Create(BufferListView);
 BufferItems.BeginUpdate;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 BufferListView.free;
end;

procedure TForm1.CopyButtonClick(Sender: TObject);
// Copy Item
var lp0 : integer;
begin
 BufferItems.Clear;
 for lp0 := 0 to ListView1.Items.Count-1 do begin
  if ListView1.Items[lp0].Selected then begin
   BufferItems.Add.Assign(ListView1.Items[lp0]);
  end;
 end;
end;

procedure TForm1.PasteButtonClick(Sender: TObject);
// Paste
var lp0,idx : integer;
begin
 if Assigned(ListView1.Selected) then begin
  idx := ListView1.Selected.Index;
  for lp0 := 0 to BufferItems.Count-1 do begin
   ListView1.Items.Insert(idx).Assign(BufferItems[lp0]);
  end;
 end else begin
  for lp0 := 0 to BufferItems.Count-1 do begin
   ListView1.Items.Add.Assign(BufferItems[lp0]);
  end;
 end;
end;

procedure TForm1.CutButtonClick(Sender: TObject);
// Cut
var lp0 : integer;
begin
 BufferItems.Clear;
 for lp0 := ListView1.Items.Count-1 downto 0 do begin
  if ListView1.Items[lp0].Selected then begin
   BufferItems.Add.Assign(ListView1.Items[lp0]);
   ListView1.Items[lp0].Delete;
  end;
 end;
end;

end.
0
 

Author Comment

by:shekou
ID: 2703094
Thank you very probie, it works fine.

Rgds

Shekou
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Introduction I have seen many questions in this Delphi topic area where queries in threads are needed or suggested. I know bumped into a similar need. This article will address some of the concepts when dealing with a multithreaded delphi database…
Excel styles will make formatting consistent and let you apply and change formatting faster. In this tutorial, you'll learn how to use Excel's built-in styles, how to modify styles, and how to create your own. You'll also learn how to use your custo…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

707 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now