안녕하세요.. 오늘은 질문을 많이 올리네요^^
Project 기한이 다 되어가는지^^
아무튼...^^
Sol>
이동 - MoveFile()
ex. MoveFile(PChar('C:zzztest.txt'), PChar('C:zzzmovetest.txt'));
삭제 - DeleteFile()
ex. DeleteFile(PChar('C:zzztest.txt'));
복사 - CopyFile()
마지막 인자가 False 일경우 화일이 존재할때 덮어쓴다
ex. CopyFile(PChar('C:zzztest.txt'), PChar('C:zzzcopytest.txt'), False);
는 아는데요.... 이것을 응용한 것을 알고 싶습니다.^^
메뉴에 이것을 넣으려고 합니다.
그러므로 file을 지정한 후 Copy를 선택한 후...
지정 장소에 넣어야 하는데..(Paste)해야 하느데.... 어떻게 해야 하나요?
읽어 주셔서 감사합니다.
- 델초보 RyanYun -
> 안녕하세요.. 오늘은 질문을 많이 올리네요^^
> Project 기한이 다 되어가는지^^
> 아무튼...^^
>
>
> Sol>
> 이동 - MoveFile()
> ex. MoveFile(PChar('C:zzztest.txt'), PChar('C:zzzmovetest.txt'));
>
> 삭제 - DeleteFile()
> ex. DeleteFile(PChar('C:zzztest.txt'));
>
> 복사 - CopyFile()
> 마지막 인자가 False 일경우 화일이 존재할때 덮어쓴다
> ex. CopyFile(PChar('C:zzztest.txt'), PChar('C:zzzcopytest.txt'), False);
>
> 는 아는데요.... 이것을 응용한 것을 알고 싶습니다.^^
> 메뉴에 이것을 넣으려고 합니다.
> 그러므로 file을 지정한 후 Copy를 선택한 후...
> 지정 장소에 넣어야 하는데..(Paste)해야 하느데.... 어떻게 해야 하나요?
>
> 읽어 주셔서 감사합니다.
> - 델초보 RyanYun -
일반적인 윈도우 탐색기 기능을 구현하도록 하면 되겠죠??
즉 ,
복사하기 + 붙이기 => 복사
잘라내기 + 붙이기 => 이동
마침 전에 짜두었던 소스가 있네요.. 참고하세요..
procedure Tfrm_064.N_copy_fil_p3Click(Sender: TObject);
var
i , copy_count : Integer ;
i_pos : Integer ;
begin
// 1. 내컴퓨터의 파일을 복사 혹은 잘라내기할 목록을 만든다
// 복사할 리스트만 간직한다
if fil_p3.SelCount = 0 then
begin
Application.MessageBox( '복사할 파일을 먼저 선택하십시요 '
, ' 알림 ' , MB_OK) ;
SET_POPUP_ITEM_ENABLE ( Pop_fil_p3) ;
exit ;
end ;
for i_pos := 0 to Pop_fil_p3.Items.Count - 1 do
begin
if (Pop_fil_p3.Items[i_pos].GetNamePath = 'N_paste_fil_p3') or
(Pop_fil_p3.Items[i_pos].GetNamePath = 'N_fresh_fil_p3') or
(Pop_fil_p3.Items[i_pos].GetNamePath = 'N_copy_fil_p3') then
begin
Pop_fil_p3.Items[i_pos].Enabled := True ;
end
else
begin
Pop_fil_p3.Items[i_pos].Enabled := False ;
end ;
end ;
GP_CLIENT_COPYFILE_LIST ( fil_p3 , copy_list , copy_file_list ) ;
// 복사할 리스트를 간직한다
procedure GP_CLIENT_COPYFILE_LIST ( VAR FIL : TFILELISTBOX ;
VAR COPY_LIST : TSTRINGS ;
VAR COPY_FILE_LIST : TSTRINGS ) ;
// client file-copy lists
var
i , copy_count : Integer ;
i_pos : Integer ;
begin
COPY_LIST.Clear ;
// list를 지운다
COPY_FILE_LIST.Clear ;
copy_count := 0 ;
for i := 0 to FIL.Items.Count - 1 do
begin
if FIL.Selected[i] then
begin
if Copy( FIL.Directory ,
Length(FIL.Directory),
1) = '' then
begin
COPY_LIST.Add(FIL.Directory + FIL.Items.Strings[i] ) ;
end
else
begin
COPY_LIST.Add(FIL.Directory + '' + FIL.Items.Strings[i] ) ;
end ;
COPY_FILE_LIST.Add(FIL.Items.Strings[i]) ;
FIL.Selected[i] := False ;
end ;
end ;
end ;
procedure Tfrm_064.N_cut_fil_p3Click(Sender: TObject);
var
i , cut_count : Integer ;
i_pos : Integer ;
begin
// 1. 내컴퓨터의 파일을 복사 혹은 잘라내기할 목록을 만든다
// 복사할 리스트만 간직한다
if fil_p3.SelCount = 0 then
begin
Application.MessageBox( '잘라내기할 파일을 먼저 선택하십시요 '
, ' 알림 ' , MB_OK) ;
SET_POPUP_ITEM_ENABLE ( Pop_fil_p3 ) ;
exit ;
end ;
for i_pos := 0 to Pop_fil_p3.Items.Count - 1 do
begin
if (Pop_fil_p3.Items[i_pos].GetNamePath = 'N_paste_fil_p3') or
(Pop_fil_p3.Items[i_pos].GetNamePath = 'N_fresh_fil_p3') or
(Pop_fil_p3.Items[i_pos].GetNamePath = 'N_cut_fil_p3') then
begin
Pop_fil_p3.Items[i_pos].Enabled := True ;
end
else
begin
Pop_fil_p3.Items[i_pos].Enabled := False ;
end ;
end ;
GP_CLIENT_COPYFILE_LIST ( fil_p3 , copy_list , copy_file_list ) ;
end;
procedure Tfrm_064.N_paste_fil_p3Click(Sender: TObject);
var
i_pos , i : Integer ;
begin
// 1. 내컴퓨터의 파일을 복사 혹은 잘라내기한다
// 팝업메뉴중 잘라내기가 활성화되어 있다면
// 파일의 이동으로 처리한다
// 팝업메뉴중 복사내기가 활성화되어 있다면
// 파일의 복사로 처리한다
if (copy_list.Count = 0) then
begin
Application.MessageBox ('선택한 파일이 없습니다' , '알림' , MB_OK ) ;
exit ;
end ;
for i_pos := 0 to Pop_fil_p3.Items.Count - 1 do
begin
if (Pop_fil_p3.Items[i_pos].GetNamePath = 'N_cut_fil_p3') then
begin
if Pop_fil_p3.Items[i_pos].Enabled then
// 잘라내기가 활성화되어 있다면
begin
GP_CLIENT_MOVE_FILE ( fil_p3 , copy_list , copy_file_list ) ;
//SET_MOVEFILE ;
// 처리하기
end ;
end
else if (Pop_fil_p3.Items[i_pos].GetNamePath = 'N_copy_fil_p3') then
begin
if Pop_fil_p3.Items[i_pos].Enabled then
// 복사하기가 활성화되어 있다면
begin
GP_CLIENT_COPY_FILE ( fil_p3 , copy_list , copy_file_list ) ;
// 처리하기
end ;
end ;
end ;
for i := 0 to Pop_fil_p3.Items.Count - 1 do
// 원상태로 enable
begin
Pop_fil_p3.Items[i].Enabled := True ;
end ;
end;
procedure GP_CLIENT_COPY_FILE ( VAR FIL : TFILELISTBOX ;
VAR COPY_LIST : TSTRINGS ;
VAR COPY_FILE_LIST : TSTRINGS ) ;
// client files move
var
i : Integer ;
begin
for i := 0 to (COPY_LIST.Count - 1) do
begin
Try
if Copy( FIL.Directory ,
Length(FIL.Directory),
1) = '' then
begin
CopyFile(PChar( COPY_LIST.Strings[i])
, PChar( FIL.directory + COPY_FILE_LIST.Strings[i]) , False );
end
else
begin
CopyFile(PChar( COPY_LIST.Strings[i])
, PChar( FIL.directory + '' + COPY_FILE_LIST.Strings[i]) , False );
end ;
Except
On E:EXCEPTION do
Application.MessageBox ( ' 파일복사에 실패했습니다 ' +chr(13) + chr(13) +
' 다시 시도하십시요 ' , ' 알림 ' , MB_OK ) ;
End ;
end ;
FIL.Update ;
end ;
procedure GP_CLIENT_MOVE_FILE ( VAR FIL : TFILELISTBOX ;
VAR COPY_LIST : TSTRINGS ;
VAR COPY_FILE_LIST : TSTRINGS ) ;
// client files copy
var
i : Integer ;
begin
for i := 0 to (COPY_LIST.Count - 1) do
begin
Try
if Copy( FIL.Directory ,
Length(FIL.Directory),
1) = '' then
begin
MoveFile(PChar( COPY_LIST.Strings[i] )
, PChar( FIL.directory + COPY_FILE_LIST.Strings[i]));
end
else
begin
MoveFile(PChar( COPY_LIST.Strings[i] )
, PChar( FIL.directory + '' + COPY_FILE_LIST.Strings[i]));
end ;
Except
On E:EXCEPTION do
Application.MessageBox ( ' 파일이동에 실패했습니다 ' +chr(13) + chr(13) +
' 다시 시도하십시요 ' , ' 알림 ' , MB_OK ) ;
End ;
end ;
FIL.Update ;
end ;