C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[49783] Re:처음 입문입니다. 도와주세요... Grid에서 Copy Paste 구현
장성호 [nasilso] 1730 읽음    2007-07-02 21:40
코딩없이 바로 구현되는 StringGrid는 모르겠습니다.
TStringGrid에서 지원하는지도 모르겠구요

그렇지만 KeyPress이벤트를 이용해 간단히 구현할수 있습니다.

샘플코드에서 sg1  , sg2   는 TStringGrid 입니다.

//---------------------------------------------------------------------------
void __fastcall TForm1::sg1KeyPress(TObject *Sender, char &Key)  // 클립보드에 복사
{
    if(Key==0x03)
    {
        TStringList *sl=new TStringList;

        TGridRect gc=sg1->Selection;

        String str;
        for(int h=gc.Top;h<=gc.Bottom;h++)
        {
            str="";
            for(int i=gc.Left;i<=gc.Right;i++)
            {
                str=str+sg1->Cells[i][h]+"\t";
            }
            sl->Add(str);
        }

        Clipboard()->SetTextBuf(sl->Text.c_str());
        delete sl;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::sg2KeyPress(TObject *Sender, char &Key)  // 클립보드에 가져와서 붙여넣기
{
    if(Key==0x16)
    {
        if(!Clipboard()->HasFormat(CF_TEXT ))return;

        String str=Clipboard()->AsText;

        TStringList *sl=new TStringList;

        sl->Text=str;

        TGridRect gc=sg2->Selection;


        TStringList *sd=new TStringList;
        for(int h=0;h<sl->Count;h++)
        {

            sd->Delimiter='\t';
            sd->DelimitedText=sl->Strings[h];
            for(int i=0;i<sd->Count;i++)
            {
                sg2->Cells[gc.Left+i][gc.Top+h]=sd->Strings[i];
            }
        }

        delete sl;
        delete sd;
    }
}
//---------------------------------------------------------------------------


클립보드에 복사가 되면 당연히 excel에 붙여넣기에는 문제가 없습니다.
또한 Excel에서 복사한것도 클립보드에 들어가게 되므로
클립보드에서 가져와서 grid에 붙여넣기도 문제없구요

다른 모든 윈도우 프로그램  text는 copy paste가 됩니다.





깡이 님이 쓰신 글 :
: 안녕하세요.
: 처음 C++빌더를 프로젝트로 접하면서 맨땅에 해딩하고 있습니다. ^^;;
: 도와주세요~~~~ ㅜ.ㅜ 급급!!!!
:
: 질문!!
:
: stringGrid 의 데이터를 윈도우에서 사용 하듯이
: 마우스로 정해서(셀을 긁어서...) CTRL + C, CTRL + V (stringGrid <-> StringGrid, StringGrid <-> Excel)
: 을 사용하고자 합니다.
: 현재 제가 가지고 있는 프로젝트에는 위의 기능이 가능한 그리드를 보면
: 코드로서 막거나, 이벤트 처리해준 내용이 없습니다.
: (2개의 그리드 중 1개의 그리드는 위의 기능 가능, 1개의 그리드는 불가능 상태)
:
: 혹시 프로퍼티 조정으로 가능한가요?!
: window key 가 가능한 그리드의 속성을 일치하게 전부 맞추어줘봐도...똑같이 이루어 지지 않는군요.
: 어떤 옵션을 주어야 가능한지 모르겠습니다.
:
: 2번 질문. 그리드 생성 한 후에..
: 필드명을 입력하고자 합니다.
: 그리드에 하드하게 박아주는것 같던데... 어떤 메뉴를 통해서인가요.
:
: 너무나 초보적인 질문인지는 모르겠습니다만...
: 시간을 너무 지체하기보단 고수님들의 조언을 얻고자 합니다.
: 감사합니다. ㅜ.ㅜ

+ -

관련 글 리스트
49782 처음 입문입니다. 도와주세요..ㅠ.ㅠ 급!!! Grid... 깡이 1213 2007/07/02
49787     Re:처음 입문입니다. 도와주세요..ㅠ.ㅠ 급!!! Grid... 깡이 1037 2007/07/03
49785     Re:처음 입문입니다. 도와주세요..ㅠ.ㅠ 급!!! Grid... 외랑 1120 2007/07/03
49783     Re:처음 입문입니다. 도와주세요... Grid에서 Copy Paste 구현 장성호 1730 2007/07/02
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.