1168
개발자 안내서 볼랜드 코리아 주식회사 서울특별시 강남구 삼성동 159-1 ASEM 타워 30 연락처 :(02)6001-3162 www.borlandkorea.co.kr %RUODQG 'HOSKL :LQGRZV

개발자 안내서cfs6.tistory.com/upload_control/download.blog?f... · 개발자 안내서 볼랜드 코리아 주식회사 서울특별시 강남구 삼성동 159-1 ASEM 타워

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

  • 개발자 안내서

    볼랜드 코리아 주식회사서울특별시 강남구 삼성동 159-1 ASEM 타워 30층연락처 :(02)6001-3162www.borlandkorea.co.kr

    ��������

    �������������용

  • ����������������������������������������� !

    �����"#���$�%�&'���(����$)��*+,-�.$���/�� !

    COPYRIGHT © 1997, 2001 Borland Software Corporation. All rights reserved. All Borland brand and product names are trademarks or registered trademarks of Borland Software Corporation in the United States and other countries. Other product names are trademarks or registered trademarks of their respective holders.

    01�23��45�67859:;=?@A�9:;=?=

    ����������������BCD59:;=??

    �������

    �EF�GH2�IJK�=L?;=�ASEM MN�>9 O

  • ���

    1 장

    서문 1-1설명서 내용 . . . . . . . . . . . . . . 1-1설명서 규칙 . . . . . . . . . . . . . . 1-3개발자 지원 서비스 . . . . . . . . . . . 1-3인쇄된 설명서 주문 . . . . . . . . . . . 1-3

    1 부 Delphi 프로그래밍

    2 장

    Delphi를 사용한 애플리케이션 개발 2-1

    통합 개발 환경 . . . . . . . . . . . . . 2-1애플리케이션 디자인. . . . . . . . . . . 2-2애플리케이션 개발 . . . . . . . . . . . 2-3프로젝트 생성 . . . . . . . . . . . . 2-3코드 편집 . . . . . . . . . . . . . . 2-4애플리케이션 컴파일 . . . . . . . . . 2-4애플리케이션 디버깅 . . . . . . . . . 2-5애플리케이션 배포 . . . . . . . . . . 2-5

    3 장

    컴포넌트 라이브러리 사용 3-1

    컴포넌트 라이브러리 이해 . . . . . . . . 3-1속성, 메소드 및 이벤트 . . . . . . . . 3-2속성 . . . . . . . . . . . . . . . 3-2메소드 . . . . . . . . . . . . . . 3-3이벤트 . . . . . . . . . . . . . . 3-3사용자 이벤트 . . . . . . . . . . . 3-3시스템 이벤트 . . . . . . . . . . . 3-4

    오브젝트 파스칼 및 클래스 라이브러리 . . . 3-4객체 모델 사용 . . . . . . . . . . . . 3-4객체의 개념 . . . . . . . . . . . . 3-5Delphi 객체 살펴 보기 . . . . . . . 3-5컴포넌트 이름 변경. . . . . . . . . 3-7

    객체로부터 데이터와 코드 상속 . . . . . 3-8유효 범위(scope) 및 한정자 . . . . . . 3-8

    private, protected, public, published 선언. . . . . . . . . . 3-9

    객체 변수 사용 . . . . . . . . . . . 3-10객체 생성, 인스턴스화 및 소멸 . . . . 3-11컴포넌트와 소유권 . . . . . . . . . 3-12

    객체, 컴포넌트 및 컨트롤. . . . . . . . 3-12

    TObject 분기 . . . . . . . . . . . . 3-14TPersistent 분기 . . . . . . . . . . 3-14TComponent 분기. . . . . . . . . . 3-15TControl 분기. . . . . . . . . . . . 3-16TWinControl/TWidgetControl 분기 . . 3-17TControl의 공통 속성 . . . . . . . . 3-18액션 속성 . . . . . . . . . . . . 3-18위치, 크기 및 정렬 속성 . . . . . . 3-19표시 속성 . . . . . . . . . . . . 3-19부모 속성 . . . . . . . . . . . . 3-19탐색 속성 . . . . . . . . . . . . 3-19드래그 앤 드롭 속성 . . . . . . . . 3-20드래그 앤 도킹 속성(VCL 전용) . . . 3-20

    TControl의 표준 공통 이벤트 . . . . . 3-20TWinControl 및 TWidgetControl의 공통 속성 . . . . . . . . . . . . . 3-21일반 정보 속성 . . . . . . . . . . 3-21테두리 스타일 표시 속성 . . . . . . 3-22탐색 속성 . . . . . . . . . . . . 3-22드래그 앤 도킹 속성(VCL 전용) . . . 3-22

    TWinControl 및 TWidgetControl의 공통 이벤트 . . . . . . . . . . . . 3-22애플리케이션 사용자 인터페이스 만들기 3-23Delphi 컴포넌트 사용 . . . . . . . . 3-24컴포넌트 속성 설정 . . . . . . . . . 3-24

    Object Inspector 사용. . . . . . . 3-25속성 편집기 사용 . . . . . . . . . 3-25런타임 시 속성 설정 . . . . . . . . 3-25

    메소드 호출 . . . . . . . . . . . . . 3-25이벤트 및 이벤트 핸들러 작업 . . . . . 3-26새 이벤트 핸들러 생성 . . . . . . . 3-26컴포넌트의 기본 이벤트에 대한 핸들러 생성 . . . . . . . . . . . 3-26이벤트 핸들러 찾기 . . . . . . . . 3-27이벤트를 기존 이벤트 핸들러에 연결 . 3-27메뉴 이벤트를 이벤트 핸들러에 연결 . 3-28이벤트 핸들러 삭제 . . . . . . . . 3-29

    VCL 및 CLX 컴포넌트. . . . . . . . . . 3-29컴포넌트 팔레트에 사용자 지정 컴포넌트 추가 . . . . . . . . . . . 3-31텍스트 컨트롤 . . . . . . . . . . . . 3-31텍스트 컨트롤 속성 . . . . . . . . 3-32메모 및 서식있는 텍스트 컨트롤의 속성 . . . . . . . . . . 3-32서식있는 텍스트 컨트롤(VCL 전용) . 3-33

    특수한 입력 컨트롤 . . . . . . . . . 3-33스크롤 막대 . . . . . . . . . . . 3-33

    목 차

  • ��

    트랙 표시줄 . . . . . . . . . . . 3-33Up-down 컨트롤(VCL 전용) . . . 3-34스핀 편집 컨트롤(CLX 전용) . . . . 3-34Hot key 컨트롤(VCL 전용) . . . . 3-34스플리터 컨트롤 . . . . . . . . . 3-34

    버튼 유형의 컨트롤 . . . . . . . . . 3-35버튼 컨트롤 . . . . . . . . . . . 3-35비트맵 버튼 . . . . . . . . . . . 3-36스피드 버튼 . . . . . . . . . . . 3-36체크 박스(Check box) . . . . . . 3-36라디오 버튼 . . . . . . . . . . . 3-37툴바 . . . . . . . . . . . . . . 3-37쿨바(VCL 전용) . . . . . . . . . 3-37

    목록 처리 . . . . . . . . . . . . . 3-38리스트 박스(List box)와 체크 리스트 박스(Check-list box). . . . . . 3-38콤보 박스(Combo box). . . . . . 3-39트리 뷰(Tree View) . . . . . . . 3-39리스트 뷰(List View) . . . . . . . 3-40날짜/시간 선택(Data-time picker)과 달력(Month calendar) (VCL 전용) 3-40

    컴포넌트 그룹화 . . . . . . . . . . 3-40그룹 상자와 라디오 그룹 . . . . . 3-41패널 . . . . . . . . . . . . . . 3-41스크롤 상자 . . . . . . . . . . . 3-41탭 컨트롤 . . . . . . . . . . . . 3-42페이지 컨트롤 . . . . . . . . . . 3-42헤더 컨트롤 . . . . . . . . . . . 3-42

    비주얼 피드백 제공 . . . . . . . . . 3-43레이블 및 정적 텍스트 컴포넌트 . . 3-43상태 표시줄(Status bar) . . . . . 3-43진행 표시줄(Progress bar) . . . . 3-44도움말과 힌트 속성. . . . . . . . 3-44

    그리드 . . . . . . . . . . . . . . 3-44그리기 그리드 . . . . . . . . . . 3-44문자열 그리드 . . . . . . . . . . 3-45

    값 목록 편집기(VCL 전용) . . . . . . 3-45그래픽 표시 . . . . . . . . . . . . 3-46이미지 . . . . . . . . . . . . . 3-46도형(Shape) . . . . . . . . . . 3-46빗면(Bevel) . . . . . . . . . . . 3-46그리기 상자 . . . . . . . . . . . 3-47애니메이션 컨트롤(VCL 전용) . . . 3-47

    대화 상자 개발 . . . . . . . . . . . 3-47열린 대화 상자 사용 . . . . . . . 3-48

    helper 객체 사용 . . . . . . . . . . . 3-48목록 사용 . . . . . . . . . . . . . 3-49문자열 목록 사용 . . . . . . . . . . 3-49문자열 목록의 로드 및 저장 . . . . 3-50

    새 문자열 목록 작성 . . . . . . . . 3-50목록에서 문자열 처리 . . . . . . . 3-52문자열 목록에 객체 연결 . . . . . . 3-54

    Windows 레지스트리 및 INI 파일(VCL 전용) . . . . . . . . . . 3-54

    TIniFile 사용(VCL 전용) . . . . . . 3-55TRegistry 사용 . . . . . . . . . . 3-55TRegIniFile 사용 . . . . . . . . . 3-56

    드로잉 공간 만들기 . . . . . . . . . 3-56인쇄 . . . . . . . . . . . . . . . . 3-57스트림 사용 . . . . . . . . . . . . . 3-57

    4 장

    일반적인 프로그래밍 작업 4-1

    클래스 이해 . . . . . . . . . . . . . . 4-1클래스 정의 . . . . . . . . . . . . . . 4-2예외 처리 . . . . . . . . . . . . . . . 4-4코드 블록 보호 . . . . . . . . . . . 4-4예외에 대한 응답 . . . . . . . . . 4-5예외와 제어 흐름 . . . . . . . . . 4-6예외 응답 중첩 . . . . . . . . . . 4-6

    리소스 할당 보호 . . . . . . . . . . 4-7보호가 필요한 리소스 종류 . . . . . 4-7리소스 보호 블록 만들기 . . . . . . 4-8

    RTL(Run-Time Library) 예외 처리 . . 4-9RTL 예외 . . . . . . . . . . . . 4-9예외 핸들러 작성 . . . . . . . . . 4-10예외 처리 문장 . . . . . . . . . . 4-10예외 인스턴스 사용 . . . . . . . . 4-11예외 핸들러의 범위 . . . . . . . . 4-12기본 예외 핸들러 제공 . . . . . . . 4-12예외 클래스 다루기 . . . . . . . . 4-13예외 재발생 . . . . . . . . . . . 4-13

    컴포넌트 예외 처리 . . . . . . . . . 4-14외부 소스를 사용한 예외 처리 . . . . . 4-14예외 숨기기(Silent exceptions) . . . . 4-15사용자 고유의 예외 정의 . . . . . . . 4-16예외 객체 타입 선언 . . . . . . . . 4-16예외 발생 . . . . . . . . . . . . 4-16

    인터페이스 사용 . . . . . . . . . . . . 4-17랭귀지 기능의 인터페이스. . . . . . . 4-17클래스 간의 인터페이스 공유 . . . . 4-18프로시저와 함께 인터페이스 사용 . . 4-19

    IInterface 구현 . . . . . . . . . . . 4-20TInterfacedObject . . . . . . . . . 4-20as 연산자 사용 . . . . . . . . . . . 4-21코드 재사용 및 위임(Delegation) . . . 4-22위임을 위한 implements 사용 . . . 4-22

  • 추상화(Aggregation). . . . . . . 4-23인터페이스 객체의 메모리 관리 . . . . 4-24참조 카운팅 사용. . . . . . . . . 4-24참조 카운팅을 사용하지 않음 . . . 4-25

    분산 애플리케이션에서 인터페이스 사용(VCL 전용) . . . . . . . . . . 4-26

    사용자 지정 가변 정의 . . . . . . . . . 4-27사용자 지정 가변 타입 데이터 저장 . . 4-27사용자 지정 가변 타입을 활성화하기 위한 클래스 생성 . . . . . . . . . 4-28타입 변환 활성화. . . . . . . . . 4-28이항 연산 구현. . . . . . . . . . 4-30비교 연산 구현. . . . . . . . . . 4-32단항 연산 구현. . . . . . . . . . 4-33사용자 지정 가변의 복사 및 지우기 . 4-34사용자 지정 가변 값 로드 및 저장. . 4-35TCustomVariantType 자손 사용 . . 4-36

    사용자 지정 가변 타입을 사용하는 유틸리티 작성 . . . . . . . . . . 4-36사용자 지정 가변의 지원 속성 및 메소드 4-37

    TInvokeableVariantType 사용 . . . 4-37TpublishableVariantType 사용 . . 4-39

    문자열 작업 . . . . . . . . . . . . . 4-39문자 타입(Character types) . . . . . 4-39문자열 타입(String types) . . . . . . 4-40짧은 문자열 . . . . . . . . . . . 4-40긴 문자열 . . . . . . . . . . . . 4-41WideString . . . . . . . . . . . 4-41PChar 타입 . . . . . . . . . . . 4-42OpenString . . . . . . . . . . . 4-42

    런타임 라이브러리 문자열 처리 루틴 . 4-42와이드 문자 루틴. . . . . . . . . 4-43일반적으로 사용되는 긴 문자열 루틴 4-43

    문자열 선언 및 초기화. . . . . . . . 4-46문자열 타입의 혼합 및 변환 . . . . . 4-47문자열에서 PChar로 변환 . . . . . . 4-47문자열 종속성 . . . . . . . . . . 4-47PChar 지역 변수 반환 . . . . . . 4-48지역 변수를 PChar로 전달 . . . . 4-48

    문자열에 대한 컴파일러 지시어 . . . . 4-49문자열과 문자: 관련 주제 . . . . . . 4-50

    파일 작업 . . . . . . . . . . . . . . 4-50파일 처리 . . . . . . . . . . . . . 4-51파일 삭제 . . . . . . . . . . . . 4-51파일 찾기 . . . . . . . . . . . . 4-51파일 이름 재지정. . . . . . . . . 4-53파일 date-time 루틴. . . . . . . 4-53파일 복사 . . . . . . . . . . . . 4-53

    파일 I/O와 파일 형식 . . . . . . . . 4-54

    파일 스트림 사용 . . . . . . . . . . 4-54파일 생성 및 열기 . . . . . . . . . 4-55파일 핸들 사용 . . . . . . . . . . 4-56파일 읽기 및 쓰기 . . . . . . . . . 4-56문자열 읽기 및 쓰기 . . . . . . . . 4-57파일 찾기 . . . . . . . . . . . . 4-57파일 위치 및 크기 . . . . . . . . . 4-58복사. . . . . . . . . . . . . . . 4-58

    측정 변환 . . . . . . . . . . . . . . . 4-59변환 수행 . . . . . . . . . . . . . . 4-59간단한 변환 수행 . . . . . . . . . 4-59복잡한 변환 수행 . . . . . . . . . 4-59

    새 측정 타입 추가 . . . . . . . . . . 4-60간단한 변환 패밀리 생성과 단위 추가 4-60변환 함수 사용 . . . . . . . . . . 4-61클래스를 사용한 변환 관리 . . . . . 4-63

    데이터 타입 정의 . . . . . . . . . . . . 4-66

    5 장

    애플리케이션, 컴포넌트, 라이브러리 구축 5-1

    애플리케이션 생성 . . . . . . . . . . . 5-1GUI 애플리케이션 . . . . . . . . . . 5-1사용자 인터페이스 모델 . . . . . . 5-2SDI 애플리케이션 . . . . . . . . . 5-2MDI 애플리케이션. . . . . . . . . 5-2IDE, 프로젝트 및 컴파일 옵션 설정 . 5-3

    프로그래밍 템플릿 . . . . . . . . . . 5-3콘솔 애플리케이션 . . . . . . . . . . 5-3서비스 애플리케이션 . . . . . . . . . 5-4서비스 스레드 . . . . . . . . . . 5-6서비스 이름 속성 . . . . . . . . . 5-8서비스 디버깅 . . . . . . . . . . 5-8

    패키지와 DLL 생성 . . . . . . . . . . . 5-9패키지와 DLL 사용하는 경우 . . . . . 5-9

    데이터베이스 애플리케이션 개발 . . . . . 5-10분산 데이터베이스 애플리케이션 . . . . 5-11

    웹 서버 애플리케이션 만들기. . . . . . . 5-11Web Broker 사용 . . . . . . . . . . 5-11WebSnap 애플리케이션 만들기 . . . . 5-13InternetExpress 사용 . . . . . . . . 5-13Web Services 애플리케이션 만들기 . . 5-13

    COM을 사용한 애플리케이션 작성 . . . . 5-14COM과 DCOM 사용 . . . . . . . . . 5-14MTS및 COM+ 사용 . . . . . . . . . 5-15

    데이터 모듈 사용 . . . . . . . . . . . . 5-15표준 데이터 모듈 생성 및 편집 . . . . . 5-16데이터 모듈과 유닛 파일 이름 지정 . 5-16

  • ��

    컴포넌트 배치 및 이름 지정 . . . . 5-17데이터 모듈의 컴포넌트 속성 및 이벤트 사용 . . . . . . . . . . 5-18데이터 모듈에서 비즈니스 룰 만들기 5-18

    폼에서 데이터 모듈 액세스 . . . . . . 5-18원격 데이터 모듈을 애플리케이션 서버 프로젝트에 추가. . . . . . . . . . 5-19

    Object Repository 사용 . . . . . . . . 5-20프로젝트 내에서 항목 공유 . . . . . . 5-20항목 추가: Object Repository . . . . 5-20팀 환경에서 객체 공유. . . . . . . . 5-20프로젝트에서 Object Repository 항목 사용 . . . . . . . . . . . . . . . 5-21항목 복사 . . . . . . . . . . . . 5-21항목 상속 . . . . . . . . . . . . 5-21항목 사용 . . . . . . . . . . . . 5-21

    프로젝트 템플릿 사용 . . . . . . . . 5-21공유 항목 수정 . . . . . . . . . . . 5-22기본 프로젝트, 새 폼 및 메인 폼 지정 . 5-22

    애플리케이션에서 도움말 사용 . . . . . 5-22도움말 시스템 인터페이스 . . . . . . 5-23ICustomHelpViewer 구현 . . . . . . 5-24Help Manager와 통신. . . . . . . . 5-24Help Manager에 정보 요청 . . . . . 5-25키워드 방식 도움말 표시 . . . . . . . 5-25목차 표시 . . . . . . . . . . . . . 5-26IExtendedHelpViewer 구현 . . . . . 5-26IHelpSelector 구현 . . . . . . . . . 5-27도움말 시스템 객체 등록 . . . . . . . 5-28도움말 뷰어 등록. . . . . . . . . 5-28도움말 선택기 등록. . . . . . . . 5-28

    VCL 애플리케이션에서 도움말 사용 . . . 5-28TApplication이 VCL 도움말을 처리하는 방법 . . . . . . . . . . 5-29

    VCL 컨트롤의 도움말 처리 방법 . . . 5-29CLX 애플리케이션에서 도움말 사용 . . . 5-30

    TApplication이 CLX 도움말을 처리하는 방법 . . . . . . . . . . 5-30

    CLX 컨트롤의 도움말 처리 방법 . . . 5-30도움말 시스템 직접 호출 . . . . . . . . 5-31IHelpSystem 사용 . . . . . . . . . . 5-31IDE 도움말 시스템 사용자 지정 . . . . . 5-32

    6 장

    애플리케이션 사용자 인터페이스 개발 6-1

    애플리케이션 동작 제어 . . . . . . . . . 6-1메인 폼 사용 . . . . . . . . . . . . . 6-1폼 추가 . . . . . . . . . . . . . . . 6-2

    폼 연결 . . . . . . . . . . . . . 6-2순환 유닛 참조 방지 . . . . . . . . 6-2

    메인 폼 숨기기 . . . . . . . . . . . 6-3애플리케이션 레벨에서 작업 . . . . . . 6-3화면 처리 . . . . . . . . . . . . . . 6-3레이아웃 관리 . . . . . . . . . . . . 6-4

    이벤트 공지에 대한 응답. . . . . . . . . 6-5폼 사용 . . . . . . . . . . . . . . . . 6-6메모리에 상주하는 폼의 제어 . . . . . 6-6자동 생성된 폼 표시 . . . . . . . . 6-6동적으로 폼 생성 . . . . . . . . . 6-7창 같은 모달리스 폼 생성 . . . . . . 6-8로컬 변수로 폼 인스턴스 생성 . . . . 6-8

    폼에 추가 인수 전달 . . . . . . . . . 6-8폼에서 데이터 검색 . . . . . . . . . 6-9모달리스 폼에서 데이터 검색 . . . . 6-9모달 폼에서 데이터 검색 . . . . . . 6-11

    컴포넌트와 컴포넌트 그룹의 재사용 . . . . 6-12컴포넌트 템플릿 생성 및 사용 . . . . . . 6-13프레임 사용 . . . . . . . . . . . . . . 6-14프레임 생성 . . . . . . . . . . . . . 6-14컴포넌트 팔레트에 프레임 추가 . . . . 6-14프레임 사용 및 수정 . . . . . . . . . 6-15프레임 공유 . . . . . . . . . . . . . 6-16

    툴바 및 메뉴의 작업 구성 . . . . . . . . 6-16액션(action)의 개념 . . . . . . . . . 6-17액션 밴드 설정 . . . . . . . . . . . 6-18툴바 및 메뉴 생성 . . . . . . . . . . 6-19메뉴, 버튼 및 툴바에 색상, 패턴 또는 그림 추가 . . . . . . . . . 6-20메뉴 및 툴바에 아이콘 추가 . . . . . 6-21사용자가 사용자 정의할 수 있는 툴바 및 메뉴 생성 . . . . . . . . 6-21작업 밴드의 사용되지 않는 항목 및 범주 숨기기 . . . . . . . . . . . 6-22

    액션 리스트 사용 . . . . . . . . . . . . 6-23액션 리스트 설정 . . . . . . . . . . 6-23액션 실행 시 발생하는 이벤트 . . . . . 6-24이벤트에 응답 . . . . . . . . . . 6-24액션이 해당 대상을 찾는 방법 . . . . 6-26

    액션 업데이트 . . . . . . . . . . . . 6-26이미 정의된 액션 클래스 . . . . . . . 6-27액션 컴포넌트 작성 . . . . . . . . . 6-28액션 등록 . . . . . . . . . . . . . . 6-28

    메뉴 생성 및 관리 . . . . . . . . . . . 6-29메뉴 디자이너 열기 . . . . . . . . . 6-30메뉴 작성 . . . . . . . . . . . . . . 6-32메뉴 이름 지정 . . . . . . . . . . 6-32메뉴 항목 이름 지정 . . . . . . . . 6-32

  • ���

    메뉴 항목 추가, 삽입 및 삭제 . . . 6-33구분자 표시줄 추가. . . . . . . . 6-34가속키 및 단축키 지정 . . . . . . 6-34

    하위 메뉴 생성 . . . . . . . . . . . 6-34기존 메뉴를 밑으로 내려 하위 메뉴 생성 . . . . . . . . . . . 6-35메뉴 항목 이동. . . . . . . . . . 6-35메뉴 항목에 이미지 추가 . . . . . 6-36메뉴 보기 . . . . . . . . . . . . 6-37

    Object Inspector에서 메뉴 항목 편집 . 6-37메뉴 디자이너 컨텍스트 메뉴 사용 . . 6-37컨텍스트 메뉴의 명령 . . . . . . . 6-38디자인 타임 시 메뉴 간의 전환 . . . 6-38

    메뉴 템플릿 사용 . . . . . . . . . . 6-39메뉴를 템플릿으로 저장 . . . . . . . 6-40템플릿 메뉴 항목 및 이벤트 핸들러의 이름 지정 규칙 . . . . . 6-41

    런타임 시 메뉴 항목 처리 . . . . . . 6-41메뉴 병합 . . . . . . . . . . . . . 6-41활성 메뉴 지정: Menu 속성 . . . . 6-42병합된 메뉴 항목의 순서 결정:

    GroupIndex 속성 . . . . . . . . 6-42리소스 파일 import하기 . . . . . . . 6-42

    툴바 및 쿨바 디자인 . . . . . . . . . . 6-43패널 컴포넌트를 사용하여 툴바 추가 . 6-44패널에 스피드 버튼 추가 . . . . . 6-45스피드 버튼의 glyph 할당 . . . . . 6-45스피드 버튼의 초기 상태 설정 . . . 6-45스피드 버튼 그룹 생성 . . . . . . 6-46버튼 토글 허용. . . . . . . . . . 6-46

    툴바 컴포넌트를 사용하여 툴바 추가 . 6-46툴 버튼 추가 . . . . . . . . . . 6-47툴 버튼에 이미지 할당 . . . . . . 6-47툴 버튼 모양 및 초기 상태 설정 . . 6-47툴 버튼 그룹 생성 . . . . . . . . 6-48툴 버튼 토글 허용 . . . . . . . . 6-48

    쿨바 컴포넌트 추가 . . . . . . . . . 6-48쿨바 모양 설정. . . . . . . . . . 6-49

    클릭 이벤트에 응답 . . . . . . . . . 6-49툴 버튼에 메뉴 할당 . . . . . . . 6-49

    숨겨진 툴바 추가 . . . . . . . . . . 6-50툴바 숨기기 및 표시. . . . . . . . . 6-50데모 프로그램 . . . . . . . . . . . 6-50

    7 장

    컨트롤 사용 7-1

    컨트롤의 드래그 앤 드롭 구현 . . . . . . . 7-1드래그 연산 시작 . . . . . . . . . . . 7-1

    드래그된 항목 수용 . . . . . . . . . 7-2항목 드롭 . . . . . . . . . . . . . . 7-2드래그 연산 끝내기 . . . . . . . . . 7-3드래그 객체를 사용하여 드래그 앤 드롭 사용자 지정 . . . . . . . . . . . . 7-3드래그 마우스 포인터 변경 . . . . . . 7-4

    컨트롤에서 드래그 앤 드롭 구현 . . . . . 7-4윈도우 컨트롤을 도킹 공간으로 만들기 . 7-4컨트롤을 도킹 가능한 자식 컨트롤로 만들기 . . . . . . . . . . . . . . 7-5자식 컨트롤의 도킹 방법 제어 . . . . . 7-5자식 컨트롤이 도킹 해제되는 방법 제어 . 7-6자식 컨트롤이 드래그 앤 드롭 연산에 응답하는 방법 제어 . . . . . . . . . 7-6

    컨트롤에서 텍스트 사용 . . . . . . . . . 7-7텍스트 정렬 설정 . . . . . . . . . . 7-7런타임 시 스크롤 막대 추가 . . . . . . 7-8클립보드 객체 추가 . . . . . . . . . 7-8텍스트 선택 . . . . . . . . . . . . . 7-9모든 텍스트 선택 . . . . . . . . . . 7-9텍스트 잘라내기, 복사 및 붙여넣기 . . . 7-10선택한 텍스트 삭제 . . . . . . . . . 7-10메뉴 항목 비활성화 . . . . . . . . . 7-10팝업 메뉴 제공 . . . . . . . . . . . 7-11OnPopup 이벤트 처리 . . . . . . . . 7-12

    컨트롤에 그래픽 추가 . . . . . . . . . . 7-12컨트롤이 owner-raw 항목임을 표시 . . 7-13문자열 목록에 그래픽 객체 추가 . . . . 7-13애플리케이션에 이미지 추가 . . . . 7-14문자열 목록에 이미지 추가 . . . . . 7-14Owner-draw 항목 그리기 . . . . . 7-15

    Owner-draw 항목 크기 조정 . . . . . 7-15Owner-draw 항목 그리기 . . . . . . 7-16

    8 장

    그래픽 및 멀티미디어 작업 8-1

    그래픽 프로그래밍 개요 . . . . . . . . . 8-1화면 새로 고침 . . . . . . . . . . . 8-2그래픽 객체 형식 . . . . . . . . . . 8-3캔버스의 일반적인 속성과 메소드 . . . 8-4캔버스 객체의 속성 사용 . . . . . . . 8-5펜 사용 . . . . . . . . . . . . . 8-5브러시 사용 . . . . . . . . . . . 8-8픽셀 읽기 및 설정 . . . . . . . . . 8-9

    캔버스 메소드를 사용하여 그래픽객체 그리기 . . . . . . . . . . . . 8-10선 및 다각선 그리기 . . . . . . . . 8-10도형 그리기 . . . . . . . . . . . 8-11

  • ����

    애플리케이션에서 여러 드로잉 객체 처리 . . . . . . . . . . . . 8-12사용할 드로잉 툴 파악 . . . . . . 8-12스피드 버튼으로 툴 변경 . . . . . 8-13드로잉 툴 사용. . . . . . . . . . 8-14

    그래픽 위에 그리기 . . . . . . . . . 8-16스크롤 가능한 그래픽 만들기 . . . 8-17이미지 컨트롤 추가. . . . . . . . 8-17

    그래픽 파일 로드 및 저장 . . . . . . 8-19파일에서 그림 로드. . . . . . . . 8-19그림을 파일에 저장. . . . . . . . 8-20그림 교체 . . . . . . . . . . . . 8-20

    클립보드에서 그래픽 사용 . . . . . . 8-21클립보드에 그래픽 복사 . . . . . . 8-22클립보드로 그림 잘라넣기 . . . . . 8-22클립보드에서 그림 붙여넣기 . . . . 8-23

    양단 묶음(Rubber banding) 예제. . . 8-23마우스에 응답 . . . . . . . . . . 8-24마우스 다운 동작에 응답 . . . . . 8-25마우스 동작을 추적하기 위해 폼 객체에 필드 추가 . . . . . . . . 8-26선 그리기 다듬기. . . . . . . . . 8-27

    멀티미디어 작업 . . . . . . . . . . . 8-29애플리케이션에 소리가 없는 비디오 클립 추가 . . . . . . . . . . . . 8-29소리가 없는 비디오 클립 추가 예제 . 8-30

    애플리케이션에 오디오 및/또는 비디오 클립 추가 . . . . . . . . . 8-31오디오 및/또는 비디오 클립 추가

    예제(VCL 전용) . . . . . . . . 8-33

    9 장

    다중 스레드 애플리케이션 작성 9-1

    스레드 객체 정의 . . . . . . . . . . . . 9-1스레드 초기화 . . . . . . . . . . . . 9-2기본 우선 순위 할당 . . . . . . . . 9-2스레드 해제 시기 표시 . . . . . . . 9-3

    스레드 함수 작성 . . . . . . . . . . . 9-4메인 VCL/CLX 스레드 사용 . . . . . 9-4스레드 로컬 변수 사용 . . . . . . . 9-5다른 스레드로 종료 확인 . . . . . . 9-6스레드 함수에서의 예외 처리 . . . . 9-6

    지우기 코드 작성 . . . . . . . . . . . 9-6스레드 조정 . . . . . . . . . . . . . . 9-7동시 액세스 피하기 . . . . . . . . . . 9-7객체 잠금 . . . . . . . . . . . . . 9-7임계 구역(Critical sections) 사용 . . 9-7

    다중 읽기 배타적 쓰기 동기화 장치(Multi-read exclusive-write synchronizer) 사용 . . . . . . . . . . . . . . 9-8메모리 공유에 이용되는 그 밖의 기술 9-9

    다른 스레드 기다리기. . . . . . . . . 9-9스레드의 실행 완료 대기 . . . . . . 9-9작업 완료 대기 . . . . . . . . . . 9-9

    스레드 객체 실행 . . . . . . . . . . . . 9-11기본 우선 순위 오버라이드 . . . . . . 9-11스레드 시작 및 중지 . . . . . . . . . 9-11

    다중 스레드 애플리케이션 디버깅 . . . . . 9-12

    10 장

    크로스 플랫폼 개발을 위한 CLX 사용 10-1

    크로스 플랫폼 애플리케이션 만들기 . . . . 10-1VCL 애플리케이션을 CLX로 포팅 . . . . . 10-2포팅 기법 . . . . . . . . . . . . . . 10-3플랫폼 특정 포팅 . . . . . . . . . 10-3크로스 플랫폼 포팅 . . . . . . . . 10-3Windows 에뮬레이션 포팅 . . . . . 10-3

    애플리케이션 포팅 . . . . . . . . . . 10-4CLX와 VCL 비교. . . . . . . . . . . 10-5CLX가 다르게 하는 동작 . . . . . . . 10-6룩앤필(Look and feel) . . . . . . 10-6스타일 . . . . . . . . . . . . . . 10-7Variants . . . . . . . . . . . . . 10-7Registry . . . . . . . . . . . . . 10-7그 밖의 차이점 . . . . . . . . . . 10-8

    CLX에 없는 내용 . . . . . . . . . . 10-8포팅되지 않는 기능 . . . . . . . . . 10-9CLX와 VCL 유닛 비교 . . . . . . . 10-10CLX 객체 생성자의 차이점 . . . . . 10-13Windows와 Linux 간의 소스 파일 공유 . . . . . . . . . . . . 10-14

    Windows와 Linux 간의 환경적 차이점 . . . . . . . . . . . . . 10-14

    Linux의 디렉토리 구조 . . . . . . . 10-16포팅 가능한 코드 작성 . . . . . . . 10-17조건 지시어 사용 . . . . . . . . 10-18조건 지시어 종료 . . . . . . . . 10-19메시지 나타내기 . . . . . . . . 10-20인라인 어셈블러 코드 포함 . . . . 10-21

    메시지와 시스템 이벤트. . . . . . . 10-21Linux에서의 프로그래밍 차이점 . . . 10-23

    크로스 플랫폼 데이터베이스 애플리케이션 . . . . . . . . . . . . 10-23

    dbExpress 차이점 . . . . . . . . . 10-24컴포넌트 수준 차이점. . . . . . . . 10-25

  • ��

    사용자 인터페이스 수준 차이점 . . . . 10-26데이터베이스 애플리케이션을 Linux로 포팅 . . . . . . . . . . . . . . . 10-26

    dbExpress 애플리케이션에서 데이터 업데이트 . . . . . . . . . . . . . 10-28

    크로스 플랫폼 인터넷 애플리케이션 . . . 10-30인터넷 애플리케이션을 Linux로 포팅 . . . . . . . . . . . . . . . 10-30

    11 장

    패키지와 컴포넌트 사용 11-1

    패키지의 이점 . . . . . . . . . . . . 11-2패키지와 표준 DLL . . . . . . . . . 11-2

    런타임 패키지 . . . . . . . . . . . . 11-2애플리케이션에서 패키지 사용 . . . . 11-3패키지 동적 로딩 . . . . . . . . . . 11-4사용할 런타임 패키지 결정 . . . . . . 11-4사용자 지정 패키지 . . . . . . . . . 11-4

    디자인 타임 패키지 . . . . . . . . . . 11-5컴포넌트 패키지 설치 . . . . . . . . 11-5

    패키지 생성 및 편집 . . . . . . . . . . 11-6패키지 생성 . . . . . . . . . . . . 11-6기존 패키지 편집 . . . . . . . . . . 11-7수동으로 패키지 소스 파일 편집 . . . 11-8패키지 구조 이해 . . . . . . . . . . 11-8패키지 이름 지정. . . . . . . . . 11-8Requires 절. . . . . . . . . . . 11-9Contains 절 . . . . . . . . . . 11-9

    패키지 컴파일 . . . . . . . . . . . 11-10패키지 특정 컴파일러 지시어 . . . 11-10명령줄 컴파일러와 링커 사용 . . . 11-12컴파일이 성공했을 때 생성되는 패키지 파일 . . . . . . . . . . 11-12

    패키지 배포 . . . . . . . . . . . . . 11-13패키지를 사용하는 애플리케이션 배포 . 11-13다른 개발자에 패키지 배포 . . . . . . 11-13패키지 모음 파일 . . . . . . . . . . 11-13

    12 장

    국제적인 애플리케이션 만들기 12-1

    국제화 및 지역화 . . . . . . . . . . . 12-1국제화 . . . . . . . . . . . . . . 12-1지역화 . . . . . . . . . . . . . . 12-1

    애플리케이션 국제화. . . . . . . . . . 12-2애플리케이션 코드 활성화 . . . . . . 12-2문자 집합 . . . . . . . . . . . . 12-2OEM 및 ANSI 문자 집합 . . . . . 12-2

    멀티바이트 문자 집합 . . . . . . . 12-2와이드 문자 . . . . . . . . . . . 12-3애플리케이션에 양방향 기능 포함 . . 12-4BiDiMode 속성 . . . . . . . . . . 12-6로케일 특정 기능 . . . . . . . . . 12-9

    사용자 인터페이스 디자인. . . . . . . 12-9텍스트 . . . . . . . . . . . . . . 12-9그래픽 이미지 . . . . . . . . . 12-10형식 및 정렬 순서 . . . . . . . . 12-10키보드 매핑 . . . . . . . . . . 12-10

    리소스 분리 . . . . . . . . . . . . 12-10리소스 DLL 작성. . . . . . . . . . 12-11리소스 DLL 사용. . . . . . . . . . 12-12리소스 DLL의 동적 전환 . . . . . . 12-13

    애플리케이션 지역화 . . . . . . . . . 12-14리소스 지역화 . . . . . . . . . . . 12-14

    13 장

    애플리케이션 배포 13-1

    일반 애플리케이션 배포 . . . . . . . . . 13-1설치 프로그램 사용 . . . . . . . . . 13-2애플리케이션 파일 식별 . . . . . . 13-2애플리케이션 파일. . . . . . . . . 13-3패키지 파일 . . . . . . . . . . . 13-3Merge 모듈 . . . . . . . . . . . 13-3ActiveX 컨트롤 . . . . . . . . . . 13-5Helper 애플리케이션 . . . . . . . 13-5DLL 위치 . . . . . . . . . . . . 13-5

    CLX 애플리케이션 배포 . . . . . . . . . 13-6데이터베이스 애플리케이션 배포 . . . . . 13-6

    dbExpress 데이터베이스 애플리케이션 배포 . . . . . . . . . . . . . . . 13-7

    BDE 애플리케이션 배포 . . . . . . . 13-8BDE(Borland Database Engine) . . 13-8SQL 연결 . . . . . . . . . . . . 13-9

    다계층(multi-tier) 데이터베이스 애플리케이션(DataSnap) 배포 . . . 13-10

    웹 애플리케이션 배포 . . . . . . . . . 13-10Apache 배포 . . . . . . . . . . . 13-11

    다양한 호스트 환경을 위한 프로그래밍 . 13-12화면 해상도와 색상 수 . . . . . . . 13-12동적으로 크기가 조정되지 않는 경우의 고려 사항. . . . . . . . 13-12폼과 컨트롤 크기를 동적으로 조정하는 경우의 고려 사항 . . . 13-13다양한 색상 수 지원 . . . . . . . 13-14

    글꼴 . . . . . . . . . . . . . . . 13-14운영 체제 버전 . . . . . . . . . . 13-14

  • 소프트웨어 사용권 요구 사항 . . . . . . 13-15DEPLOY . . . . . . . . . . . . . 13-15README . . . . . . . . . . . . . 13-15사용권 계약서 . . . . . . . . . . . 13-15타사(third-party) 제품 설명서 . . . . 13-16

    2 부 데이터베이스 애플리케이션개발

    14 장

    데이터베이스 애플리케이션 디자인 14-1

    데이터베이스 사용 . . . . . . . . . . 14-1데이터베이스의 타입 . . . . . . . . 14-2데이터베이스 보안 . . . . . . . . . 14-4트랜잭션 . . . . . . . . . . . . . 14-4참조 무결성, 내장 프로시저 및 트리거 . 14-5

    데이터베이스 아키텍처. . . . . . . . . 14-6일반 구조 . . . . . . . . . . . . . 14-6사용자 인터페이스 폼 . . . . . . . 14-6데이터 모듈 . . . . . . . . . . . 14-6

    데이터베이스 서버에 직접 연결 . . . . 14-8디스크의 전용 파일 사용 . . . . . . . 14-9다른 데이터셋에 연결 . . . . . . . . 14-10클라이언트 데이터셋을 동일한 애플리케이션의 다른 데이터셋에 연결 . . . . . . . . . . . . . 14-12다계층 아키텍처 사용 . . . . . . . 14-13

    방법의 조합 . . . . . . . . . . . . 14-14사용자 인터페이스 디자인 . . . . . . . 14-15데이터 분석 . . . . . . . . . . . . 14-15리포트 작성 . . . . . . . . . . . . 14-16

    15 장

    데이터 컨트롤 사용 15-1

    공통적인 데이터 컨트롤 기능의 사용 . . . 15-2데이터셋에 데이터 컨트롤 연결 . . . . 15-3런타임 시 연결된 데이터셋 변경 . . 15-3데이터 소스의 사용 가능 및 사용 불가능 . . . . . . . . . . . . 15-4데이터 소스에서 변경 사항에 대한 응답 . . . . . . . . . . . 15-4

    데이터 편집과 업데이트 . . . . . . . 15-5컨트롤에서 사용자 입력의 편집 사용 가능 . . . . . . . . . . . 15-5컨트롤에서의 데이터 편집 . . . . . 15-5

    데이터 표시 사용 불가능 및 사용 가능 . 15-6데이터 표시 새로 고침 . . . . . . . . 15-7마우스, 키보드 및 타이머 이벤트 사용 가능 . . . . . . . . . . . . . 15-7

    데이터 구성 방법 선택 . . . . . . . . . 15-7단일 레코드 표시 . . . . . . . . . . 15-7데이터를 레이블로 표시 . . . . . . 15-8편집 상자의 필드 표시 및 편집 . . . 15-8메모 컨트롤에 텍스트 표시 및 편집 . 15-9Rich edit 메모 컨트롤에 텍스트 표시 및 편집 . . . . . . . . . . 15-9이미지 컨트롤의 그래픽 필드 표시 및 편집 . . . . . . . . . 15-10리스트 박스와 콤보 박스의 데이터 표시 및 편집 . . . . . . . . . 15-10체크 박스로 부울 필드 값 처리 . . 15-13라디오 컨트롤로 필드�값 제한 . . . 15-14

    여러 레코드 표시 . . . . . . . . . 15-14TDBGrid로 데이터 보기 및 편집 . . . . 15-15기본 상태에서 그리드 컨트롤 사용 . . 15-16사용자 지정 그리드 생성 . . . . . . 15-17영구적 열(Persistent Columns) 이해 . . . . . . . . . . . . . 15-17영구적 열 생성 . . . . . . . . . 15-18영구적 열 삭제 . . . . . . . . . 15-19영구적 열 순서 정렬 . . . . . . . 15-19디자인 타임 시 열 속성 설정 . . . 15-20조회 목록 열 정의 . . . . . . . . 15-21열에 버튼 두기 . . . . . . . . . 15-21열에 기본값 복구 . . . . . . . . 15-21

    ADT 및 배열 필드 표시 . . . . . . . 15-22그리드 옵션 설정 . . . . . . . . . 15-24그리드 편집 . . . . . . . . . . . . 15-25그리드 그리기 제어 . . . . . . . . 15-26런타임 시 사용자 동작에 응답 . . . . 15-26

    기타 data-aware 컨트롤을 포함하는 그리드 생성 . . . . . . . . . . . . 15-27레코드 탐색 및 처리 . . . . . . . . . 15-28표시할 탐색기 버튼 선택 . . . . . . 15-29디자인 타임 시 탐색기 버튼 보이기 및 숨기기. . . . . . . . 15-29런타임 시 탐색기 버튼 보이기 및 숨기기 . . . . . . . . . . . 15-30

    풍선 도움말 표시 . . . . . . . . . 15-30여러 데이터셋에 단일 탐색기 사용 . . 15-31

  • ��

    16 장

    의사 결정 지원(Decision Support)컴포넌트 사용 16-1

    개요. . . . . . . . . . . . . . . . . 16-1크로스탭 . . . . . . . . . . . . . . . 16-21차원 크로스탭. . . . . . . . . . . 16-3다차원 크로스탭 . . . . . . . . . . 16-3

    의사 결정 지원 컴포넌트 사용 지침 . . . 16-3의사 결정 지원 컴포넌트에 데이터셋 사용. 16-4

    TQuery 또는 TTable로 의사 결정 데이터셋 생성 . . . . . . . . . . 16-5

    Decision Query 에디터로 의사 결정 데이터셋 생성 . . . . . . . . . . 16-6

    의사 결정 큐브(Decision Cube) 사용 . . 16-7의사 결정 큐브 속성과 이벤트 . . . . 16-7Decision Cube 에디터 사용 . . . . . 16-7차원 설정의 보기 및 변경 . . . . . 16-7사용 가능한 차원과 요약의 최대값 설정 . . . . . . . . . . 16-8디자인 옵션의 보기 및 변경 . . . . 16-8

    의사 결정 소스(Decision Source) 사용 . 16-8속성과 이벤트 . . . . . . . . . . . 16-9

    의사 결정 피벗(Decision Pivot) 사용 . . 16-9의사 결정 피벗 속성. . . . . . . . . 16-10

    의사 결정 그리드(Decision Grid) 생성 및 사용 . . . . . . . . . . . . 16-10의사 결정 그리드 생성. . . . . . . . 16-10의사 결정 그리드 사용. . . . . . . . 16-11의사 결정 그리드 필드 열기와 닫기 . . . . . . . . . . 16-11의사 결정 그리드에서 행과 열

    재구성 . . . . . . . . . . . . 16-11의사 결정 그리드의 자세한 내용 드릴 다운 . . . . . . . . . . . 16-11의사 결정 그리드의 차원 선택 제한 . 16-12

    의사 결정 그리드 속성. . . . . . . . 16-12의사 결정 그래프(Decision Graph) 생성 및 사용 . . . . . . . . . . . . 16-13의사 결정 그래프 생성. . . . . . . . 16-13의사 결정 그래프 사용. . . . . . . . 16-13의사 결정 그래프 표시. . . . . . . . 16-15의사 결정 그래프 사용자 지정 . . . . 16-15의사 결정 그래프 템플릿 기본값 설정 . . . . . . . . . . 16-16의사 결정 그래프 시리즈 사용자 지정 . . . . . . . . . . 16-17

    런타임의 의사 결정 지원 컴포넌트 . . . . 16-18런타임의 의사 결정 피벗 . . . . . . . 16-18

    런타임 시의 의사 결정 그리드 . . . . 16-19런타임 시의 의사 결정 그래프 . . . . 16-19

    의사 결정 지원(Decision Support) 컴포넌트와 메모리 제어 . . . . . . . 16-19차원, 요약, 셀의 최대값 설정 . . . . 16-19차원 상태 설정 . . . . . . . . . . 16-20페이지화된 차원 사용. . . . . . . . 16-20

    17 장

    데이터베이스에 연결 17-1

    암시적인 연결(Implicit connections) 사용. . . . . . . . . . . . . . . . . 17-2연결 제어 . . . . . . . . . . . . . . . 17-2데이터베이스 서버에 연결. . . . . . . 17-3데이터베이스 서버로부터 연결 해제 . . 17-3

    서버 로그인 제어 . . . . . . . . . . . . 17-4트랜잭션 관리 . . . . . . . . . . . . . 17-6트랜잭션 시작 . . . . . . . . . . . . 17-6트랜잭션 종료 . . . . . . . . . . . . 17-8성공적인 트랜잭션 종료 . . . . . . 17-8성공적이지 않은 트랜잭션 종료 . . . 17-8

    트랜잭션 분리 레벨 지정 . . . . . . . 17-9서버에 명령 전송 . . . . . . . . . . . 17-10연결된 데이터셋 작업 . . . . . . . . . 17-12서버로부터 연결을 해제하지 않고 데이터셋 닫기 . . . . . . . . . . 17-12연결된 데이터셋을 통한 반복 . . . . 17-12

    메타데이터 얻기 . . . . . . . . . . . 17-13사용 가능한 테이블 열거 . . . . . . 17-13테이블의 필드 열거 . . . . . . . . 17-14사용 가능한 내장 프로시저

    (Stored procedures) 열거. . . . . 17-14사용 가능한 인덱스 열거 . . . . . . 17-14내장 프로시저 매개변수 열거 . . . . 17-14

    18 장

    데이터셋 이해 18-1

    TDataSet 자손 사용 . . . . . . . . . . 18-2데이터셋 상태 알아보기 . . . . . . . . . 18-3데이터셋 열기와 닫기 . . . . . . . . . . 18-4데이터셋 탐색 . . . . . . . . . . . . . 18-5

    First 및 Last 메소드 사용 . . . . . . . 18-6Next 및 Prior 메소드 사용. . . . . . . 18-6MoveBy 메소드 사용 . . . . . . . . . 18-7Eof 및 Bof 속성 사용 . . . . . . . . 18-7

    Eof . . . . . . . . . . . . . . . 18-7Bof . . . . . . . . . . . . . . . 18-8

  • ���

    레코드 표시 및 반환. . . . . . . . . 18-9Bookmark 속성 . . . . . . . . . 18-9GetBookmark 메소드 . . . . . . 18-9GotoBookmark 및 BookmarkValid 메소드 . . . . . . . . . . . . 18-9

    CompareBookmarks 메소드 . . . 18-10FreeBookmark 메소드 . . . . . . 18-10북마크 예제 . . . . . . . . . . . 18-10

    데이터셋 검색 . . . . . . . . . . . . 18-10Locate 사용 . . . . . . . . . . . . 18-11Lookup 사용. . . . . . . . . . . . 18-11

    필터를 사용한 데이터 서브셋 표시 및 편집 . . . . . . . . . . . . 18-12필터링 사용 가능 및 사용 불가능 . . . 18-13필터 생성 . . . . . . . . . . . . . 18-13

    Filter 속성 설정 . . . . . . . . . 18-14OnFilterRecord 이벤트 핸들러 작성 18-15런타임 시 필터 이벤트 핸들러 전환 . 18-15

    필터 옵션 설정 . . . . . . . . . . . 18-15필터링된 데이터셋의 레코드 탐색 . . . 18-16

    데이터 수정 . . . . . . . . . . . . . 18-17레코드 편집 . . . . . . . . . . . . 18-17새 레코드 추가 . . . . . . . . . . . 18-18레코드 삽입 . . . . . . . . . . . 18-19레코드 추가 . . . . . . . . . . . 18-19

    레코드 삭제 . . . . . . . . . . . . 18-19데이터 포스트 . . . . . . . . . . . 18-20변경 취소 . . . . . . . . . . . . . 18-21전체 레코드 수정 . . . . . . . . . . 18-21

    필드 계산 . . . . . . . . . . . . . . 18-22데이터셋 형식 . . . . . . . . . . . . 18-23테이블 타입 데이터셋 사용 . . . . . . . 18-25테이블 타입 데이터셋 사용의 장점 . . 18-25인덱스로 레코드 정렬 . . . . . . . . 18-26인덱스 관련 정보 얻기 . . . . . . 18-26IndexName으로 인덱스 지정 . . . 18-27IndexFieldNames로 인덱스 작성 . . . . . . . . . . 18-27

    인덱스를 사용하여 레코드 검색 . . . . 18-28Goto 메소드로 검색 수행 . . . . . 18-28Find 메소드로 검색 수행 . . . . . 18-29성공적인 검색 이후 현재 레코드 지정 . . . . . . . . . . 18-29부분 키 검색 . . . . . . . . . . 18-30검색 반복 또는 확장 . . . . . . . 18-30

    범위로 레코드 제한 . . . . . . . . . 18-30범위와 필터의 차이점 이해 . . . . 18-30범위 지정 . . . . . . . . . . . . 18-31범위 수정 . . . . . . . . . . . . 18-33

    범위의 적용 또는 취소 . . . . . . 18-34마스터/디테일 관계 생성 . . . . . . 18-35테이블을 다른 데이터셋의 디테일로 만들기 . . . . . . . . 18-35중첩 디테일 테이블 사용 . . . . . 18-37

    테이블에 대한 읽기/쓰기 권한 제어 . . 18-38테이블 생성 및 삭제 . . . . . . . . 18-38테이블 생성 . . . . . . . . . . 18-38테이블 삭제 . . . . . . . . . . 18-41

    테이블 비우기 . . . . . . . . . . . 18-41테이블 동기화 . . . . . . . . . . . 18-41

    쿼리 타입 데이터셋 사용. . . . . . . . 18-42쿼리 지정 . . . . . . . . . . . . . 18-43

    SQL 속성을 사용하여 쿼리 지정 . . 18-44CommandText 속성을 사용하여 쿼리 지정 . . . . . . . . . . . 18-44

    쿼리의 매개변수 사용. . . . . . . . 18-45디자인 타임에 매개변수 제공 . . . 18-45런타임 시 매개변수 제공 . . . . . 18-46

    매개변수를 사용하여 마스터/디테일 관계 설정 . . . . . . . . . . . . 18-47쿼리 준비 . . . . . . . . . . . . . 18-48결과 집합(Result set)을 반환하지 않는 쿼리 실행 . . . . . . . . . . . . 18-49단방향 결과 집합 사용 . . . . . . . 18-49

    내장 프로시저 타입 데이터셋 사용 . . . 18-50내장 프로시저 매개변수 작업 . . . . 18-51디자인 타임 시 매개변수 설정 . . . 18-52런타임 시 매개변수 사용 . . . . . 18-53

    내장 프로시저 준비 . . . . . . . . 18-54결과 집합(Result set)을 반환하지 않는내장 프로시저 실행 . . . . . . . . 18-54여러 결과 집합 페치 . . . . . . . . 18-54

    19 장

    필드 컴포넌트 사용 19-1

    동적(Dynamic) 필드 컴포넌트 . . . . . . 19-2영구적(Persistent) 필드 컴포넌트 . . . . 19-3영구적 필드 생성 . . . . . . . . . . 19-4영구적 필드 정렬 . . . . . . . . . . 19-5새 영구적 필드 정의 . . . . . . . . . 19-5데이터 필드 정의 . . . . . . . . . 19-6계산된 필드 정의 . . . . . . . . . 19-7계산된 필드 프로그래밍 . . . . . . 19-8조회 필드 정의 . . . . . . . . . . 19-8집계 필드(Aggregates field) 정의 . 19-10

    영구적 필드 컴포넌트 삭제 . . . . . 19-10영구적 필드 속성 및 이벤트 설정 . . . 19-11

  • ����

    디자인 타임 시 표시 및 편집 속성 설정 . . . . . . . . . . . 19-11런타임 시 필드 컴포넌트 속성 설정 . 19-12필드 컴포넌트의 속성 집합 만들기 . 19-13필드 컴포넌트와 속성 집합 연결 . . 19-13속성 연결 제거. . . . . . . . . . 19-14사용자 입력 조정 및 마스킹 . . . . 19-14숫자, 날짜 및 시간 필드에 대한 기본 서식 사용 . . . . . . . . . 19-15이벤트 처리 . . . . . . . . . . . 19-15

    런타임 시 필드 컴포넌트 메소드 사용 . . 19-16필드 값 표시, 변환 및 액세스 . . . . . . 19-17표준 컨트롤의 필드 컴포넌트 값 표시 . 19-17필드 값 변환 . . . . . . . . . . . . 19-18기본 데이터셋 속성으로 필드 값 액세스 . . . . . . . . . . . . . . 19-19데이터셋의 Fields 속성으로 필드 값 액세스 . . . . . . . . . . . . 19-19데이터셋의 FieldByName 메소드로 필드 값 액세스 . . . . . . . . . . 19-20

    필드에 대한 기본값 설정 . . . . . . . . 19-20제약 조건 작업 . . . . . . . . . . . . 19-21사용자 지정 제약 조건 만들기 . . . . 19-21서버 제약 조건 사용. . . . . . . . . 19-21

    객체 필드 사용 . . . . . . . . . . . . 19-22ADT 및 배열 필드 표시 . . . . . . . 19-23ADT 필드 작업 . . . . . . . . . . . 19-23영구적 필드 컴포넌트 사용 . . . . 19-24데이터셋의 FieldByName 메소드 사용 . . . . . . . . . . 19-24데이터셋의 FieldValues 속성 사용 . 19-24ADT 필드의 FieldValues 속성 사용 . 19-24ADT 필드의 Fields 속성 사용 . . . 19-25

    배열 필드(Array fields) 작업 . . . . . 19-25영구적 필드 사용. . . . . . . . . 19-25배열 필드의 FieldValues 속성 사용 . 19-26배열 필드의 Fields 속성 사용 . . . 19-26

    데이터셋 필드 작업 . . . . . . . . . 19-26데이터셋 필드 표시. . . . . . . . 19-26중첩된 데이터셋의 데이터 액세스 . 19-27참조 필드(Reference fields) 작업 . 19-27참조 필드 표시. . . . . . . . . . 19-27참조 필드의 데이터 액세스 . . . . 19-28

    20 장

    Borland Database Engine 사용 20-1

    BDE 기반 아키텍처 . . . . . . . . . . 20-1BDE 활성 데이터셋 사용. . . . . . . 20-2

    데이터베이스 및 세션 연결과 데이터셋의 연결 . . . . . . . . . 20-3

    BLOB 캐시. . . . . . . . . . . . 20-4BDE 핸들 얻기 . . . . . . . . . . 20-4

    TTable 사용 . . . . . . . . . . . . 20-4로컬 테이블의 테이블 타입 지정 . . . 20-5로컬 테이블에 대한 읽기/쓰기 액세스 제어 . . . . . . . . . . . 20-6

    dBASE 인덱스 파일 지정 . . . . . . 20-6로컬 테이블 이름 재지정 . . . . . . 20-8다른 테이블에서 데이터 가져오기 . . 20-8

    TQuery 사용 . . . . . . . . . . . . 20-9이종 쿼리 생성 . . . . . . . . . . 20-9편집 가능한 결과 집합(Result set) 얻기 . . . . . . . . . . . . . 20-10읽기 전용 결과 집합 업데이트 . . . 20-11

    TStoredProc 사용 . . . . . . . . . 20-12매개변수 바인딩 . . . . . . . . 20-12Oracle 오버로드 내장 프로시저

    사용 . . . . . . . . . . . . . 20-12TDatabase를 갖는 데이터베이스에 연결 . . . . . . . . . . . . . . 20-13데이터베이스 컴포넌트와 세션 연결 . . . . . . . . . . . . . 20-13데이터베이스와 세션 컴포넌트 상호 작용 이해 . . . . . . . . 20-13데이터베이스 식별. . . . . . . . 20-14TDatabase를 사용하여 연결 열기 . 20-15데이터 모듈의 데이터베이스 컴포넌트 사용 . . . . . . . . . 20-16

    데이터베이스 세션 관리. . . . . . . 20-17세션 활성화 . . . . . . . . . . 20-18기본 데이터베이스 연결 동작 지정 . 20-19데이터베이스 연결 관리 . . . . . 20-19암호 보호되는 Paradox 및 dBASE테이블 사용 . . . . . . . . . . 20-22

    Paradox 디렉토리 위치 지정 . . . 20-24BDE 별칭 사용 . . . . . . . . . 20-25세션에 대한 정보 검색 . . . . . . 20-27추가 세션 생성 . . . . . . . . . 20-28세션 이름 지정 . . . . . . . . . 20-29다중 세션 관리 . . . . . . . . . 20-29

    BDE에서 트랜잭션 사용 . . . . . . . . 20-31Passthrough SQL 사용. . . . . . . 20-31로컬 트랜잭션 사용 . . . . . . . . 20-32

    BDE 사용하여 업데이트 캐시 . . . . . 20-33BDE 기반 캐시된 업데이트 활성화 . . 20-34BDE 기반 캐시된 업데이트 적용 . . . 20-35

  • ���

    데이터베이스를 사용하여 캐시된 업데이트 적용 . . . . . . . . . 20-36데이터셋 컴포넌트 메소드로 캐시된 업데이트 적용 . . . . . . . . . 20-36

    OnUpdateRecord 이벤트 핸들러생성 . . . . . . . . . . . . . 20-37캐시된 업데이트 오류 처리 . . . . 20-38

    업데이트 객체를 사용하여 데이터셋 업데이트 . . . . . . . . . . . . . 20-40업데이트 컴포넌트에 대한 SQL 문 생성 . . . . . . . . . . . . . 20-41다중 업데이트 객체 사용 . . . . . 20-45SQL 문 실행 . . . . . . . . . . 20-46

    TBatchMove 사용. . . . . . . . . . . 20-49배치 이동 컴포넌트 생성 . . . . . . . 20-49배치 이동 모드 지정. . . . . . . . . 20-50레코드 추가 . . . . . . . . . . . 20-50레코드 업데이트 . . . . . . . . . 20-51레코드 추가 및 업데이트 . . . . . 20-51데이터셋 복사 . . . . . . . . . . 20-51레코드 삭제 . . . . . . . . . . . 20-51

    데이터 타입 매핑 . . . . . . . . . . 20-51배치 이동 실행 . . . . . . . . . . . 20-52배치 이동 오류 처리. . . . . . . . . 20-53

    데이터 사전 . . . . . . . . . . . . . 20-53BDE 사용을 위한 툴 . . . . . . . . . . 20-55

    21 장

    ADO 컴포넌트 사용 21-1

    ADO 컴포넌트 개요 . . . . . . . . . . 21-1ADO 데이터 저장소에 연결 . . . . . . . 21-2

    TADOConnection을 사용하여 데이터 저장소에 연결 . . . . . . . . . . 21-3

    Connection 객체 액세스 . . . . . 21-4연결 미세 조정(fine-tuning). . . . . 21-5강제적인 비동기(asynchronous) 연결 . . . . . . . . . . . . . 21-5시간 초과 제어. . . . . . . . . . 21-5연결이 지원하는 작업 유형 나타내기 21-6연결의 자동적인 트랜잭션 초기화 여부 지정 . . . . . . . . . . . 21-6

    연결 명령 액세스 . . . . . . . . . . 21-7ADO 연결 이벤트 . . . . . . . . . . 21-8연결 시의 이벤트. . . . . . . . . 21-8연결 중지 시의 이벤트 . . . . . . 21-8트랜잭션 관리 시의 이벤트 . . . . 21-8기타 이벤트 . . . . . . . . . . . 21-9

    ADO 데이터셋 사용 . . . . . . . . . . 21-9

    데이터 저장소에 ADO 데이터셋 연결 . . . . . . . . . . . . . 21-10레코드셋 사용 . . . . . . . . . 21-10북마크에 기반한 레코드 필터링 . . 21-11비동기식으로 레코드 페치 . . . . 21-12배치 업데이트 사용 . . . . . . . 21-12파일에서 데이터 로드와 파일에 데이터 저장 . . . . . . . . . . 21-15

    TADODataSet 사용 . . . . . . . . 21-16Command 객체 사용 . . . . . . . . . 21-17명령 지정 . . . . . . . . . . . . . 21-17Execute 메소드 사용 . . . . . . . . 21-18명령 취소 . . . . . . . . . . . . . 21-18명령으로 결과 집합 검색 . . . . . . 21-19명령 매개변수 처리 . . . . . . . . 21-19

    22 장

    단방향 데이터셋 사용 22-1

    단방향 데이터셋의 타입 . . . . . . . . . 22-2데이터베이스 서버에 연결 . . . . . . . . 22-2

    TSQLConnection 설정 . . . . . . . . 22-3드라이버 식별 . . . . . . . . . . 22-3연결 매개변수 지정 . . . . . . . . 22-4연결에 대한 설명 이름 지정 . . . . . 22-4Connection Editor 사용 . . . . . . 22-5

    표시할 데이터 지정 . . . . . . . . . . . 22-6쿼리의 결과 표시 . . . . . . . . . . 22-6테이블의 레코드 표시. . . . . . . . . 22-7

    TSQLDataSet을 사용하여 테이블 표시 . . . . . . . . . . . . . . 22-7

    TSQLTable을 사용하여 테이블 표시 . 22-7내장 프로시저의 결과 표시 . . . . . . 22-8

    데이터 페치 . . . . . . . . . . . . . . 22-8데이터셋 준비 . . . . . . . . . . . . 22-9여러 데이터셋 페치 . . . . . . . . . 22-9

    레코드를 반환하지 않는 명령 실행 . . . 22-10실행할 명령 지정 . . . . . . . . . 22-10명령 실행 . . . . . . . . . . . . . 22-11서버 메타데이터 생성 및 수정 . . . . 22-11

    마스터/디테일 연결 커서 설정 . . . . . 22-12스키마 정보 액세스 . . . . . . . . . . 22-13메타데이터를 단방향 데이터셋에 페치 22-13메타데이터에 대한 데이터셋 사용한 후 데이터 페치 . . . . . 22-14메타데이터 데이터셋의 구조 . . . 22-14

    dbExpress 애플리케이션 디버깅 . . . . 22-18SQL 명령을 모니터하기 위한

    TSQLMonitor 사용 . . . . . . . . 22-18

  • ��

    SQL 명령을 모니터하기 위한 콜백 사용 22-19

    23 장

    클라이언트 데이터셋 사용 23-1

    클라이언트 데이터셋을 사용하는 데이터 작업 . . . . . . . . . . . . . 23-2클라이언트 데이터셋에서 데이터 탐색 . 23-2레코드 표시 제한 . . . . . . . . . . 23-3데이터 편집 . . . . . . . . . . . . 23-5변경 취소 . . . . . . . . . . . . 23-6변경 내용 저장. . . . . . . . . . 23-6

    데이터 값 제약 조건. . . . . . . . . 23-7사용자 지정 제약 조건의 지정 . . . 23-7

    정렬과 인덱싱 . . . . . . . . . . . 23-8새 인덱스 추가. . . . . . . . . . 23-8인덱스 삭제와 전환. . . . . . . . 23-9인덱스를 사용하여 데이터 그룹화 . 23-10

    계산된 값 표시 . . . . . . . . . . . 23-11클라이언트 데이터셋에서

    내부적으로 계산된 필드 사용 . . 23-11유지 관리되는 집계(Maintained

    Aggregates) 속성 사용 . . . . . . 23-12 Aggregates 지정 . . . . . . . . 23-12레코드 그룹의 집계. . . . . . . . 23-13집계 값 얻기 . . . . . . . . . . 23-14

    다른 데이터셋에서 데이터 복사 . . . . 23-14데이터 직접 할당. . . . . . . . . 23-14클라이언트 데이터셋 커서 복제 . . 23-15

    데이터에 애플리케이션 특정 정보 추가 . . . . . . . . . . . . 23-16

    클라이언트 데이터셋을 사용하여 업데이트 캐시 . . . . . . . . . . . . 23-16캐시된 업데이트 사용 개요 . . . . . . 23-17업데이트 캐시에 필요한 데이터셋 타입 선택 . . . . . . . . . . . . 23-18수정된 레코드 표시 . . . . . . . . . 23-19레코드 업데이트 . . . . . . . . . . 23-20업데이트 적용 . . . . . . . . . . 23-21업데이트가 적용될 때 조정 . . . . 23-22업데이트 오류 해결. . . . . . . . 23-23

    프로바이더와 함께 클라이언트 데이터셋 사용 . . . . . . . . . . . . 23-25프로바이더 지정 . . . . . . . . . . 23-25소스 데이터셋이나 문서에서 데이터 요청 . . . . . . . . . . . 23-26점진적 페치(Incremental

    fetching) . . . . . . . . . . . 23-27요구 즉시 페치(Fetch7on7demand) 23-27

    소스 데이터셋에서 매개변수 얻기 . . 23-28소스 데이터셋에 매개변수 전달 . . . 23-28쿼리 또는 내장 프로시저 매개변수 보내기 . . . . . . . . . . . . 23-29매개변수로 레코드 제한 . . . . . 23-29

    서버에서 제약 조건 처리 . . . . . . 23-30레코드 새로 고침 . . . . . . . . . 23-31사용자 지정 이벤트를 사용하여 프로바이더와 통신 . . . . . . . . 23-32소스 데이터셋 오버라이드. . . . . . 23-32

    파일 기반 데이터로 클라이언트 데이터셋 사용. . . . . . . . . . . . . . . . 23-33새로운 데이터셋 생성. . . . . . . . 23-34파일이나 스트림에서 데이터 로드 . . 23-34데이터에 변경 내용 병합 . . . . . . 23-35파일이나 스트림에 데이터 저장 . . . 23-35

    24 장

    프로바이더 컴포넌트 사용 24-1

    데이터의 소스 정하기 . . . . . . . . . . 24-2데이터 소스로 데이터셋 사용 . . . . . 24-2데이터 소스로 XML 문서 사용 . . . . . 24-2

    클라이언트 데이터셋과의 통신 . . . . . . 24-3데이터셋 프로바이더를 사용하여 업데이트 사항의 적용 방법 선택 . . . . . . . . . 24-4데이터 패킷에 포함될 정보 제어 . . . . . 24-4데이터 패킷에 표시되는 필드 지정 . . . 24-5데이터 패킷에 영향을 미치는 옵션 설정 . 24-5데이터 패킷에 사용자 지정 정보 추가 . . 24-7

    클라이언트 데이터 요청에 대한 응답 . . . 24-7클라이언트 업데이트 요청에 대한 응답 . . 24-8데이터베이스 업데이트 이전의 델타 패킷 편집 . . . . . . . . . . . . . 24-9업데이트 적용 방법 변경 . . . . . . 24-10개별적인 업데이트(Individual updates) 스크린 . . . . . . . . . . . . . 24-11프로바이더에서 업데이트 오류 해결 . 24-11단일 테이블을 나타내지 않는데이터셋에 업데이트 적용 . . . . . 24-12

    클라이언트 생성 이벤트에 응답 . . . . . 24-12서버 제약 조건 처리 . . . . . . . . . 24-13

    25 장

    다계층(multi7tiered) 애플리케이션 생성 25-1

    다계층 데이터베이스 모델의 이점 . . . . . 25-2

  • ���

    프로바이더 기반 다계층 애플리케이션에 대한 이해 . . . . . . . . . . . . . . 25-2

    3계층 애플리케이션 개요 . . . . . . 25-3클라이언트 애플리케이션의 구조 . . . 25-4애플리케이션 서버의 구조 . . . . . . 25-5원격 데이터 모듈의 컨텐트 . . . . 25-6트랜잭션 데이터 모듈(Transactional

    Data Module) 사용 . . . . . . . 25-6원격 데이터 모듈 풀링 . . . . . . 25-8

    연결 프로토콜 선택 . . . . . . . . . 25-9DCOM 연결 사용 . . . . . . . . 25-9소켓 연결 사용. . . . . . . . . . 25-9웹 연결 사용 . . . . . . . . . . 25-10SOAP 연결 사용 . . . . . . . . . 25-10CORBA 연결 사용 . . . . . . . . 25-11

    다계층 애플리케이션 구축 . . . . . . . 25-11애플리케이션 서버 생성 . . . . . . . . 25-12원격 데이터 모듈 설정. . . . . . . . 25-13

    TRemoteDataModule 구성 . . . . 25-13TMTSDataModule 구성. . . . . . 25-15TSoapDataModule 구성 . . . . . 25-16TCorbaDataModule 구성 . . . . . 25-16

    애플리케이션 서버의 인터페이스 확장 . 25-17애플리케이션 서버의 인터페이스에 콜백 추가 . . . . . . . . . . . 25-18트랜잭션 애플리케이션 서버의 인터페이스 확장 . . . . . . . . 25-18

    다계층 애플리케이션의 트랜잭션 관리 . 25-19마스터/디테일 관계 지원. . . . . . . 25-19원격 데이터 모듈의 상태 정보 지원 . . 25-20다중 원격 데이터 모듈 사용 . . . . . 25-22

    애플리케이션 서버 등록 . . . . . . . . 25-23클라이언트 애플리케이션 생성 . . . . . 25-23애플리케이션 서버에 연결 . . . . . . 25-24

    DCOM을 사용하여 연결 지정 . . . 25-25소켓을 사용하여 연결 지정 . . . . 25-25HTTP를 사용하여 연결 지정 . . . . 25-27SOAP를 사용하여 연결 지정 . . . . 25-27CORBA를 사용하여 연결 지정 . . . 25-28연결 브로커링

    (Brokering connections) . . . . 25-28서버 연결 관리 . . . . . . . . . . . 25-29서버에 연결 . . . . . . . . . . . 25-30서버 연결 끊기 및 바꾸기 . . . . . 25-30

    서버 인터페이스 호출 . . . . . . . . 25-30다중 데이터 모듈을 사용하는 애플리케이션 서버에 대한 연결 . . . 25-32

    웹 기반 클라이언트 애플리케이션 작성 . . 25-33

    클라이언트 애플리케이션을 ActiveX 컨트롤로 배포 . . . . . . . . . . 25-34클라이언트 애플리케이션에 Active

    Form 생성 . . . . . . . . . . 25-34InternetExpress를 사용하여 웹 애플리케이션 구축 . . . . . . . . 25-35

    InternetExpress 애플리케이션 구축 . 25-36자바스크립트 라이브러리 사용 . . 25-37애플리케이션 서버의 액세스 및 실행 권한 부여 . . . . . . . . 25-38

    XML 브로커 사용 . . . . . . . . . 25-38XML 데이터 패킷 페치 . . . . . . 25-38XML 델타 패킷(delta packets)의 업데이트 적용 . . . . . . . . . 25-39

    InternetExpress 페이지 프로듀서로 웹 페이지 생성 . . . . . . . . . . 25-40웹 페이지 에디터 사용 . . . . . . 25-41웹 항목 속성 설정 . . . . . . . . 25-42InternetExpress 페이지 프로듀서 템플릿 사용자 지정. . . . . . . 25-43

    26 장

    데이터베이스 애플리케이션에서 XML 사용 26-1

    변환 정의 . . . . . . . . . . . . . . . 26-1XML 노드와 데이터 패킷 필드 사이의 매핑 . . . . . . . . . . . . . . . 26-2

    XMLMapper 사용 . . . . . . . . . . 26-4XML 스키마 또는 데이터 패킷 로딩 . 26-4매핑 정의 . . . . . . . . . . . . 26-5변환 파일 생성 . . . . . . . . . . 26-5

    XML 문서를 데이터 패킷으로 변환 . . . . 26-6소스 XML 문서 지정 . . . . . . . . . 26-6변환 지정 . . . . . . . . . . . . . . 26-7결과 데이터 패킷 가져오기 . . . . . . 26-7사용자 정의 노드 변환 . . . . . . . . 26-7

    XML 문서를 프로바이더의 소스로 사용 . . 26-8프로바이더의 클라이언트로 XML 문서 사용. . . . . . . . . . . . . . . . . 26-9프로바이더에서 XML 문서 페치(fetch) . 26-9XML 문서에서 프로바이더로 업데이트 적용 . . . . . . . . . . . . . . 26-10

    3 부인터넷 애플리케이션 작성

  • ����

    27 장

    인터넷 애플리케이션 생성 27-1

    Web Broker 및 WebSnap 정보 . . . . . 27-1용어 및 표준 . . . . . . . . . . . . . 27-2

    URL(Uniform Resource Locator)의 각 부분 . . . . . . . . . . . . . 27-3

    URI와 URL 비교 . . . . . . . . . 27-4HTTP 요청 헤더 정보 . . . . . . . . 27-4

    HTTP 서버 활동. . . . . . . . . . . . 27-4클라이언트 요청 구성 . . . . . . . . 27-5클라이언트 요청에 대한 작업 . . . . . 27-5클라이언트 요청에 응답 . . . . . . . 27-6

    웹 서버 애플리케이션의 유형 . . . . . . 27-6ISAPI 및 NSAPI . . . . . . . . . 27-6Apache . . . . . . . . . . . . 27-7CGI 독립형 . . . . . . . . . . . 27-7Win-CGI 독립형 . . . . . . . . 27-7

    서버 애플리케이션 디버깅 . . . . . . . 27-7웹 애플리케이션 디버거 사용 . . . . . 27-7웹 애플리케이션 디버거를 사용한 애플리케이션 실행 . . . . . . . 27-8사용자의 애플리케이션을 다른 유형의 웹 서버 애플리케이션으로 변환 . . 27-8

    DLL인 웹 애플리케이션 디버깅 . . . . 27-9Windows NT에서의 디버깅 . . . . 27-9Windows 2000에서의 디버깅 . . . 27-9

    28 장

    Web Broker 사용 28-1

    Web Broker로 웹 서버 애플리케이션 생성 28-1웹 모듈 . . . . . . . . . . . . . . 28-2웹 애플리케이션 객체 . . . . . . . . 28-3

    Web Broker 애플리케이션의 구조 . . . . 28-3웹 디스패처 . . . . . . . . . . . . . 28-4디스패처에 액션 추가 . . . . . . . . 28-5요청 메시지 디스패칭 . . . . . . . . 28-5

    액션 항목 . . . . . . . . . . . . . . 28-6액션 항목 실행 시기 결정 . . . . . . 28-6대상 URL . . . . . . . . . . . . 28-6요청 메소드 유형. . . . . . . . . 28-6액션 항목 활성화 및 비활성화 . . . 28-7기본 액션 항목 선택 . . . . . . . 28-7

    액션 항목으로 요청 메시지에 응답 . . 28-8응답 보내기 . . . . . . . . . . . 28-8여러 액션 항목 사용 . . . . . . . 28-8

    클라이언트 요청 정보 액세스 . . . . . . 28-9요청 헤더 정보를 포함하는 속성 . . . 28-9

    대상을 식별하는 속성 . . . . . . . 28-9웹 클라이언트를 설명하는 속성 . . . 28-9요청 목적을 식별하는 속성 . . . . 28-10예상 응답을 설명하는 속성 . . . . 28-10컨텐트를 설명하는 속성 . . . . . 28-10

    HTTP 요청 메시지의 내용 . . . . . . 28-11HTTP 응답 메시지 만들기 . . . . . . . 28-11응답 헤더 채우기 . . . . . . . . . 28-11응답 상태 표시 . . . . . . . . . 28-11클라이언트 액션에 대한 요구 표시 . 28-12서버 애플리케이션 설명 . . . . . 28-12컨텐트 설명 . . . . . . . . . . 28-12

    응답 컨텐트 설정 . . . . . . . . . 28-12응답 보내기 . . . . . . . . . . . . 28-13

    응답 메시지 컨텐트 생성. . . . . . . . 28-13페이지 프로듀서 컴포넌트 사용 . . . 28-14

    HTML 템플릿 . . . . . . . . . . 28-14HTML 템플릿 지정 . . . . . . . 28-15HTML 투명 태그 변환 . . . . . . 28-15액션 항목에서 페이지 프로듀서 사용 . . . . . . . . . . . . . 28-15페이지 프로듀서 간의 연결 . . . . 28-16

    응답에서 데이터베이스 정보 사용 . . . . 28-17웹 모듈에 세션 추가 . . . . . . . . 28-18HTML로 데이터베이스 정보 표시. . . 28-18데이터셋 페이지 프로듀서 사용 . . 28-18테이블 프로듀서 사용 . . . . . . 28-19테이블 속성 지정 . . . . . . . . 28-19행 속성 지정 . . . . . . . . . . 28-19열 지정 . . . . . . . . . . . . 28-20HTML 문서에 테이블 포함시키기 . 28-20데이터셋 테이블 프로듀서 설정 . . 28-20쿼리 테이블 프로듀서 설정 . . . . 28-21

    29 장

    WebSnap 사용 29-1

    WebSnap을 사용한 웹 서버 애플리케이션 생성. . . . . . . . . . . . . . . . . 29-2서버 타입 . . . . . . . . . . . . . . 29-2웹 애플리케이션 모듈 유형 . . . . . . 29-3웹 애플리케이션 모듈 옵션 . . . . . . 29-3애플리케이션 컴포넌트 . . . . . . . . 29-4

    웹 모듈 . . . . . . . . . . . . . . . . 29-5웹 데이터 모듈 . . . . . . . . . . . 29-5웹 데이터 모듈 유닛의 구조 . . . . . 29-5웹 데이터 모듈에 의해 구현되는 인터페이스 . . . . . . . . . . . 29-6

    웹 페이지 모듈 . . . . . . . . . . . 29-6

  • �����

    페이지 프로듀서 컴포넌트 . . . . . 29-6페이지 이름 . . . . . . . . . . . 29-6프로듀서 템플릿 . . . . . . . . . 29-6웹 페이지 모듈이 구현하는 인터페이스 . . . . . . . . . . 29-7

    웹 애플리케이션 모듈 . . . . . . . . 29-7웹 애플리케이션 데이터 모듈이 구현하는 인터페이스 . . . . . . 29-7웹 애플리케이션 페이지 모듈이 구현하는 인터페이스 . . . . . . 29-8

    어댑터(Adapters) . . . . . . . . . . . 29-8Fields . . . . . . . . . . . . . . 29-8Actions . . . . . . . . . . . . . . 29-8Errors . . . . . . . . . . . . . . 29-8Records . . . . . . . . . . . . . 29-8

    페이지 프로듀서 . . . . . . . . . . . 29-9템플릿 . . . . . . . . . . . . . . 29-9

    WebSnap의 서버측 스크립팅 . . . . . . 29-9활성 스크립팅 . . . . . . . . . . . 29-9스크립트 엔진 . . . . . . . . . . . 29-10스크립트 블록 . . . . . . . . . . . 29-10스크립트 작성 . . . . . . . . . . . 29-10템플릿 마법사 . . . . . . . . . . 29-10TAdapterPageProducer . . . . . 29-10

    스크립트 편집과 보기 . . . . . . . . 29-11페이지에 스크립트 포함 . . . . . . . 29-11스크립트 객체 . . . . . . . . . . . 29-11

    요청(Request) 디스패치 . . . . . . . . 29-13WebContext. . . . . . . . . . . . 29-13디스패처 컴포넌트 . . . . . . . . . 29-13어댑터 디스패처 작업 . . . . . . . . 29-13어댑터 컴포넌트를 사용하여 컨텐트 생성 . . . . . . . . . . . . . 29-13어댑터 요청(Request) 및 응답(Response) . . . . . . . . 29-15액션 요청(Action request) . . . . 29-15액션 응답(Action response) . . . 29-16이미지 요청(Image request) . . . 29-17이미지 응답(Image response). . . 29-17

    액션 항목 디스패칭 . . . . . . . . . 29-18페이지 디스패처 작업 . . . . . . . . 29-18

    WebSnap 자습서 . . . . . . . . . . . 29-19새 애플리케이션 생성 . . . . . . . . 29-191 단계. WebSnap 애플리케이션 마법사 시작 . . . . . . . . . . 29-19

    2 단계. 생성된 파일과 프로젝트 저장 . . . . . . . . . . . . . 29-20

    3 단계. 애플리케이션 제목 지정 . . 29-20CountryTable 페이지 생성 . . . . . . 29-20

    1 단계. 새 모듈 추가. . . . . . . 29-212 단계. 새 모듈 저장. . . . . . . 29-21

    CountryTable 모듈에 데이터 컴포넌트 추가 . . . . . . . . . . . . . . 29-211 단계. data-aware 컴포넌트 추가 29-212 단계. 키 필드 지정. . . . . . . 29-223 단계. 어댑터 컴포넌트 추가 . . . 29-22

    데이터를 표시할 그리드 생성 . . . . 29-221 단계. 그리드 추가 . . . . . . . 29-232 단계. 그리드에 편집 명령 추가 . 29-23

    편집 폼 추가 . . . . . . . . . . . 29-241 단계. 새로운 모듈 추가 . . . . . 29-242 단계. 새 모듈 저장. . . . . . . 29-243 단계. CountryTableU 유닛 사용 . 29-244 단계. 입력 필드 추가 . . . . . . 29-245 단계. 버튼 추가 . . . . . . . . 29-256 단계. 그리드 페이지에 폼 액션 연결 . . . . . . . . . . . . . 29-25

    7 단계. 폼 페이지에 그리드 액션 연결 . . . . . . . . . . . . . 29-26

    오류 보고 추가 . . . . . . . . . . 29-261 단계. 그리드에 오류 지원 추가 . 29-262 단계. 폼에 오류 지원 추가 . . . 29-273 단계. 오류 보고 메커니즘 테스트 29-27

    완성된 애플리케이션 실행. . . . . . 29-27

    30 장

    XML 문서 작업 30-1

    Document Object Model 사용. . . . . . 30-2XML 컴포넌트 작업 . . . . . . . . . . . 30-3

    TXMLDocument 사용 . . . . . . . . 30-3XML 노드 작업 . . . . . . . . . . . 30-4노드의 값 사용 . . . . . . . . . . 30-4노드의 속성 작업 . . . . . . . . . 30-5자식 노드 추가 및 삭제. . . . . . . 30-5

    데이터 바인딩 마법사를 이용한 XML 문서 추출 . . . . . . . . . . . . . . 30-5

    XML 데이터 바인딩 마법사 사용 . . . . 30-7XML 데이터 바인딩 마법사가 생성하는 코드 사용 . . . . . . . . . . . . . 30-8

    31 장

    Web Services 사용 31-1

    Web Services를 지원하는 서버 작성 . . . 31-2Web Services 서버 구축 . . . . . . . 31-2호출 가능한 인터페이스 정의 . . . . 31-3

  • ���

    호출 가능한 인터페이스에서 복잡한 타입 사용 . . . . . . . . . . . 31-5구현 생성 및 등록 . . . . . . . . 31-6Web Services에 대한 사용자 지정 예외 클래스 작성 . . . . . . . . 31-7

    Web Services 애플리케이션에 대한 WSDL 문서 생성 . . . . . . . . 31-7

    Web Services용 클라이언트 작성 . . . . 31-8WSDL 문서 import하기 . . . . . . . 31-8호출 가능 인터페이스 호출 . . . . . . 31-9

    32 장

    소켓 작업 32-1

    서비스 구현 . . . . . . . . . . . . . 32-1서비스 프로토콜 이해 . . . . . . . . 32-2애플리케이션과 통신 . . . . . . . 32-2

    서비스와 포트 . . . . . . . . . . . 32-2소켓 연결 유형 . . . . . . . . . . . . 32-2클라이언트 연결 . . . . . . . . . . 32-3리스닝(listening) 연결 . . . . . . . 32-3서버 연결 . . . . . . . . . . . . . 32-3

    소켓 설명 . . . . . . . . . . . . . . 32-3호스트 설명 . . . . . . . . . . . . 32-4호스트 이름 또는 IP 주소 선택 . . . 32-4

    포트 사용 . . . . . . . . . . . . . 32-5소켓 컴포넌트 사용 . . . . . . . . . . 32-5

    연결 정보 얻기. . . . . . . . . . 32-5클라이언트 소켓 사용 . . . . . . . . 32-6원하는 서버 지정. . . . . . . . . 32-6연결 구성 . . . . . . . . . . . . 32-6연결 정보 얻기. . . . . . . . . . 32-6연결 끊기 . . . . . . . . . . . . 32-7

    서버 소켓 사용 . . . . . . . . . . . 32-7포트 지정 . . . . . . . . . . . . 32-7클라이언트 요청 리스닝(listening) . 32-7클라이언트에 연결 . . . . . . . . 32-7서버 연결 닫기. . . . . . . . . . 32-7

    소켓 이벤트에 응답 . . . . . . . . . . 32-8오류 이벤트 . . . . . . . . . . . . 32-8클라이언트 이벤트 . . . . . . . . . 32-8서버 이벤트 . . . . . . . . . . . . 32-9리스닝(listening) 시의 이벤트 . . . 32-9클라이언트 연결 시의 이벤트 . . . 32-9

    소켓 연결을 통한 읽기 및 쓰기 . . . . . 32-9비차단 연결(Non7blocking

    connections) . . . . . . . . . . 32-10읽기 및 쓰기 이벤트 . . . . . . . 32-10

    차단 연결(Blocking connections) . . 32-10

    4 부 COM 기반 애플리케이션 개발

    33 장

    COM 기술 개요 33-1

    사양 및 구현으로서의 COM. . . . . 33-1COM 확장 . . . . . . . . . . . . 33-2

    COM 애플리케이션의 구성 요소 . . . . . 33-3COM 인터페이스 . . . . . . . . . . 33-3기본 COM 인터페이스, IUnknown. . 33-4COM 인터페이스 포인터 . . . . . . 33-4

    COM 서버 . . . . . . . . . . . . . 33-5CoClass 및 클래스 팩토리 . . . . . 33-6In7process, Out7of7process 및 원격 서버 . . . . . . . . . . . . 33-6마샬링 메커니즘

    (Marshaling mechanism) . . . . 33-8집합체 . . . . . . . . . . . . . . 33-9

    COM 클라이언트 . . . . . . . . . . 33-9COM 확장. . . . . . . . . . . . . . 33-10

    Automation 서버 . . . . . . . . . 33-12Active Server Page . . . . . . . . 33-13ActiveX 컨트롤 . . . . . . . . . . 33-13활성 문서 . . . . . . . . . . . . . 33-14트랜잭션 객체 . . . . . . . . . . . 33-14타입 라이브러리 . . . . . . . . . . 33-15타입 라이브러리의 내용 . . . . . 33-16타입 라이브러리 생성 . . . . . . 33-16타입 라이브러리 사용 시기 . . . . 33-16타입 라이브러리 액세스 . . . . . 33-17타입 라이브러리 사용의 이점 . . . 33-17타입 라이브러리 도구 사용 . . . . 33-18

    마법사로 COM 객체 구현 . . . . . . . 33-18마법사가 생성하는 코드. . . . . . . 33-21

    34 장

    Type Library 작업 34-1

    Type Library 에디터 . . . . . . . . . . 34-2Type Library 에디터의 각 부분. . . . . 34-3툴바. . . . . . . . . . . . . . . 34-3객체 목록 창 . . . . . . . . . . . 34-5상태 표시줄 . . . . . . . . . . . 34-5타입 정보 페이지 . . . . . . . . . 34-6

    타입 라이브러리 요소. . . . . . . . . 34-8Interface . . . . . . . . . . . . 34-8Dispinterface . . . . . . . . . . 34-9CoClasses. . . . . . . . . . . . 34-9

  • ��

    타입 정의 . . . . . . . . . . . . 34-9모듈 . . . . . . . . . . . . . . 34-10

    Type Library 에디터 사용 . . . . . . 34-10유효한 타입 . . . . . . . . . . . 34-11오브젝트 파스칼 또는 IDL 구문 사용 . . . . . . . . . . . . . 34-13새로운 타입 라이브러리 생성 . . . 34-19기존 타입 라이브러리 열기 . . . . 34-19타입 라이브러리에 interface 추가 . 34-20타입 라이브러리를 사용하여

    interface 수정 . . . . . . . . . 34-20interface나 dispinterface에 속성 및 메소드 추가 . . . . . . . . . . 34-21타입 라이브러리에 CoClass 추가 . 34-22CoClass에 인터페이스 추가 . . . . 34-22타입 라이브러리에 열거 추가 . . . 34-23타입 라이브러리에 별칭 추가 . . . 34-23타입 라이브러리에 레코드 또는 합집합 추가 . . . . . . . . . . 34-23타입 라이브러리에 모듈 추가 . . . 34-24타입 라이브러리 정보의 저장 및 등록 . . . . . . . . . . . . . 34-24

    Apply Updates 대화 상자 . . . . . 34-25타입 라이브러리 저장 . . . . . . . 34-25타입 라이브러리 새로 고침 . . . . 34-25타입 라이브러리 등록 . . . . . . . 34-26IDL 파일 export하기 . . . . . . . 34-26

    타입 라이브러리 배포 . . . . . . . . . 34-26

    35 장

    COM 클라이언트 생성 35-1

    타입 라이브러리 정보 Import하기 . . . . 35-2Import Type Library 대화 상자 사용. . 35-3Import ActiveX 대화 상자 사용 . . . . 35-4타입 라이브러리 정보를 import할 때 생성되는 코드 . . . . . . . . . . 35-5

    import된 객체 제어 . . . . . . . . . . 35-6컴포넌트 랩퍼 사용 . . . . . . . . . 35-6

    ActiveX 랩퍼 . . . . . . . . . . 35-6Automation 객체 랩퍼

    (object wrappers) . . . . . . . 35-7data7aware ActiveX 컨트롤 사용 . . . 35-8예: Microsoft Word로 문서 인쇄 . . . 35-101 단계: 이 예제를 위한 Delphi 준비. 35-102 단계: Word 타입 라이브러리

    import하기 . . . . . . . . . . 35-10

    3 단계: Microsoft Word를 제어하기 위해 Vtable 또는 디스패치인터페이스 객체 사용. . . . . . 35-11

    4 단계: 예제 클린업 . . . . . . . 35-12타입 라이브러리 정�