본문 바로가기

전체 글1019

델파이 콤보박스(TComboBox)의 팝업리스트 가로폭 늘리기 델파이 콤보박스(TComboBox) procedure TMain_Form.ComboBox1DropDown(Sender: TObject); begin SendMessage( TComboBox( Sender ).Handle, CB_SETDROPPEDWIDTH, 300, 0 ); end; 추가 TiP 콤보박스 글자까지 확인해서 글자의 최대값으로 컴보박스 크기를 조절하는것입니다. procedure TForm1.AdjustDropDownWidth(Sender: TObject); var j,i,ItemWidth, IW: Integer; begin For j := ComponentCount-1 Downto 0 do Begin ItemWidth := 0; If (Components[j] is TCombobox) The.. 2023. 10. 26.
델파이 메소드 포인터(Method Pointer) 델파이 메소드 포인터(Method Pointer) 프로시저 형 (Procedural Type) : C 언어의 함수 포인터와 유사한 개념. 정수나 문자열 변수 뿐 아니라 프로시저를 변수로 사용할 수 있다. type TestProc = procedure (var Param: Integer); 다음과 같이 선언된 프로시저 형의 변수 TestProc이 있다. 이것은 레퍼런스에 의해 전달되는 정수 파라미터의 프로시저 형의 변수를 뜻한다. 이 프로시저 형은 정확하게 같은 파라미터를 갖는 루틴이면 어느 것과도 호환이 된다. procedure DoubleProc (var Value: Integer); begin Value := Value * 2; end; procedure TripleProc (var Value: In.. 2023. 10. 24.
델파이 소켓(통신) 프로그램 델파이 소켓 프로그램 델파이 소켓(통신) 프로그램 송수신 방식 1. 심플렉스 (Simplex) : 한 지점에서 다른 지점으로만 보내는 방식 2. 하프 – 듀플렉스 (Half - Duplex) : 동시에 양방향으로 통신할 수는 없고 한 지점에서 다른 지점으로 보낼 때는 받는 지점에서는 받기만 할 수 있고 보낼 수는 없는 방식 3. 풀 – 듀플렉스 (Full - Duplex) : 양방향 통신이 가능한 방식 데이터 전송에 필요한 요소 1. Ip 2. Port 3. Packet 네트워크 통신 유형 1. TCP (Transmission Control Protocol) : 목적지와 일단 접속을 이룬 다음에 데이터를 전송하는 연결 지향 프로토콜 2. UDP (User Datagram Protocol) : 사전 접속을.. 2023. 10. 23.
누수 일기 1편 누수 누수라는 말은 흔히 접하는 경우는 없을것이다. 나도 수십동안 누수라는 말을 알고는 있지만 자주 접할일이 거의 없는 단어로 생각하고 살었다 ​ 그러나........ 지옥은 올해 2023년 6월부터 시작되었다. 장마가 시작되는 시점 장마중에 밑에 집에서 연락이왔다. 밑에 집에는 70~80대로 보이시는 어르신 부부가 살고 계셨다.​ 현재 나는 2년전 전체 리모델링을 하고 살고있는상태~! ​ 어르신이 위에서 물이 새는거 같다라고 물 새는 부위를 보여주셨다~! ​ 현관쪽 천장에 벽지고 젖어있었다~! 나는 장마라 또 비가 많이 와서 새는거 같다라고 했고 그 당시 그냥 알고만있고 넘었갔다! ​ 하지만... 한달 뒤 어르신이 다시 호출이 있어 내려가보니 천장에 벽지는 점점 번지고 있었다. 확실히 내가 봐도 한달전.. 2023. 10. 22.
델파이 리소스(Resource)의 활용 2 델파이 리소스(Resource) 1. 리소스 Dll 만들기 리소스 Dll이란 말 그대로 리소스를 포함하고 있는 Dll을 말한다. 만드는 순서를 먼저 알아보자. 1. 리소스의 경로를 저장하고 있는 RC 파일을 만든다. 2. RC 파일을 Brcc32등으로 컴파일 하여 Res 파일로 만든다. 3. 만들어진 Res 파일을 Dll에 포함시킨다. (폼에 포함시키는것과 동일하다.) 4. Dll을 컴파일 한다. 2번까지는 지난번 강좌의 내용과 같다. 3번 항목의 Res를 Dll에 포함 시키는 부분은 폼에 하는것과 동일하다고 했는데 아래의 예제를 보면 왜 동일하다는 건지 쉽게 이해가 될 것이다. library ResOnly; {$R Resource.res} begin end. 아무런 함수등을 포함하지 않고 오직 리소스만.. 2023. 10. 18.
델파이 리소스(Resource)의 활용 1 델파이 리소스(Resource) 리소스 파일 만들기 리소스 파일은 바이너리 형태의 데이터로서 RCDATA라 부른다. 리소스 파일은 Res라는 확장자를 가지게 되는데 이 Res 파일을 만들기 위한 과정을 살펴 보자 Res 파일을 만들기 위해서는 Text로 작성된 RC 파일이 있어야 한다. 이 RC 파일은 Res 파일에 포함하고자 하는 데이터 이름과 데이터 식별자, 그리고 데이터로 구성된 Text 파일이다. RC 파일의 예 WAVEFILE WAVE c:\WaveSound.wav 이렇게 작성된 것이 RC 파일이다. 여기서 'WAVEFILE'은 리소스를 호출할 때 쓰일 이름이며 'WAVE'는 이 리소스가 WAVE 파일임을 명시하는 것이며 맨 뒷부분은 실제로 리소스에 적재될 파일의 경로와 파일명으로 구성되어 진다.. 2023. 10. 13.
델파이 타이머(TTimer) Interval 시간오차 해결방법 델파이 타이머 델파이에서 컴포넌트로 제공되는 TTimer의 경우에는 정확한 시간에 맞게 콜백을 하지 않는다. Interval 을 1/1000 초까지 조정할 수 있지만 실제로 호출되는 것은 1/18.2 초 단위로 끊어 지게 되기때문이다. 만약 TTimer로 MP3 플레이어나 동영상 재생기를 만든다면 어떻게 될까 ? MP3 음향이 정확한 박자로 재생하지 못할 것이고 동영상도 프레임이 정확하지 못해서 눈이 상당히 피로해질 거다. 하지만 지금 소개하는 타이머를 쓰게 되면 1ms 의 오차정도만을 허용하는 고급의 타이머가 생성되게 됩니다. 어려운 내용이 아니기 때문에 그냥 소스에 주석을 붙이는 차원으로 끝내겠습니다. 그리고 dfm 의 내용도 Text 로 뒤에 첨가하였으니 직접 폼을 만들어서 테스트 해보면 된다 폼에.. 2023. 10. 11.
델파이 데이타베이스 기초 5 델파이 데이타베이스 Post 한다음 Disk로 바로 저장하기 위해 DbiSaveChange함수를 쓰는 예입니다. CustTable의 AfterPost이벤트 헨들러에서 procedure TDataModule2.CustTableAfterPost(DataSet: TDataSet); begin DbiSaveChanges((DataSet as TTable).Handle); //또는 DbiSaveChanges(CustTable.Handle); end; Table에서 레코드 검색 테이블에서 레코드를 검색하는 방법은 많이 있습니다. GotoKey, FindKey, GotoNearest, FindNearest 등이 있으며 이것들은 모두 인덱스가 있는 파일만 검색합니다. 우선 위의 명령을 써서 검새을 하기 위해서는 Tab.. 2023. 10. 7.
델파이 데이타베이스 기초 4 델파이 데이타베이스 데이타 베이스 관련 콤포넌트 Data Access Component 데이타엑세스 콤포넌트는 물리적인 데이타베이스를 프로그램시 사용자가 쓸수 있도록 접근할수 있게 해주는 콤포넌트들로 TDataBase, TDataSource,TTable, TQuery, TBatchMove, TSession 등이 있다. TTable 데이타베이스 테이블에 접근하기 위한 콤포넌트이다. 테이블에 접근하기 위해 TableName 프로퍼티에 테이블 이름,DatabaseName 프로퍼티에 Alias이름을 지정해 주어야 한다. 그리고 실제 사용하기 위해서는 Active를 True로 해주거나 TTable.Open 메서드를 사용하여 테이블을 활성화 시켜야 한다. 그리고, Filter 프로퍼티를 사용하여 테이블을 필터링 할.. 2023. 10. 6.
델파이 데이타베이스 기초 3 델파이 데이타베이스 SQL(Structured Qurey Language) SQL은 1970년대초 IBM에서 개발한 데이타베이스 질의용 언어로써 델파이에서는 실제 SQL언어자체를 가지고 응용프로그램을 만들거나 하는게 아니라 SQL문법으로 쓰여진 문장을 TQuery콤포넌트를 사용해서 BDE에 넘기면 BDE가 해석하여 어떤 역할을 수행합니다.(Local SQL사용시) 그리고 BDE Administrator를 사용하면 SQL문장을 마치 배치화일처럼 만들어 사용할수도 있습니다. DML(Data Manipulation Language) 데이타 베이스로 부터 원하는 레코드를 검색하거나, 추가/삭제/수정하는등의 데이타 처리를 하는 언어 DDL(Data Definition Language) 말그대로 DataBase테이.. 2023. 10. 5.
델파이 데이타베이스 기초 2 델파이 데이타베이스 무결성(Integrity) 무결성이란 데이타베이스에 저장된 데이타의 일관성(consistency)를 의미합니다. 즉 데이타 베이스 일관성을 좋게 하기 위해 나름대로 정의를 내린것들이죠. 실체(테이블) 무결성(Entity Integrity) 테이블 무결성은 테이블에 있는 모든 행들이 유일한 식별자를 가질 것을 요구한다. 즉 기본키가 설정되어있어야 함을 의미한다. 영역무결성(Domain Integrity) 영역무결성은 한 필드에 NULL값이 허용되는지를 결정 참조무결성(Referential Integrity) 참조무결성은 기본키(참조되는 테이블에서)와 참조 키(참조하는 테이블에서)간의 관계를 유지하는 것을 보장한다. 이것은 예를 들어 거래내역 테이블과 거래처관리 테이블이 거래처코드로 연결.. 2023. 10. 4.
델파이 데이타베이스 기초 1 델파이 데이타베이스 DataBase 개요 DataBase란? 데이타베이스는 말그대로 방대한 데이타를 효율적으로 관리하기위해 만든것입니다. Table, Field, Record, Index 데이타가 DB에 저장될때는 잘정리된 표에 집어넣는 것과 같은 방식으로 데이타를 저장합니다. 그 표가 Table이 되고 그 표의 각 항목이 Field가되고, 각 줄이 Record가 되는 것입니다. 그리고 각 줄에서 특정한 줄을 찾기위해 색인을 만들어 놓은 것이 바로 index입니다. 예를 들어 학생 성적을 관리하는 Table의 경우 ┏━━━┳━━━┳━━━┳━━━┳━━━┓ ┃학번 ┃이름 ┃ 영어 ┃수학 ┃국어 ┃ 2023. 9. 27.
델파이 리소스(Resource) 델파이 리소스(Resource) 리소스 파일 생성 리소스 파일은 바이너리 형태의 데이터로서 RCDATA라 부른다. 리소스 파일은 Res라는 확장자를 가지게 되는데 이 Res 파일을 만들기 위한 과정을 살펴 보자 Res 파일을 만들기 위해서는 Text로 작성된 RC 파일이 있어야 한다. 이 RC 파일은 Res 파일에 포함하고자 하는 데이터 이름과 데이터 식별자, 그리고 데이터로 구성된 Text 파일이다. RC 파일 WAVEFILE WAVE c:\WaveSound.wav 이렇게 작성된 것이 RC 파일이다. 여기서 'WAVEFILE'은 리소스를 호출할 때 쓰일 이름이며 'WAVE'는 이 리소스가 WAVE 파일임을 명시하는 것이며 맨 뒷부분은 실제로 리소스에 적재될 파일의 경로와 파일명으로 구성되어 진다. 이렇.. 2023. 9. 26.
델파이 동적 2차원 배열 델파이 동적 2차원 배열 델파이 동적 2차원 배열 런타임 시에 크기를 조정할 수 있는 배열을 의미 2차원 배열을 저장할 변수를 선언합니다. 예를 들어, 다음과 같이 선언할 수 있다 var MyArray: array of array of Integer; 배열을 생성하려면 SetLength 함수를 사용한다. 예를 들어, 3x3 크기의 배열을 생성하려면 다음과 같이 할 수 있다 SetLength(MyArray, 3, 3); 배열에 접근하려면 행과 열 인덱스를 사용한다. 예를 들어, 배열의 원소에 접근하려면 다음과 같이 할 수 있다 MyArray[0][0] := 1; MyArray[0][1] := 2; MyArray[1][0] := 3; // 이런 식으로 계속해서 배열을 초기화할 수 있습니다. 배열 크기를 동적.. 2023. 9. 25.
델파이 Parameter 델파이 Parameter Parameter 일반적으로 함수나 메서드로 전달되는 값이라고 한다. 이것은 함수나 메서드가 실행될 때 필요한 정보를 전달하고 결과를 반환하는 데 사용되며, 파라미터는 함수나 메서드의 정의에 포함되며 해당 함수나 메서드를 호출할 때 전달해야 하는 값들을 명시적으로 지정한다. 파라미터는 함수나 메서드의 매개변수로도 알려져 있다. function myfunc ( a : String ; const b : String; var c : TButton; out d : integer; ) : integer; 1) 'a' : 아무 선언없이 쓰인 경우로 'a'는 function 내에서 선언된 local 변수처럼 사용된다. 2) const 'b' : function 내에서 b는 상수로 사용된다. .. 2023. 9. 22.
델파이 Application 델파이 Application TApplication TApplication type 으로, 프로그램 그 자신으로 생각할 수 있다. Delphi 어플리케이션의 주요 실행 및 관리를 담당합니다. Delphi는 GUI (그래픽 사용자 인터페이스) 기반 애플리케이션을 개발하기 위한 강력한 통합 개발 환경(IDE)이며, TApplication은 이 환경에서 GUI 애플리케이션을 작성할 때 핵심 역할을 한다. Dpr(프로젝트 파일) 과 개발환경 내 Project -> options -> Application에서 Title, Help File, Icon 등을 지정해 줄 수 있다. [일반사항] - 전체중 일부로 특정한 것만을 기록했다. Property - ExeName : String ; - 경로를 포함한 실행파일 명.. 2023. 9. 21.
델파이 Self 델파이 Self Self 일반적으로 method가 있는 object (예: Form에는 Create method가 있다)의 reference 이다. 객체 지향 프로그래밍에서 "self"는 주로 현재 객체(인스턴스)를 가리키는 특별한 키워드 또는 식별자이다. 일반적으로 method가 있는 object (예: Form에는 Create method가 있다)의 reference 이다. Delphi에서는 "self" 대신에 "Self"라는 예약어를 사용합니다. "Self"를 사용하여 현재 객체의 속성 및 메서드에 접근하거나 다른 객체와 구분하기 위해 사용됩니다. 예를 들면, Button1 := TButton.Create(Self); 위의 예와 같은 경우에 Self는 Button의 Owner인 Form을 가리킨다... 2023. 9. 20.
델파이 Owner 와 Parent 델파이 Owner 와 Parent 델파이 "Owner"와 "Parent"는 객체 지향 프로그래밍 개념 중에서 객체 간의 관계를 정의하는 데 사용되는 중요한 개념이다 Owner (소유자) "Owner"는 주로 컴포넌트와 관련이 있습니다. 컴포넌트는 Delphi 응용 프로그램에서 재사용 가능한 코드 조각을 나타내며, 시각적 또는 비시각적으로 폼 또는 다른 컴포넌트에 배치될 수 있다. Owner 컴포넌트는 다른 컴포넌트를 소유하고 관리하는 컴포넌트입니다. 예를 들어, 폼(Form)은 여러 컴포넌트를 소유하고 해당 컴포넌트들을 폼 위에 배치합니다. Owner-ownee(소유자-소유물) 관계에서, 소유자 컴포넌트가 소유물 컴포넌트의 생명주기를 관리하며, 소유물이 소유자를 참조할 수 있습니다. 주요 메서드와 속성 .. 2023. 9. 13.
델파이 컨트롤 반투명 드래그 이동 델파이 컨트롤 반투명 드래그 이동 윈도우 탐색기에서 리스트뷰의 헤더부분을 드래그해보면 약간 반투명하게 움직이는 것을 볼수 있습니다. 또는 아이콘을 드래그 할때도 원래의 아이콘이미지가 반투명하게 보이고 투명한부분은 그대로 투명하게 보이는 것을 경험하셨을 겁니다. 이걸 델파이에서 구현하려면 어떻게 해야 할까요? 가장 쉽게 생각해 볼수 있는게 배경화면의 그림을 얻어와서 그 위에 반투명 처리를 해서 아이콘을 그려주고 이렇게 합성한 그림을 배경화면에 다시 그려주는 일을 해야 할겁니다. 하지만 그렇게 되면 드래그하는 일에 CPU가 쉴새가 없게 됩니다. 그러면 방법은 없을까요? 다행이도 델파이에는 이런 기능을 할수 있도록 준비된 녀석이 있습니다. 바로 TImageList라는 녀석이죠!! 사용법 1. 우선 TImage.. 2023. 9. 12.
기간사이 특정요일 개수알아내기 기간사이 특정요일 개수알아내기 function CountWeek(StartDate, EndDate : TDate; CheckWeek : Integer) : Integer; var DayNum, StartWeek : Integer; begin DayNum := Trunc(Int(EndDate - StartDate)); // MATH Unit 사용을 하지 않았을 경우 if StartDate > EndDate then StartWeek := DayOfWeek(EndDate) else StartWeek := DayOfWeek(StartDate); // StartWeek := DayOfWeek(Max(StartDate,EndDate)); // MATH Unit 사용시 Result := DayNum div 7; i.. 2023. 9. 11.