unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls;
type
TForm1 = class(TForm)
ListView1: TListView;
procedure ListView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure SimulateKeystroke(VirtualKey: byte; ScanCode: DWORD);
begin
// keybd_event ÇÔ¼ö¸¦ »ç¿ëÇÑ Å° Á¶ÇÕ(down, up) ¹ß»ý
keybd_event(VirtualKey, // ŰÀÇ down
ScanCode,
0,
0);
keybd_event(VirtualKey, // ŰÀÇ up
ScanCode,
KEYEVENTF_KEYUP,
0);
end;
procedure SimulateKeyDown(Key : byte);
begin
// keybd_event ÇÔ¼ö¸¦ »ç¿ëÇÑ Å° down ¹ß»ý
keybd_event(Key, 0, 0, 0);
end;
procedure SimulateKeyUp(Key : byte);
begin
// keybd_event ÇÔ¼ö¸¦ »ç¿ëÇÑ Å° up ¹ß»ý
keybd_event(Key, 0, KEYEVENTF_KEYUP, 0);
end;
procedure TForm1.ListView1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = VK_F2 then
ListView1.Selected.EditCaption; // ListView ÀÇ itemÀ» edit mode »óÅ·Π¹Ù²Û´Ù
end;
procedure TForm1.ListView1Edited(Sender: TObject; Item: TListItem;
var S: String);
var
FindItem: TListItem;
begin
if Trim(S) = '' then // »ç¿ëÀÚ°¡ °ªÀ» ÀԷ¾ÈÇÔ
S := Item.Caption
else
begin
FindItem := ListView1.FindCaption(0, S, False, True, False);
if FindItem <> nil then // Áߺ¹°Ë»ç
begin
MessageDlg('ÀÌ¹Ì Á¸ÀçÇÏ´Â °ªÀÔ´Ï´Ù.',mtInformation,[mbOk],0);
S := Item.Caption;
SimulateKeystroke(VK_F2, 0); // F2 ۸¦ ¹ß»ý½ÃŲ´Ù
System.Exit;
end
else
begin
Item.Caption := S;
end;
end;
ListView1.SetFocus;
end;
end. |
|