델파이에서 인터페이스 사용하기 Delphi의 인터페이스 작업 기능. 표준 인터페이스 요소

이 기사는 우리 그룹의 젊은 개발자들이 작성한 프로그램을 분석한 결과를 바탕으로 작성되었습니다.

스위칭 구성 요소의 순서를 올바르게 정렬합니다.

많은 사용자, 특히 이전에 DOS에서 작업한 사용자는 마우스가 아닌 Tab 키를 사용하여 키보드를 사용하여 입력 필드 간을 전환하는 습관을 가지고 있습니다. 게다가 마우스로 각 필드를 선택하는 것보다 훨씬 빠릅니다. 따라서 구성요소 전환 순서를 올바르게 설정해야 합니다. 이는 모든 컨테이너 구성 요소(패널, GroupBox 등) 내부의 구성 요소와 양식에 여러 구성 요소가 있는 경우 컨테이너 구성 요소 자체에 모두 적용됩니다.

컨테이너 내부의 구성 요소 전환 순서는 TabOrder 속성에 의해 지정됩니다. 활성화되는 첫 번째 구성 요소는 모든 구성 요소가 열거될 때까지 TabOrder가 0인 구성 요소이고 두 번째 구성 요소는 1인 구성 요소입니다. 또한 구성 요소에는 Tab 키로 전환할 때 구성 요소가 포커스를 받을지 여부를 나타내는 TabStop 속성이 있습니다. 구성 요소로의 전환을 금지해야 하는 경우 TabStop = false로 설정하세요. 이 경우 마우스를 통해서만 이 구성 요소로 전환할 수 있습니다.

한 프로그램에서 특정 키로 전환하는 데 익숙한 사용자가 습관적으로 다른 프로그램에서도 해당 키를 계속 사용하는 경우가 있습니다. 이는 Enter 키를 사용하여 입력 필드를 탐색할 수 있는 1C 사용자에게 자주 발생합니다. 음, 그들이 요청한다면 우리 프로그램에서 그러한 기회를 줄 것입니다. 양식의 KeyPreview 속성을 true로 설정하고 OnKeyPress 이벤트 핸들러를 작성합니다.

프로시저 TForm1.FormKeyPress(Sender: TObject; var Key: Char);
시작하다
ord(key)=vk_Return이면
Form1.SelectNext(PrimemForm.ActiveControl, true, true);
끝;

이 핸들러는 Enter 키를 누를 때 양식 요소를 통한 탐색을 제공합니다. 이 방법은 버튼에는 작동하지 않습니다. 왜냐하면... 버튼에서 Enter를 누르면 해당 버튼이 클릭되고, Tab을 누르면 토글 시퀀스의 다음 구성 요소에 입력 포커스가 제공됩니다.

기본 버튼

동일한 사용자는 모두 응용 프로그램 대화 상자에서 일반적으로 Enter 키로 선택을 확인하고 Esc 키로 취소할 수 있다는 사실에 빨리 익숙해집니다. 우리 프로그램에서 그들을 실망시키지 마십시오. 특히 그것은 매우 쉽기 때문입니다. Enter에 응답하는 버튼의 경우 Default 속성을 true로 설정합니다. Esc에 응답하는 버튼의 경우 취소 속성을 true로 설정합니다. 그게 다야.

예 혹은 아니오

모두 대화 상자사용자 작업을 요청하는 에는 작업 확인 및 작업 거부(예/아니요, 저장/취소 등)라는 버튼이 두 개 이상 있어야 합니다. 창 제목의 [X] 버튼으로 창을 닫으면 작업을 취소할 수 있습니다. 행위를 확인하는 버튼이 1개뿐이고, 거부하려면 제목에 [X] 버튼으로 창을 닫아야 하거나, 거부 가능성이 전혀 없는 경우는 용납되지 않습니다. 이는 사용자를 혼란스럽게 하고 논리적인 질문을 제기합니다. 어떻게 거부할 수 있습니까?

또한 위의 "기본 버튼" 단락에서 설명한 내용을 잊지 마십시오.

모든 대화 상자는 화면 중앙에 열려야 합니다.

디자인 모드에서 생성된 위치가 아닌 중앙에 위치합니다. 첫째, 더욱 시각적이며, 둘째, 사용자마다 화면 해상도가 달라지는 문제를 자동으로 제거합니다.

대화 상자가 모달이 아니고 이 창에서 사용자가 작업한 결과로 기본 창에서 변경 사항이 즉시 발생하는 경우(예: 데이터 세트 필터링, 그래프 다시 그리기 등)는 예외입니다.

창 크기는 화면 크기를 초과해서는 안 됩니다.

어떠한 경우에도. 창의 일부가 화면 너머로 확장되면 수치스러운 일입니다. 이 요구 사항은 사용자의 화면 해상도에 의존하지 않습니다. “해상도를 더 높게 설정하자” 같은 변명은 통하지 않습니다.

창 요소의 올바른 크기 조정

창 크기를 조정할 때, 창이 최대화될 때, 최대화 후 창이 복원될 때 창 요소의 크기가 조정되거나 올바르게 이동해야 합니다.

모든 것이 항상 표시됩니다.

창 크기를 줄이면 창 요소가 사라져서는 안 되며 창 자체의 스크롤 막대(스크롤러)가 나타나서는 안 됩니다. 모든 요소가 표시되고 액세스될 수 있도록 최소 창 크기를 제한할 수 있습니다. 창에 모두 표시되도록 구성 요소를 배치할 수 없는 경우 책갈피(예: PageControl)를 사용하여 구성 요소를 그룹으로 나눌 수 있습니다. 화면 해상도에 대한 변명도 무시하지 않습니다.

힌트는 어디에나 있고, 힌트는 언제나

버튼, 특히 도구 모음(예: ToolBar)의 경우 이 버튼이나 저 버튼이 필요한 이유를 항상 명확하게 알 수 있도록 힌트를 지정해야 합니다.

색상 스펙트럼

무지개의 모든 색상으로 폼의 구성 요소를 칠해서는 안 됩니다. 이로 인해 눈이 피로해지고 사용자의 주의가 산만해집니다. "멋져" 보이지는 않습니다. 강조 표시는 창의 특정 요소나 특정 부분에 사용자의 주의를 끌 필요가 있을 때 사용됩니다. 예를 들어, 오류가 있는 컬러 기록은 연한 빨간색으로, 반대로 성공적으로 확인된 기록은 연한 녹색으로 기록합니다.

결론

일반적인 프로그램, 특히 인터페이스의 결함을 찾아낼 수 있는 아주 좋은 방법이 있습니다. 간단합니다. 사용자의 입장에서 자신을 상상하고 30분 동안 그가 일하는 방식으로 작업해 보십시오. 사용자가 범위 내에 있으면 더욱 좋습니다(예: 동일한 조직에서 근무). 이런 경우에는 그 사람 옆에 앉거나 그 대신에 앉아서 그의 일을 하려고 노력하는 것이 더 좋습니다. 데이터 입력, 변경, 보고서 표시 등 올바르게 수행하는 방법을 모르는 경우 사용자에게 문의하십시오. 디버깅 모드에서와 같이 동일한 유형의 작업을 한두 개만 수행하는 것이 아니라 20-30개 또는 훨씬 더 다른 작업을 다른 순서로 수행하십시오. 무언가를 입력하는 것을 잊어버렸거나 잘못 입력한 후 프로그램이 이에 어떻게 반응하는지 확인하십시오. 당신은 당신의 프로그램의 약점을 빨리 보게 될 것입니다.

기사 작성자는 대학 입학 위원회의 업무를 자동화했으며, 프로그램을 도입한 첫해에는 입학 위원회에서 하루 3~4시간씩 지원자를 등록하고 개인 데이터를 작성하여 제공했습니다. 시험 보고서. 그리고 나머지는 근무 시간오류와 단점을 수정했습니다. 저를 믿으세요. 내년에는 거의 문제가 남지 않을 것입니다. 인사 모듈을 도입할 때도 같은 일이 일어났습니다.

따라서 사용자 경험을 염두에 두십시오. 그들이 귀하의 프로그램을 사용하여 쉽고 즐겁게 작업할 수 있도록 하십시오.

하나이자 가장 강점환경 델파이 프로그래밍 Delphi는 일종의 메타 프로그래밍을 허용하여 "프로그래밍 환경을 프로그래밍"할 수 있는 개방형 아키텍처입니다. 이 접근 방식은 Delphi를 고품질로 변환합니다. 새로운 레벨응용 프로그램 개발 시스템을 사용하여 거의 모든 생성 단계를 지원하는 추가 도구를 이 제품에 내장할 수 있습니다. 응용 시스템. 이러한 광범위한 가능성은 IDE(통합 개발 환경)와 외부 도구 간의 연결 링크인 Delphi에 구현된 소위 개방형 인터페이스 개념 덕분에 열립니다.

이 기사는 Delphi의 개방형 인터페이스에 대해 다루고 있으며 이들이 제공하는 기능에 대한 개요를 제공합니다. Delphi는 도구 인터페이스, 디자인 인터페이스, 전문가 인터페이스, 파일 인터페이스, 편집 인터페이스, 버전 제어 인터페이스 등 6가지 개방형 인터페이스를 정의합니다. 이 기사의 틀 내에서 각각의 기능을 자세히 다루고 설명할 수 있을 것 같지 않습니다. Delphi 소스 텍스트는 고려 중인 문제를 더욱 철저하게 이해하는 데 도움이 될 것입니다. 다행스럽게도 개발자는 자세한 설명을 제공했습니다. 공용 인터페이스를 나타내는 클래스 선언은...\Delphi\Source\ToolsAPI 디렉토리의 해당 모듈에 포함되어 있습니다. 디자인 인터페이스(DsgnIntf.pas 모듈)는 속성 편집기 및 구성 요소 편집기를 생성하기 위한 도구를 제공합니다.

속성 및 구성 요소 편집기는 별도로 논의할 가치가 있는 주제이므로 속성 편집기는 해당 속성의 값을 변경하려고 할 때 Object Inspector의 동작을 제어하고 구성 요소 편집기는 다음과 같은 경우 활성화된다는 점을 기억해 두십시오. 더블 클릭폼에 배치된 컴포넌트 이미지를 마우스 왼쪽 버튼으로 클릭하세요. 버전 제어 인터페이스(VCSIntf.pas 모듈)는 버전 제어 시스템을 생성하기 위한 것입니다. 버전 2.0부터 Delphi는 통합 버전 관리 시스템인 Intersolv PVCS를 지원하므로 대부분의 경우 자체 시스템을 개발할 필요가 없습니다. 이러한 이유로 버전 제어 인터페이스에 대한 고려도 생략하겠습니다. 파일 인터페이스(FileIntf.pas 모듈)를 사용하면 IDE의 작업 파일 시스템을 재정의할 수 있으므로 파일 저장 방법(예: 데이터베이스 서버의 메모 필드)을 선택할 수 있습니다. 편집 인터페이스(EditIntf.pas 모듈)는 소스 텍스트 버퍼에 대한 액세스를 제공합니다. 이를 통해 코드를 분석 및 생성하고, 코드 편집기 창에서 커서 위치를 확인 및 변경하고, 소스 텍스트의 구문 강조 표시를 제어할 수도 있습니다.

특수 클래스는 양식에 배치된 구성 요소(구성 요소 유형 정의, 상위 및 하위 구성 요소에 대한 참조 얻기, 속성 액세스, 포커스 이동, 삭제 등), 양식 자체 및 프로젝트 리소스 파일에 대한 인터페이스를 제공합니다. 또한 편집 인터페이스를 사용하면 모듈의 소스 텍스트 변경, 양식 수정, 구성 요소 이름 변경, 모듈 저장, 이름 변경 또는 삭제, 프로젝트 리소스 파일 변경, 등. 도구 인터페이스(ToolIntf module.pas)는 개발자가 다음을 얻을 수 있는 수단을 제공합니다. 일반 정보 IDE 상태에 대한 정보와 프로젝트 및 개별 파일 열기, 저장 및 닫기, 모듈 생성, 현재 프로젝트에 대한 정보 얻기(모듈 및 양식 수, 이름 등), 등록과 같은 작업 수행 파일 시스템, 개별 모듈에 대한 인터페이스 구성 등 모듈식 알림자 외에도 도구 인터페이스는 파일 및 프로젝트 열기/닫기, 데스크탑 프로젝트 파일 로드 및 저장, 프로젝트 모듈 추가/제외, 패키지 설치/제거, 프로젝트 컴파일 및 기타 이벤트에 대해 알리는 추가 기능 알림자를 정의합니다. 모듈식 알림자와 달리 추가 기능 알림자를 사용하면 일부 이벤트의 실행을 취소할 수 있습니다.

또한, 도구 인터페이스는 Delphi IDE의 메인 메뉴에 액세스할 수 있는 수단을 제공하므로 여기에 추가 항목을 포함시킬 수 있습니다. 전문가 인터페이스(ExtIntf.pas 모듈)는 전문가(기능을 확장하기 위해 IDE에 내장된 소프트웨어 모듈)를 생성하기 위한 기초입니다. 전문가의 예로는 데이터베이스 테이블의 내용을 보고 변경하기 위한 양식을 생성하는 Delphi 데이터베이스 양식 마법사가 있습니다. 전문가 클래스를 정의한 후에는 델파이가 전문가에 대해 "학습"하는지 확인해야 합니다. 이렇게 하려면 RegisterLibraryExpert 프로시저를 호출하고 전문가 클래스의 인스턴스를 매개변수로 전달하여 등록해야 합니다. 예를 들어, 해당 Delphi 메뉴 항목을 선택하면 실행 중이라는 메시지를 표시하는 esStandard 스타일의 간단한 전문가를 만들어 보겠습니다. 위의 표에서 볼 수 있듯이 esStandard 스타일에는 6가지 메서드 재정의가 필요합니다.

전문가를 "실행"하려면 구성 요소/구성 요소 설치... 메뉴 항목을 선택하고 찾아보기 대화 상자에서 전문가가 포함된 모듈(이 경우 exmpl_01.pas)을 선택한 다음 확인을 클릭해야 합니다. dclusr30.dpk 패키지를 컴파일한 후 Delphi 메인 메뉴의 도움말 섹션에 Simple Expert 1 항목이 나타나야 하며, 선택하면 "Standard Expert가 시작되었습니다!"라는 정보 메시지가 나타납니다. Delphi가 도움말 섹션에 전문가 메뉴 항목을 배치한 이유는 여전히 미스터리입니다. 메뉴 항목이 Delphi가 원하는 위치가 아닌 원하는 위치에 나타나는 것이 마음에 들지 않으면 다음 옵션이 가능합니다. 메뉴 항목의 자동 생성을 제거하는 추가 기능 스타일로 전문가를 생성하고 도구 인터페이스를 사용하여 메뉴 항목을 "수동"으로 추가합니다. 이렇게 하면 메인 메뉴에서 새 항목의 위치를 ​​임의의 방식으로 설정할 수 있습니다.

메뉴 항목을 추가하려면 도구 인터페이스의 기초인 TIToolServices 클래스와 IDE 기본 메뉴 및 해당 항목에 대한 인터페이스를 구현하는 TIMainMenuIntf, TIMenuItemIntf 클래스를 사용하십시오. ToolServices 클래스 TIToolServices의 인스턴스는 초기화될 때 IDE 자체에 의해 생성됩니다. Delphi 메인 메뉴와 해당 항목에 대한 인터페이스를 출시하는 책임은 전적으로 개발자에게 있습니다. 그 과정에서 전문가의 기능 부하를 약간 복잡하게 만들어 보겠습니다. 메뉴 항목을 활성화하면 다음에서 열린 프로젝트 이름에 대한 인증서가 발급됩니다. 이 순간환경에서: 이 예에서 중앙 위치는 Delphi IDE의 기본 메뉴에 메뉴 항목을 추가하는 AddIDEMenuItem 함수가 차지합니다. 매개변수로서 새 메뉴 항목의 텍스트, 해당 식별자, 새 항목이 삽입되기 전 항목의 식별자, Ctrl 키와 함께 다음 작업에 사용할 수 있는 키의 기호 표현을 받습니다. 빠른 접근새 항목 및 새 항목 선택에 해당하는 이벤트 핸들러. 시계 항목 앞의 보기 섹션에 새 메뉴 항목을 추가했습니다.

이제 알리미에 대해 알아 보겠습니다. 프로젝트의 닫기/열기를 추적하고 이에 따라 활성 프로젝트의 이름을 저장하는 필드를 조정하는 추가 기능 알리미를 정의해 보겠습니다(간결성을 위해 이전 예제와 비교하여 변경되지 않은 메서드의 구현은 생략하겠습니다). 알리미를 구현하기 위해 하위 TIAddInNotifier인 TAddInNotifier 클래스를 정의하고 FileNotification 메서드를 재정의했습니다. IDE는 추가 기능 알리미가 응답할 수 있는 이벤트가 발생할 때마다 이 메서드를 호출합니다(이러한 각 이벤트는 TFileNotification 유형의 해당 상수로 표시됩니다). TAddInNotifier 클래스의 Expert 필드는 다음과 같은 용도로 사용됩니다. 피드백전문가와 함께(TAddInNotifier.FileNotification 메소드) 전문가의 소멸자에서는 알림자가 등록 취소되고 알림자가 파기됩니다. 이제 모듈형 알리미의 사용을 설명해 보겠습니다. 프로젝트 파일을 저장하는 각 작업에 대한 메시지를 발행하는 추가 기능 전문가를 만들어 보겠습니다. 간결성을 위해 이미 익숙한 방법의 구현은 제시하지 않습니다. 이 예에서 추가 기능 전문가는 이벤트를 모니터링합니다. 프로젝트 개시/종료에 해당합니다.

프로젝트가 열릴 때마다 해당 프로젝트 파일에 해당하는 모듈식 알림자가 등록됩니다. 구현 측면에서 모듈식 알림자는 추가 기능 알림자와 유사합니다. 즉, TIModuleNotifier의 자손인 TModuleNotifier 클래스를 정의하고 해당 Notify 및 ComponentRenamed 메서드를 재정의합니다. IDE는 이 모듈과 관련된 특정 이벤트가 발생할 때 Notify 메서드를 호출합니다. 이 방법 내에서 특정 이벤트에 대한 반응이 결정됩니다. ComponentRenamed 메소드는 모듈 폼의 컴포넌트 이름이 변경될 때 호출됩니다. 우리는 이 메서드를 사용하지 않지만 이를 재정의해야 합니다. 그렇지 않으면 구성 요소 이름이 변경될 때 기본 클래스의 추상 메서드가 호출되어 예측할 수 없는 결과를 초래합니다.

모듈식 알림자를 등록하는 것은 추가 기능 알림자를 등록하는 것에 비해 약간 더 복잡한 프로세스입니다. 먼저 모듈 인터페이스(TIModuleInterface)를 얻은 다음 모듈 인터페이스를 사용하여 알림자를 등록합니다. 프로젝트가 닫히면 모듈식 알리미가 등록 취소되고(TIModuleInterface를 다시 사용하여) 알리미가 삭제됩니다. 결론적으로 코드 편집기 창에서 커서 위치를 결정하는 방법을 보여 드리겠습니다. 적절한 메뉴 항목을 선택할 때 활성 파일의 이름과 해당 파일의 커서 위치가 포함된 메시지를 표시하는 전문가를 만들어 보겠습니다(이 예에 필수적인 메소드 구현만 표시됨). 커서 위치를 결정하려면, 우리는 다음과 같은 일련의 인터페이스를 얻어야 합니다: 모듈형 인터페이스(TIModuleInterface); 코드 편집기 인터페이스(TIEditorInterface); 편집기 창(TIEditView)의 모듈 프레젠테이션 인터페이스.

전문가 메뉴 항목을 선택할 때 소스 텍스트 파일(*.pas)이 활성화된 경우 활성 파일 이름과 현재 커서 위치가 포함된 메시지가 표시됩니다. 활성 파일이 pas 파일이 아닌 경우 메시지가 발행되지 않습니다. 활성 파일의 이름을 얻으려면 TIToolServices 클래스의 GetCurrentFile 메서드를 사용하십시오. 이것으로 개방형 인터페이스를 사용하는 방법에 대한 고려를 마칩니다. CD-ROM에는 제공된 모든 예제에 대한 소스 코드가 포함되어 있습니다. CD-ROM에는 사용자가 Delphi 모듈의 소스 텍스트를 북마크에 추가할 수 있는 추가 기능 전문가가 포함된 더욱 복잡하고 자세한 예제도 포함되어 있습니다. Bookmarks Expert 설치 및 사용에 대한 간략한 지침은 bkmrks97.htm 파일에 포함되어 있습니다. 따라서 이 기사에서는 개방형 인터페이스에 대한 일반적인 개요를 제공하고 사용 예를 제공합니다. 다시 한 번 반복하겠습니다. 개방형 인터페이스용 소스 코드가 제공되므로 관심 있는 세부 사항을 쉽게 이해할 수 있습니다. 개방형 인터페이스가 제공하는 다양한 가능성이 여러분에게 하나 이상의 대담하고 유용한 아이디어를 제공할 수 있기를 바랍니다.

결과만을 위해서

마감일을 엄격히 준수

투명도

프로젝트 구현

기술 지원을 선물로 드립니다

1C 프로그래밍, 수정, 상담

우리가 일하는 방식

1. 전화로 문제를 논의합니다. 존재하는 경우 원격 액세스- 컴퓨터 화면에 표시합니다.

2. 프로젝트 규모가 클 경우 작업 비용을 루블 단위로 추정하고, 그렇지 않은 경우에는 대략적인 시간을 추정합니다.

3. 우리는 일을 완수합니다.

4. 귀하는 귀하의 프로그램에 있는 작업을 수락하고, 부족한 점이 있으면 이를 수정합니다.

5. 송장을 발행하고 귀하가 지불합니다.

작업 비용

1. 모든 작업은 상담, 표준 구성 업데이트, 새 보고서 개발 또는 프로그래밍, 처리, 버튼 등 3가지 범주로 나뉩니다.

3. 10시간 이상의 작업은 사전에 준비해야 합니다. 기술적인 업무설명 및 작업 비용. 기술 사양이 귀하와 합의된 후에 작업이 시작됩니다.

기술적 지원

1. 3개월 이내에 기 접수된 작품에 오류가 발견될 경우, 무료로 수정해 드립니다.

2. 단골 고객의 경우 1년 이내에 업무상 부족한 점을 무료로 개선해 드립니다.

귀하의 비즈니스를 관리하는 소프트웨어입니다.

1C:Enterprise 구매

우리는 공식 딜러 1C 회사, 다양한 제품을 당사에서 구매할 수 있습니다. 소프트웨어 제품그리고 라이센스. "박스" 구입은 물론, 프로그램 설정, 조언, 기본 설정을 도와드립니다.

  • 회계
  • 매장 자동화
  • 모조리
  • 설치 지원 및 초기 설정패키지에 포함되어 있습니다!
  • 고객 요구에 맞게 구성을 미세 조정하고 표준 구성에 필요한 기능이 없는 새로운 모듈을 개발합니다.
1c 회계 1C: 무역 관리 1C: 소매점 1C: 급여 및 인사 관리
3300 문지름부터. 6700 문지름부터. 3300 문지름부터. 7400 문지름부터.

서버 제공.

서버 + 1C의 즉각적인 설정.

서버가 없나요? 문제 없습니다. 클라우드에서 서버를 선택하고 빠르게 설정하겠습니다. 적은 비용으로 매우 안정적인 솔루션을 얻을 수 있습니다.

  • 연중무휴 24시간 가용성
  • 자신의 것을 지킬 필요가 없습니다 시스템 관리자(절감액은 서버 비용을 충당합니다).
  • 서버에 1C를 빠르게 설정하고 설치하면 3일 안에 이미 완벽하게 작동하는 시스템을 갖게 됩니다.
  • 다음으로 이동할 수 있습니다. 로컬 서버, 솔루션이 만족스럽지 않은 경우.

1C에서 보낸 SMS

고객이 프로모션과 할인에 대해 알 수 있기를 원하시나요? 고객이 돌아오지 않나요? 1C에서 직접 SMS 전송을 설정하세요!

우리 회사는 1C에서 직접 고객에게 SMS 전송을 신속하게 설정할 수 있습니다. 자동화할 수 있는 이벤트의 예:

  • 구매해 주셔서 감사드리며, 다음 구매 시 즉시 보너스가 지급됩니다.
  • 생일이나 기타 중요한 명절 선물로 카드에 보너스가 적립됩니다.
  • 창고에 물품 도착 알림.
  • 선물 보너스 만료.
  • 선불입금 및 상품예약 접수에 대한 통지입니다.
  • 매장/사무실로 가는 길을 포함한 주소, 전화번호.
  • 등등.

1C에서의 설정은 당사 전문가 또는 귀하의 직원이 수행할 수 있습니다. SMS 요금 페이지에서 요금을 확인할 수 있습니다.

  • SMS 전달 보장, 전달된 SMS에 대해서만 비용이 청구됩니다.
  • 각 SMS에 대해 별도의 가격이 적용됩니다.
  • 다양한 방법으로 잔액을 충전하세요.
  • 언제든지 전송된 모든 SMS 기록을 확인하세요.
  • 메시지 수신자의 휴대폰에 있는 디지털 번호 대신 보낸 사람의 이름입니다.

OOP(객체 지향 프로그래밍)는 클래스 개념 외에도 인터페이스의 기본 개념도 제공합니다.

인터페이스란 무엇이며 Delphi 프로그래밍 언어에서 인터페이스를 사용하는 기능은 무엇입니까?

인터페이스는 클래스나 구성 요소가 제공하는 서비스를 지정하는 데 사용되는 프로그램 코드의 의미론적 구문 구조입니다(Wikipedia).

기본적으로 인터페이스는 이 인터페이스가 구현하는 클래스로 작업할 때 사용해야 하는 속성 및 메서드 목록과 해당 서명(이름, 데이터 유형, 허용되는 매개 변수(프로시저 및 함수용) 등)을 정의합니다. 따라서 특정 인터페이스를 구현하는 클래스는 모든 구성 요소를 구현해야 합니다. 또한 설명 방법을 엄격히 준수합니다.

인터페이스는 종종 추상 클래스와 비교되지만 모든 유사점에도 불구하고 이 비교는 완전히 정확하지 않습니다. 최소한 추상 클래스를 사용하면 멤버의 가시성을 제어할 수 있습니다. 동시에 인터페이스에 대한 범위는 정의되지 않습니다.

인터페이스를 사용하면 특정 기능에 대한 액세스를 통합하고 클래스 상속과 관련된 여러 가지 문제를 피할 수 있으므로 아키텍처를 더욱 유연하게 만들 수 있습니다(인터페이스는 서로 상속될 수도 있음).

Delphi에서 인터페이스를 선언하려면 인터페이스 키워드를 사용하십시오. 이는 외부에서 접근할 수 있는 모듈의 섹션(인터페이스와 구현 키워드 사이)을 정의하는 동일한 키워드입니다. 그러나 인터페이스를 선언할 때는 클래스 선언과 유사하게 다른 구문이 사용됩니다.

델파이/파스칼

IMyNewInterface = 인터페이스 프로시저 InterfaceProc; 끝;

IMyNewInterface =인터페이스

프로시저 인터페이스Proc ;

끝 ;

따라서 인터페이스 선언 구문 자체는 다른 프로그래밍 언어와 근본적으로 다르지 않습니다(파스칼 기반 구문의 기능은 포함되지 않음). 동시에 인터페이스 구현에는 여러 가지 특징이 있습니다.

사실 Delphi 인터페이스는 원래 COM 기술을 지원하기 위해 도입되었습니다. 따라서 Delphi에서 다른 모든 인터페이스(TObject의 일종의 유사체)의 조상인 IInterface 인터페이스에는 이미 이 기술을 사용하기 위한 세 가지 기본 메소드인 QueryInterface, _AddRef, _Release가 포함되어 있습니다. 결과적으로 클래스가 인터페이스를 구현하는 경우 이러한 메서드도 구현해야 합니다. 이 클래스가 COM 작업용이 아닌 경우에도 마찬가지입니다.

IInterface 인터페이스의 이러한 기능으로 인해 Delphi에서 인터페이스를 사용하면 대부분의 경우 분명히 사용되지 않는 기능이 클래스에 추가됩니다.

이러한 메서드의 구현이 이미 포함되어 있는 라이브러리 클래스 TInterfaceObject가 있으며, 이 클래스에서 상속할 때 직접 구현할 필요가 없습니다. 그러나 Delphi는 다중 클래스 상속을 지원하지 않기 때문에 이를 사용하면 이미 필요한 기능을 설계하고 구현하는 데 추가적인 어려움이 발생하는 경우가 많습니다.

이 모든 것이 인터페이스가 제공하는 모든 가능성에도 불구하고 실제 사용 Delphi에서는 COM 작업 외에는 거의 아무것도 없습니다.

주로 이 기술, 인터페이스 또는 필연적으로 추가되는 기능 및 아키텍처 제한과 함께 작동하도록 최적화되는 것은 다른 문제를 해결할 때 그 자체를 정당화하지 않습니다.

따라서 실제로 많은 Delphi 프로그래머는 여전히 애플리케이션 아키텍처 개발을 위한 강력하고 유연한 도구가 부족합니다.

창조 상호 작용사용자는 프로그램 작동에 필요한 구성 요소 팔레트에서 선택하는 작업이 줄어듭니다. 델파이 구성요소, 직원 상호 작용관리는 물론이고 상호 작용정보를 표시하고 이를 후속 레이아웃을 통해 양식으로 전송합니다.

귀하가 만드는 사용자 인터페이스는 사용자에게 친숙한 표준 요소를 사용해야 하며 최대한의 편의성을 제공해야 합니다. 이 모든 것은 궁극적으로 인터페이스의 효율성, 즉 최소한의 노력으로 최대 결과와 같은 기준에 의해 결정됩니다.
사용자 친화적인 인터페이스를 만드는 원리는 알려져 있습니다. 제작 시 가장 일반적인 원칙으로 사용자 인터페이스세 가지 주요 사항을 고려할 수 있습니다.

  1. 프로그램은 작업을 완료하는 데 도움이 되어야 하며, 그 작업이 되어서는 안 됩니다.
  2. 프로그램을 사용할 때 사용자는 바보처럼 느껴져서는 안됩니다.
  3. 프로그램은 사용자가 컴퓨터를 바보로 여기지 않도록 작동해야 합니다.
첫 번째 원칙- 이것은 인터페이스의 소위 "투명성"입니다. 사용자 인터페이스는 직관적이고 배우기 쉬워야 하며 작업 과정에서 사용자가 극복해야 하는 문제를 일으키지 않아야 합니다. 불필요한 장식 없이 표준 구성 요소를 사용하고 유사한 프로그램에서 사용되는 친숙한 제어 기술을 사용하면 성능 기준을 달성할 수 있습니다. 첫 번째 원칙.

두 번째 원칙사용자의 지적 능력을 무시하는 것입니다. 내 경험을 통해 나는 종종 사용자가 컴퓨터 작업 방법을 모르는 것이 아니라 스스로 어떤 일을 하는 것을 두려워한다는 것을 알고 있습니다. 따라서 사용자 인터페이스는 최대한 친숙해야 합니다.
더욱이 프로그램 비용, 심지어 컴퓨터 자체 비용도 예를 들어 수년간의 노력으로 생성된 데이터베이스 비용과 비교할 수 없기 때문에 사용자의 두려움은 종종 정당화됩니다. 그렇기 때문에 프로그래머는 사용자 인터페이스를 만들 때 항상 프로그램에 잘못된 동작과 잘못된 데이터의 사용자 입력에 대한 "완전한 보호"를 구축해야 합니다. 그러나 일부 프로그래머는 이러한 보호 기능에 너무 열중하여 너무 방해적으로 만들어 결과적으로 프로그램 작동이 유명한 "왼쪽으로 한 단계, 오른쪽으로 한 단계는 탈출구로 간주됩니다"와 유사합니다! 그리고 프로그래머가 문제에 대한 해결책으로 만드는 것은 문제 자체를 만들기 시작합니다.
준수합니다 두 번째 원칙프로그램이 사용자의 행동을 "수정"하고 사용자가 어떻게 행동해야 하는지 정확하게 표시하여 사용자를 좁은 틀에 가두도록 허용할 필요가 없습니다. 또한 정보 프롬프트 메시지, 특히 대화 상자를 표시하는 데 너무 열중해서는 안 됩니다. 이렇게 하면 사용자의 작업에 방해가 되기 때문입니다. 힌트를 모두 비활성화하는 기능을 제공하는 것이 더 좋습니다.

세 번째 원칙가능한 최고의 "정신적" 능력을 갖춘 프로그램을 만드는 것입니다. 급속한 발전에도 불구하고 컴퓨터 장비, 널리 사용되는 프로그램조차도 매우 조건부로 만 인공 지능을 가지고 있다고 할 수 있습니다. 가장 단순한 상황에서도 혼란을 야기하는 어리석은 질문이 포함된 대화 상자를 표시하여 사용자의 작업을 방해합니다. 그 결과, 사용자들은 “정말 멍청한 기계야!”라고 마음 속으로 외칩니다.
나는 개인적으로 거의 모든 사람들의 끊임없는 질문에 짜증이 난다. 텍스트 편집기원본 텍스트와 현재 텍스트의 기호는 다르지 않지만 변경된 텍스트를 저장할지 여부에 대해 설명합니다. 예, 뭔가를 입력한 다음 모든 것을 다시 반환했습니다. 알아내는 것이 정말 불가능합니까? 결국 내가 망친 것은 없는지 확인해야 한다.

다음 규칙을 준수하십시오.

표준 인터페이스 요소
이 인터페이스 요소에 표준인 구성요소를 사용하십시오. 귀하의 프로그램을 접한 사용자는 서로를 알아가는 데 시간을 낭비하지 않고 즉시 작업을 시작할 것입니다. 이는 전문적으로 만들어진 프로그램의 징후 중 하나입니다.
작은 도구 팔레트
너무 많은 다른 구성 요소를 사용하지 마십시오. 그리고 당연히 한 곳 어딘가에 하나의 표준 구성 요소를 사용했다면 비슷한 경우에도 이를 사용합니다.
컨트롤 사이의 간격이 동일함
인터페이스 요소를 서로 같은 거리에 배치합니다. 흩어진 부품들이 마치 전문적으로 제작되지 않은 제품 같은 느낌을 줍니다. 반대로 양식의 인터페이스를 구성하는 버튼, 스위치, 확인란 및 기타 구성 요소의 배치를 신중하게 검증하는 것은 고품질 작업의 표시입니다.
TabOrder. "올바른" 순서
탭 순서키를 눌렀을 때 화면 커서가 컨트롤을 가로질러 이동하는 순서입니다. . 적절하게 작성된 프로그램에서 커서는 사용자의 프로그램 작업 논리에 따라 이동합니다. 프로그램을 만들 때 프로그래머는 종종 구성 요소를 변경하고 일부를 제거하고 필요에 따라 다른 것을 추가합니다. 결과적으로 완성된 프로그램에서 커서는 양식 주위에서 혼란스럽게 이동합니다. 프로그램을 완료한 후에는 구성하는 것을 잊지 마십시오. 탭 순서.
글꼴 선택
글꼴만 그대로 놔두세요. Delphi의 기본 글꼴은 프로그램이 실행될 수 있는 모든 시스템에 적합합니다. 중요한 요소를 강조할 때만 굵은 글꼴을 사용하세요. 애플리케이션 이탤릭체특히 밑줄을 긋다는 사용자가 하이퍼링크로 착각할 수 있는 잘못된 형식입니다.
색상 선택
인터페이스 요소의 색상은 글꼴과 마찬가지로 기본적으로 표준으로 두는 것이 좋습니다. Delphi는 Windows 시스템 팔레트를 사용하며 사용자는 색상을 변경하여 쉽게 사용자 정의할 수 있습니다.
대체관리
전문적으로 만든 프로그램은 마우스뿐만 아니라 키보드로도 제어할 수 있어야 합니다. 마우스로만 수행할 수 있는 기능(그림으로 그리기)이 있어서는 안 됩니다. 그래픽 편집자계산되지 않습니다!). 가장 많이 사용되는 기능의 경우 빠른 액세스를 위해 “단축키”를 제공해야 합니다.
인터페이스 브릭
사용자 인터페이스의 특정 요소와 관련하여 프로그램과 사용자 상호 작용의 품질은 다음에 따라 달라집니다.
  • 수행하는 작업에 대한 제어 요소의 준수;
  • 제어 요소가 작동하는 규칙.
    이 페이지에서는 일부 인터페이스 요소를 생성하는 규칙에 대해 설명합니다.
이제 저는 폼의 구성 요소를 관리하기 위해 Delphi가 제공하는 도구, 키를 눌렀을 때의 상대적 위치 및 커서 동작을 보여주고 싶습니다. .

올바른 순서로 구성 요소를 서로 상대적으로 정렬하려면 먼저 그것들을 강조하는 것이 필요하다. 선택한 구성 요소가 포함된 양식 영역에 동그라미를 치기만 하면 됩니다. 아니면 " 옮기다", 동일한 마우스를 사용하여 선택할 각 구성 요소를 나타냅니다. 선택한 구성 요소에서 다시 마우스를 클릭합니다("를 누른 상태에서). 옮기다")를 선택 취소합니다.

선택한 구성 요소는 단일 전체로 관리될 수 있습니다. 양식 주위로 이동하고, 동일한 속성에 값을 할당하고, 복사(예: 다른 양식에 설치하기 위해)하거나 삭제할 수도 있습니다.

이제 구성요소 중 하나를 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 선택합니다. 위치 -> 정렬...그룹에 있는 구성 요소의 수평 및 수직 위치를 조정할 수 있는 대화 상자가 나타납니다. 예를 들어, 네 개의 버튼을 왼쪽으로 정렬하고 버튼 사이의 수직 거리가 동일한지 확인해야 합니다. 이렇게 하려면 라디오 버튼을 선택하세요. 수평: 왼쪽그리고 세로: 균등한 간격.

항목을 선택하여 센터, 중심이 수평 또는 수직으로 같은 선에 위치하도록 구성 요소를 배열하고 항목을 배치합니다. 창 중앙구성요소를 창 중앙으로 이동합니다(수평 또는 수직으로도 이동).

같은 메뉴라인에서 영형더...키를 눌렀을 때 인터페이스 요소에서 커서가 이동하는 방식을 제어하는 ​​대화 상자가 나타나도록 합니다. . Form이 화면에 나타나면 커서는 자연스럽게 대화 상자의 첫 번째 줄에 있는 구성 요소에 놓이게 됩니다. 그런 다음 목록 아래로 이동합니다. 대화 상자에서 두 개의 파란색 위쪽 및 아래쪽 화살표는 선택한 구성 요소의 위치를 ​​제어합니다. 필요한 구성 요소를 선택하고 화살표를 사용하여 목록의 원하는 줄로 이동하는 등의 작업을 수행합니다.

메뉴 항목을 선택할 때 제어 ->두 가지 항목으로 구성된 하위 메뉴가 나타납니다.

  • 앞으로 가져 오기
  • 맨 뒤로 보내기
이는 프로그래밍 방식으로도 사용할 수 있는 구성 요소 메서드입니다. 버튼1.SendToBack버튼을 "배경"으로 이동하고 버튼1.앞으로 가져오기- 앞으로 가져 오기". 즉, 한 구성 요소가 다른 구성 요소 위에 배치되면 이러한 메서드는 해당 위치를 바꿉니다. 이것이 적용될 수 있는 경우는 매우 분명합니다.


맨 위