본문 바로가기

Delphi Tip219

마우스커서가 폼(Form)안에 있는지 여부 마우스커서가 폼(Form)안에 있는지 여부 //API함수 이용 (핸들을 잡아 마우스가 사각형안에 있는지 체크) unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) procedure FormDeactivate(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private declarations } public { Public declarations } end; var Form1: TForm1; .. 2024. 1. 8.
델파이 TcxDBTreeList 엑셀변환 델파이 TcxDBTreeList 엑셀변환 Delphi에서 TcxDBTreeList에서 조회된 자료를 엑셀로 변환하는 과정은 몇 단계로 이뤄집니다. 아래는 간략한 예제 코드입니다. 이 코드는 DevExpress VCL 컴포넌트 라이브러리의 TcxDBTreeList 및 TcxGrid 컴포넌트를 기반으로 합니다. 엑셀 변환에는 OLE Automation을 사용합니다. 엑셀 객체 초기화: 엑셀을 조작하기 위해 ExcelApplication, Workbook 및 Worksheet 객체를 생성합니다. uses ..., cxDBTL, cxGridExportLink, ComObj; var ExcelApp: Variant; Workbook: Variant; Worksheet: Variant; TcxDBTreeList 데.. 2024. 1. 5.
이미지 마우스로 움직이기 이미지 마우스로 움직이기 var gx, gy : integer; procedure TForm1.image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if [ssLeft] = Shift Then Begin (Sender as TImage).Left := (Sender as TImage).Left+X-gx; (Sender as TImage).Top := (Sender as TImage).TOP+Y-gy; End; end; procedure TForm1.image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if .. 2024. 1. 4.
인터넷 URL 문서 저장하기 인터넷 URL 문서 저장하기 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, URLMon; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin.. 2024. 1. 3.
델파이 기본 소켓의 사용 델파이 기본 소켓의 사용 TCP/UDP 란? TCP 연결지향 프로토콜이다. 연결을 시도해 연결이 성공하면 일종의 터널링이 확보되어 이 터널을 통하여 데이터를 전송하고 받는다. 전송된 데이터의 무결성이 확보된다. 데이터의 전송이 제대로 되지 않을 경우에는 목적지에 제대로 전송될때까지 반복한다. 안정적인 데이터 전송을 원할경우에 이를 사용한다. UDP User Datagram Protocol 이라고 불리운다. 전송된 데이터가 중간에 유실될 수도 있고, 순서가 뒤바뀔 수도 있다. 환장한다. 그럼 왜 쓰나? 속도가 빠르다. 데이터의 안정성을 잃어버리는 대신에 속도를 보장한다. 멀티미디어 데이터 전송부분에서 종종 사용된다. 프로토콜이란? 일반(형식, 종료문자) 프로토콜이라 함은 TCP/UDP 이외에도 사용자가 정.. 2024. 1. 2.
프로그램에서 DOS 명령어 처리 프로그램에서 DOS 명령어 처리 1. 콘솔창(DOS창) 창 안띄우기 2. 끝날때까지 기다리기(실행이 끝난것을 감지하기) 3. 출력되는 내용을 화일로 저장하기 procedure TForm1.Button1Click(Sender: TObject); var msg: string; begin // 1.Dos 명령 일괄처리 파일에서 명령어를 불러오고() if not RunDosCmd('cmd c:\out.txt', Msg, true) then ShowMessage(msg) else ShowMsg(Msg); // 2.현재 도스 명령어를 실행하고, 결과를 파일로 저장('C/\out.txt) if not RunDosCmd('Dir/w >c:\out.txt', Msg, true) then ShowMessage(msg) e.. 2023. 12. 29.
델파이 디버깅용 콘솔창 만들기 델파이 디버깅용 콘솔창 만들기 폼이 실행되면서 콘솔창을 한개 만든뒤, 폼위에 있는 마우스 좌표를 콘솔창에 실시간으로 출력하는 예이다 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private { Private de.. 2023. 12. 11.
델파이 메세지다이어로그(MessageDialog) 원하는 키 받기 델파이 메세지다이어로그(MessageDialog) 원하는 키 받기 . . . private { Private declarations } protected public { Public declarations } Procedure HelpBoKeyPress(Sender : TObject; var Key : Char); end; var Form1: TForm1; LegalKeys : String; procedure TForm1.Button1Click(Sender: TObject); Var S : String; Begin LegalKeys := 'ABC123'; S := '원하는 항목을 선택하세요!'#13#13'' + ' A 키눌러라'#13'' + ' B.키눌러라'#13'' + ' C.키눌러라'#13'' + '.. 2023. 11. 30.
컴포넌튼 만들기(초간단) 컴포넌튼 만들기 TLabel 을 상속받어, 기본 Default 배경이 검은색으로 설정되는 컴포넌트입니다. unit BlackLabel; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TBlackLabel = class(TLabel) private { Private declarations } protected { Protected declarations } public constructor create(aOwner: TComponent); override; published { Published declarations } end; procedure Register; i.. 2023. 11. 29.
메인 메뉴에 팝업메뉴 달기 메인 메뉴에 팝업메뉴 달기 unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus; type TForm1 = class(TForm) MainMenu1: TMainMenu; PopupMenu1: TPopupMenu; N11: TMenuItem; N21: TMenuItem; N31: TMenuItem; N41: TMenuItem; N123121: TMenuItem; N122221: TMenuItem; N44441: TMenuItem; N33331: TMenuI.. 2023. 11. 28.
프린터 목록 불러오기 / 기본프린터 불러오기 프린터 목록 불러오기 / 기본프린터 불러오기 uses Printers, Messages; function GetDefaultPrinter : string; var ResStr : array[0..255] of char; begin GetProfileString('Windows','device','',ResStr,255); Result := StrPas(ResStr); end; procedure SetDefaultPrinter(NewDefPrinter : string); var ResStr : array[0..255] of char; begin StrPCopy(ResStr,NewdefPrinter); WriteProfileString ('windows', 'device', ResStr); StrCopy (.. 2023. 11. 24.
델파이 툴 메뉴 생성 (현재 프로젝트 경로 열기) 델파이 툴 메뉴 생성 델파이 메뉴 Tools -> Configure Tools 메뉴 클릭 ​ Add 버튼 클릭 ​ Tilte : 현재 프로젝트 경로 열기 Program : Explorer.exe Parameters : $PATH($EXENAME),/e OK 클릭​ 결과 메뉴가 생성된걸 알수있다. 클릭하면 해당 프로젝트 경로로 탐색기가 열린다 . ​ 소스코드 에디터에 활성화되어있는 파일(Unit)명은 $EDNAME 이다 (다른 에디터로 유닛을 열때 좋겠..) 파일명만 전달할려면 $NAMEONLY(파일명) 2023. 11. 22.
델파이 UTF-8 델파이 UTF-8 UTF-8 UCS Transferation Format 의 약자로 Unicode를 위한 가변 길이 문자 인코딩 방식 중 하나이다. Unicode는 전 세계의 모든 문자를 표현하기 위한 표준을 제공하는 국제적인 문자 집합이다. UTF-8은 이러한 Unicode 문자를 바이트로 효과적으로 표현하는 방법 중 하나로, 많은 컴퓨터 시스템에서 표준으로 사용되고 있다. UTF-8 특징 가변 길이 인코딩: UTF-8은 각 문자를 1바이트부터 4바이트까지 가변 길이로 인코딩한다. 기본적으로 ASCII 문자는 1바이트로 인코딩되며, 이는 기존의 ASCII 문자 집합과의 하위 호환성을 제공한다. 다른 언어의 문자는 더 많은 바이트로 표현된다. ASCII 호환성: UTF-8은 ASCII 문자 집합과 완벽하.. 2023. 11. 15.
Case문으로 문자 비교하기 Case문으로 문자 비교하기 uses System.TypInfo type TSameText = (ChrMove, MapLoad, MapLoad2, FadeOut, FadeIn, SetNPC, NPCMove); .... implementation .... procedure TForm1.Button1Click(Sender: TObject); var strTemp : string; begin strTemp := 'FadeIn'; case GetEnumValue(TypeInfo(TSameText), strTemp) of 0: ShowMessage('0'); 1: ShowMessage('1'); 2: ShowMessage('2'); 3: ShowMessage('3'); 4: ShowMessage('4'); 5: .. 2023. 11. 8.
정해진 시간에 없어지는 MessageBox 정해진 시간에 없어지는 MessageBox 정해진 시간에 없어지는 MessageBox procedure MessageBoxTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD); stdcall; ... procedure MessageBoxTimerProc(hWnd: HWND; uMsg: UINT; idEvent: UINT; Time: DWORD); begin PostQuitMessage(0); end; function TimedMessageBox(hwndParent: HWND; ptszMessage: LPCTSTR; ptszTitle: LPCTSTR; flags: UINT; dwTimeout: DWORD): Integer; var idTimer: U.. 2023. 11. 6.
델파이 RS232 통신 RS232 통신 RS232 RS-232는 시리얼 통신을 위한 표준 통신 프로토콜. 이것은 전자 장치 간에 데이터를 송수신하는 데 사용되며, 초기에는 컴퓨터 및 주변 장치 간의 통신을 위해 개발되다. 전압 레벨 RS-232는 양방향 통신을 위해 표준 전압 레벨을 정의다. 이것은 대부분 양의 전압과 음의 전압 사이의 차이로 데이터를 나타낸다. 전형적인 레벨은 +12V와 -12V 또는 +5V와 -5V와 같은 값을 가진다. 비동기 통신 RS-232는 비동기 통신을 기반으로 하며, 데이터를 보낼 때 시작 비트와 정지 비트를 사용하여 데이터 프레임을 형성합니다. 이를 통해 데이터의 시작과 끝을 정의하고 데이터 비트를 보내는 장치 간의 동기화를 가능하게 한다. 다중 데이터 송수신 RS-232는 여러 데이터 비트를 전.. 2023. 11. 3.
동적으로 메뉴(TMenuItem) 만들고 클릭 이벤트 만들기 동적으로 메뉴(TMenuItem) 만들고 클릭 이벤트 만들기 아래와 같이 popMenuSkin MenuItem에 서브 MenuItem을 동적으로 추가할 수 있다. // Create Dynamic MenuItem var skinCount: Integer; MI: array of TMenuItem; begin skinCount := 3 for i := popMenuSkin.Count - 1 downto 0 do popMenuSkin.Remove(popMenuSkin.Items[i]); SetLength(MI, skinCount); for i := 0 to skinCount do begin MI[i] := TMenuItem.Create(Self); MI[i].Caption := IntToStr(i); MI[i.. 2023. 10. 31.
델파이 콤보박스(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.
델파이 소켓(통신) 프로그램 델파이 소켓 프로그램 델파이 소켓(통신) 프로그램 송수신 방식 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.
델파이 리소스(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.