본문 바로가기

분류 전체보기1019

델파이에서 화면에 자석효과 주는 법 델파이에서 화면에 자석효과 주는 법 화면구석에 폼을 끌어다가 구석가까이가면 자석처럼 붙는효과를 주기 위한 방법이다. ScreenSnap SnapBuffer 폼의 속성중 위에 두가지 속성을 이용하면 가능하다. ScreenSnap : 자석효과를 사용할지 여부 결정 SnapBuffer : 픽셀 값을 지정 (화면의 가장자리와 몇 픽셀 거리에 가면 붙을 것) 이 효과는 '디스플레이 등록정보'의 '효과' 탭에서 ' 마우스를 끄는 동안 창 내용 표시'가 설정되어 있어야 된다. 이게 꺼져 있을 경우 (이동중에 폼의 위치가 선으로 표시되는 상태)에도 작동은 잘 합니다만, 바로바로 적용되지는 않고, 폼 드래그를 마친 뒤에 효과가 나타난다. 2024. 3. 18.
CPU 종류 알아오기 CPU 종류 알아오기 레지스트리를 이용한 CPU 종류 알아오기 입니다. function GetCPUType: String; var Registry: TRegistry; begin Registry:=TRegistry.Create; try Registry.RootKey:=HKEY_LOCAL_MACHINE; Registry.OpenKey('HARDWARE\DESCRIPTION\System\CentralProcessor\0',False); if Registry.ValueExists('ProcessorNameString') then Result := Registry.ReadString('ProcessorNameString') else Result := Registry.ReadString('Identifier');.. 2024. 3. 15.
디렉토리 삭제 및 하위 디렉토리 파일 삭제 디렉토리 삭제 및 하위 디렉토리 파일 삭제 uses ShellAPI; /---------------------------------------------------------------- // 디렉토리 및 파일을 지운다. // 하위 디렉토리와 모든 파일도 함께 지워진다. // 인자 설명 // - DirName : 지울 디렉토리명 // - UseRecycleBin : 휴지통을 사용할 것인가 여부 (아니면 영구삭제) // 리턴값 설명 // - 성공 여부 //---------------------------------------------------------------- function MinDeleteFile(const DirName : string; const UseRecycleBin: Boolean):.. 2024. 3. 12.
실행파일 종료시 실행파일 삭제 실행파일 종료시 실행파일 삭제 procedure DeleteMe; var BatchFile:TextFile; BatchFileName:String; ProcessInfo:TProcessInformation; StartUpInfo:TStartupInfo; begin BatchFileName:=ExtractFilePath(application.exename)+'$$336699.bat'; AssignFile(BatchFile, BatchFileName); Rewrite(BatchFile); Writeln(BatchFile, ':try'); Writeln(BatchFile, 'del "' + application.exename + '"'); Writeln(BatchFile, 'if exist "' + appli.. 2024. 3. 11.
숫자에 콤마 찍어주기 숫자에 콤마 찍어주기 { ******************************************************************************** ** ** ** 숫자에 화폐단위 000,000,000~ 처럼 3단위로 콤마를 삽입시켜 준다. ** ** 999,999,999,999,999 단위 까지 가능함. 999조 ** ** ** ******************************************************************************** } Function Comma(I : Double) : String; var StrTmp : String; Cunt, J1, J2, K, L : Integer; Begin Cunt := 0; L := 3; StrT.. 2024. 3. 9.
프로그램에 사용 DLL 목록 가져오기 프로그램에 사용 DLL 목록 가져오기 uses TlHelp32; {$R *.dfm} procedure EnumModules(Strings: TStrings); var Snapshot: THandle; ModuleEntry: TModuleEntry32; NextModule: BOOL; begin Snapshot := CreateToolhelp32Snapshot( TH32CS_SNAPALL, GetCurrentProcessID ); ModuleEntry.dwSize := SizeOf( TModuleEntry32 ); NextModule := Module32First( Snapshot, ModuleEntry ); while NextModule do {델마당만세} begin Strings.Add( ModuleE.. 2024. 3. 6.
윈도우에 폰트 설치/제거 하기 윈도우에 폰트 설치/제거 하기 // 폰트 설치 AddFontResource(PChar('XXXFont.TTF')); SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); // 폰트 제거 RemoveFontResource(PChar('XXXFont.TTF')); SendMessage(HWND_BROADCAST, WM_FONTCHANGE, 0, 0); 2024. 3. 5.
하위폼 종료 감지 하위폼 종료 감지 하위폼의 종료시 메인폼에서 정보 감지하는방법 하위폼의 종료시 메인폼에서 정보 감지하는방법(Notification) 컴포넌트인(폼)경우 자신이 owner로 생성한 컴포넌트의 참조카운팅하는 메카니즘을 가지고 있는것 같은데 뒤져보면 Notificaton, FreeNotification 있는데 Notification을 오버라이딩하여 사용했다 type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); //하위폼 생성버튼 //.하위폼은 OnClose이벤트에서 action:=cafree하며 자기소멸시키며나옴 procedure Notification(Acomponent:Tcomponent;operation:.. 2024. 3. 4.
마우스 포인터 좌표의 윈도우 정보얻기 마우스 포인터 좌표의 윈도우 정보얻기 마우스 포인터가 있는 좌표의 윈도우의 핸들, 클래스, 명칭을 보여주는 예제입니다. unit unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); private procedure ShowHwndAndClassName(C.. 2024. 3. 1.
시스템 정보 알아보기 시스템 정보 알아보기 CPU, OS, Memory, Hardware, Software의 정보들이 있는 레지스트리 정보입니다 CPU HKEY_LOCAL_MACHINE\HARDWARE\DESCRIPTION\System\CentralProcessor\??? 프로세서 ProcessorNameString Identifier Identifier 속도 ~MHz (NT) // CPU속도 측정 function GetCPUMHz: Double; var TimerHi, TimerLo: DWORD; PriorityClass, Priority: Integer; begin PriorityClass := GetPriorityClass( GetCurrentProcess ); Priority := GetThreadPriority( G.. 2024. 2. 27.
한글 초/중/종성 알아내기 한글 초/중/종성 알아내기 type TCVJ = packed record //초성 중성 종성의 번호를 저장할 구조체 C :integer; V :integer; J :integer; end; const //유니코드 한글 초성 순서표 UniCodeC : array [0..18] of string = ('ㄱ','ㄲ','ㄴ','ㄷ','ㄸ','ㄹ','ㅁ','ㅂ','ㅃ','ㅅ', 'ㅆ','ㅇ','ㅈ','ㅉ','ㅊ','ㅋ','ㅌ','ㅍ','ㅎ'); //유니코드 한글 중성 순서표 UniCodeV : array [0..20] of string = ('ㅏ','ㅐ','ㅑ','ㅒ','ㅓ','ㅔ','ㅕ','ㅖ','ㅗ','ㅘ', 'ㅙ','ㅚ','ㅛ','ㅜ','ㅝ','ㅞ','ㅟ','ㅠ','ㅡ','ㅢ', 'ㅣ'); //유니코드 한글.. 2024. 2. 15.
폼 Border 없이 사이즈 변경 폼 Border 없이 사이즈 변경 폼이 Border 를 갖고 있지 않을 때 마우스가 경계에 오면 커서가 바뀌면서 ReSize 가 되게 하는 방법입니다. WM_NCHITTEST 를 가로채서 거기에서 마우스 좌표를 폼좌표계로 변환후 마우스 위치에 따라 메시지의 result 를 HTTOP, HTLEFT 등으로 바꿔주기만 하면 됩니다. 폼의 BorderStyle 를 bsNone 로 해서 경계를 없애준 뒤에 하면 됩니다. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton;.. 2024. 2. 1.
시스템 커스(Help) 바꾸기 시스템 커스 바꾸기 Windows.pas에 OCR 에 관련된 상수부분이 선언된곳이 있다 그곳에 OCR_HELP = 32651 이라고 선언해주시고 Windows.pas를 재컴파일 해주시면 시스템 커서를 바꾸실때 용의하다. { Cursor 바꾸기 OCR_NORMAL 일반적인 화살표 OCR_IBEAM 입력창 등에 사용되는 I빔 OCR_WAIT 모래시계 커서 OCR_CROSS 십자모양 커서 OCR_UP 위쪽 화살표 OCR_SIZE 크기조절 커서. 윈 NT에만 있음. OCR_SIZEALL과 동일. OCR_ICON 아이콘 커서. 윈 NT에만 있음. OCR_SIZENWSE NW to SE 크기조절 커서 OCR_SIZENESW NE to SW 크기조절 커서 OCR_SIZEWE 수평 크기 조절 커서 OCR_SIZENS .. 2024. 1. 30.
BMP에 DPI값 세팅하기 및 알아오기 BMP에 DPI값 세팅 unit MyGraphic; interface uses SysUtils, Classes, Graphics, Dialogs; function GetBMPFileDPI(FileName: String): LongInt; procedure SetBMPFileDPI(FileName: String; DPI: Integer); function GetBmpDPI(Bitmap: TBitmap): LongInt; procedure SetBmpDPI(Bitmap: TBitmap; DPI: Integer); implementation function GetBMPFileDPI(FileName: String): LongInt; var Stream: TFileStream; Data: Word; A: Doub.. 2024. 1. 26.
디버깅용 콘솔창 띄우기 디버깅용 콘솔창 띄우기 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 declarations } ConHwnd: THANDLE; public { Public declarations }.. 2024. 1. 12.
마우스커서가 폼(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.