::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2003-03-06 21:36:41, Hit : 5486, Vote : 1282
 두개의 RichEdit 사이에 내용 복사하기

// 아래의 소스을 clCopyRTF.pas 파일로 만들어서 unit으로 사용하세요

unit clCopyRTF;

{written by Mike Orriss (mjo@3kcc.co.uk)

This unit provides a simple method of copying RTF text
between two RichEdit controls (see CopyRTF procedure below).

Data copied will be the source selected text or the whole
source if there is none selected.

The copied data will replace the destination selected text
or be inserted at the current caret position
}

interface

uses Windows,Classes,ComCtrls,richedit;

procedure CopyRTF(source,dest: TRichEdit);

implementation

{$IFNDEF VER120}
type TEditStreamCallBack = function (dwCookie: Longint; pbBuff: PByte;
                                     cb: Longint; var pcb: Longint): Longint; stdcall;

  TEditStream = record
    dwCookie: Longint;
    dwError: Longint;
    pfnCallback: TEditStreamCallBack;
  end;
{$ENDIF}

//---------------------------------------------------------------------------//
function InCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall;
var stream: TStream;
var bytes: LongInt;
begin
  stream := TStream(dwCookie);
  bytes := stream.Size-stream.Position;
  if bytes > cb then bytes := cb;
  pcb := stream.Read(pbBuff^,bytes);
  Result := 0;
end;

//---------------------------------------------------------------------------//
function OutCallback(dwCookie: Longint; pbBuff: PByte; cb: Longint; var pcb: Longint): Longint; stdcall;
begin
  if cb > 0 then pcb := TStream(dwCookie).Write(pbBuff^,cb);
  Result := 0;
end;

//---------------------------------------------------------------------------//
procedure GetRTF(re: TRichEdit; stream: TStream);
var editstream: TEditStream;
begin
  editstream.dwCookie:= Longint(stream);
  editstream.dwError:= 0;
  editstream.pfnCallback:= OutCallBack;
  re.Perform(EM_STREAMOUT,SF_RTF or SFF_SELECTION,longint(@editstream));
  stream.Position := 0;
end;

//---------------------------------------------------------------------------//
procedure PutRTF(re: TRichEdit; stream: TStream);
var editstream: TEditStream;
begin
  editstream.dwCookie:= Longint(stream);
  editstream.dwError:= 0;
  editstream.pfnCallback:= InCallBack;
  re.Perform(EM_STREAMIN,SF_RTF or SFF_SELECTION,longint(@editstream));
end;

//---------------------------------------------------------------------------//
procedure CopyRTF(source,dest: TRichEdit);
var mstream: TMemoryStream;
begin
  if source.GetTextLen=0 then exit;

  mstream := TMemoryStream.Create;
  try
    if source.SelLength=0 then begin
      source.SelStart := 0;
      source.SelLength := source.GetTextLen;
    end;
    GetRTF(source,mstream);
    PutRTF(dest,mstream);
  finally
    mstream.Free;
  end;
end;

end.





651   [데이터베이스] DBGrid 에서 선택된 필드의 타이틀을 굵게  김영대 2003/03/04 4751 1296
650   [윈도우즈 API] 클립보드의 내용을 파일로 저장하기  김영대 2003/03/04 4452 1295
649   [일반/컴포넌트] Treeview의 수평 스크롤바 감추고 스크롤 막기  김영대 2006/03/22 5689 1293
648   [시스템] 윈도우즈 전체의 마우스/키보드 입력 금지  김영대 2003/03/29 5106 1293
647   [윈도우즈 API] Windows 가 Shutdown 되는지 검사하기  김영대 2003/03/04 4300 1293
646   [시스템] 여러개의 DOS 명령어를 차례데로 실행하기  김영대 2004/10/21 6429 1292
645   [일반/컴포넌트] RichEdit 에 URL link 만들기  김영대 2004/08/04 5815 1292
644   [윈도우즈 API] 현재 키보드 입력 언어 구하기  김영대 2004/07/24 4833 1291
643   [윈도우즈 API] Windows Desktop에 직접 그림을 그리고(draw) 지우기(refresh)  김영대 2003/03/04 4650 1290
642   [시스템] 파일의 소유자와 도메인 구하기2  김영대 2004/09/25 4735 1287
641   [윈도우즈 API] PrintScreen(PrtSc)키의 동작 막기  김영대 2003/03/07 5767 1287
640   [윈도우즈 API] 다른 프로그램의 구동 디렉토리 알아내기  김영대 2003/03/07 4788 1287
639   [일반/컴포넌트] TOpenDialog 의 '선택','취소' 버튼 이름 바꾸기  김영대 2003/03/07 4184 1287
638   [일반/컴포넌트] Access Violation at address ?????? 로부터 소스위치 알기  김영대 2003/03/07 6646 1286
637   [윈도우즈 API] 윈도우즈 탐색기에서 "Copy" 될 파일목록 구하기  김영대 2003/03/07 4886 1286
636   [시스템] 프로그램에서 화면모드 변경하기  김영대 2003/03/04 4696 1286
635   [일반/컴포넌트] ListView의 타이틀 폰트 바꾸기  김영대 2005/03/31 5406 1285
634   [시스템] 윈도우즈 화면 잠그기  김영대 2004/08/03 5080 1285
633   [COM/OLE] TWebBrowser에서 JavaScript 호출하기2  김영대 2004/10/10 6348 1284
632   [시스템] 파일이 다른 프로그램에 의해 사용중인지 검사  김영대 2003/03/07 5840 1283
631   [시스템] 한글 한 음절을 초성,중성,종성 음소로 분해하기('김' => 'ㄱ'+'ㅣ'+'ㅁ')  김영대 2004/10/22 8006 1282
630   [윈도우즈 API] 4가지 윈도우즈 관련 폴더의 path 구하기  김영대 2003/04/08 5711 1282
  [일반/컴포넌트] 두개의 RichEdit 사이에 내용 복사하기  김영대 2003/03/06 5486 1282
628   [COM/OLE] IE의 속성을 변경하여 뛰우기  김영대 2006/02/28 5505 1281
627   [일반/컴포넌트] 객체의 valid검사 Assigned() 대체  김영대 2005/07/29 4927 1281
626   [시스템] 드라이브 포맷(Format) API 함수  김영대 2003/03/04 4741 1281
625   [일반/컴포넌트] MIME 타입에 해당하는 파일 확장자 구하기  김영대 2004/11/18 4823 1279
624   [윈도우즈 API] Canvas의 색상수  김영대 2003/03/04 4142 1279
623   [일반/컴포넌트] StringGrid의 Cell에 입력 값 제한 하기  김영대 2003/03/04 5981 1279
622   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4123 1276
621   [일반/컴포넌트] 명령행 인자(command line argument) 사용하기  김영대 2003/03/05 4706 1276
620   [윈도우즈 API] 전체 화면(Full Screen) 만들기  김영대 2003/03/29 5003 1275
619   [일반/컴포넌트] 해상도(screen resolution)를 변경했는지 검사  김영대 2003/03/07 4545 1274
618   [네트웍/인터넷] 소켓의 전송크기는 얼마 ?  김영대 2003/03/05 5239 1274
617   [COM/OLE] ActiveForm의 OnDestroy 대용  김영대 2005/04/21 5473 1273
616   [COM/OLE] TWebBroswer 에서 오른쪽 마우스 클릭 막기  김영대 2004/11/24 5152 1272
615   [시스템] 윈도우즈에 설치된 모든 인증서(certificate) 정보 읽어오기  김영대 2004/10/29 5735 1272
614   [윈도우즈 API] 화면캡처하기 Delphi3.0에서...  김영대 2003/03/04 4743 1272
613   [윈도우즈 API] Windows error beep 켜기/끄기  김영대 2003/03/07 4467 1270
612   [네트웍/인터넷] 네트워크 공유 설정/공유 사용 권한/해제 하기 (Windows NT/2000)  김영대 2004/11/06 5544 1269

[1][2][3][4][5][6][7][8] 9 [10]..[25] [다음 10개]
 

Copyright 1999-2020 Zeroboard / skin by zero