본문 바로가기

Delphi/프로시저-함수43

HEX 코드를 TColor 값으로 변환하여 반환 HEX 코드를 TColor 값으로 변환하여 반환     HexToTColor(), TColorToHex() HEX 코드를 TColor 값으로 변환하여 반환한다 function HexToTColor(RGBCode: String): TColor;varhex: Int64;Color: TColor;iRGBCode: STring;begintryiRGBCode := copy(RGBCode,5,2)+copy(RGBCode,3,2)+copy(RGBCode,1,2);hex := StrToInt64('$00'+iRGBCode);excepton Exception dobeginhex := $00000000;MessageDlg('올바르지 않은 색상값입니다.', mtError, [mbOK], 0);end;end;Color := .. 2024. 4. 29.
FindWindowEx로 찾지못하는 원도우 핸들구하기 FindWindowEx로 찾지못하는 원도우 핸들구하기 FindWindowEx함수로 찾지못하는 윈도우 핸들이 무지많다 아래함수는 제경험상으로는 95% 이상 핸들을 찾을수있다. function SubWindowFind( ParentWnd : HWND; FindClassName : string ): HWND; var ClassName : array[0..255] of char; FindWnd : HWND; begin Result := 0; if ParentWnd = 0 then Exit; FindWnd := GetWindow( ParentWnd, GW_CHILD ); while ( FindWnd 0 ) do begin if Boolean( GetClassName( FindWnd, ClassName, 255) .. 2024. 3. 23.
실행파일 종료시 실행파일 삭제 실행파일 종료시 실행파일 삭제 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.
윈도우에 폰트 설치/제거 하기 윈도우에 폰트 설치/제거 하기 // 폰트 설치 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.
Delphi Open ToolsAPI (3) Delphi Open ToolsAPI 모듈의 정의 모듈을 쉽게 표현하자면 대표 파일을 가진 편집 단위라고 보면 된다. 프로젝트 그룹, 프로젝트, 유닛, 폼유닛등이 모두 모듈이다. 하나 혹은 그 이상의 파일이 하나의 모듈을 구성한다. 폼이 있는 유닛이 대표적인 경우인데 예를들어 Unit1.pas는 Unit1.dfm와 함께 두개의 파일로 구성되어 있으며 대표파일은 Unit1.pas다. 프로젝트나 프로젝트 그룹등도 하나의 모듈로 취급된다. 모듈을 찾거나 여는 등의 작업은 파일명을 통해 이루어지는데 이를 대표파일이로 정의하자 (이를 지칭할만한 뚜렷한 이름이생각나지 않는다) . 대표파일로는 *.pas, *.bpg, *.dpr,*.dpk가 있다. 델파이에 프로젝트 그룹과 프로젝트가 로드된 상태에서 모듈의 파일명을 .. 2023. 12. 26.
Delphi Open ToolsAPI (2) Delphi Open ToolsAPI Delphi Open ToolsAPI 메뉴의 OnClick등의 이벤트는 오브젝트의 메쏘드를 필요로 한다. 따라서 무작정 빈 유닛을 기준으로 삼아 작성하기 보다는 DataModule을 기반으로 하는 것이 좋다. 혹은 자신이 아예 새로운 오브젝트 클래스를 작성할 생각이라면 그렇게 해도 좋다. 여하간 이벤트가 필요하거나 혹은 컴퍼넌트가 필요한 경우 메인모듈은 오브젝트를 기반으로 작성하는 것이 좋다. 필자가 제시하는 방법은 DataModule이 메인 모듈이 되고 기타 옵션적용등을 위해 필요한 폼은 메인모듈에서 생성해서 보여주는 것이다. 될 수 있으면 Form을 메인모듈로 잡지 않는 것이 좋다. DataMoudle 보다 리소스를 더 많이 잡아먹을 것이기 때문이다. 다음의 사항.. 2023. 12. 19.
Delphi Open ToolsAPI Delphi Open ToolsAPI 자고 일어나면 빌딩이 선다. 이 새삼스럽지 않은 기적은 철골구조와 조립식 컨크리트에 의해 이루어진다. 철골이 올라가는가 하면 금새 벽이 붙여지고 며칠 안가 빌딩이 완성된다. 이런 조립형태의 접근방식은 빠른 결과물을 보게 해준다. 이런 조립형태의 개발방식은 RAD(고속개발)툴의 근간을 이루고 있다. 델파이에서 조립식 컨크리트의 역할은 컴퍼넌트가 담당한다. 그리고 굳건하게 이런 컴퍼넌트 중심의 개발환경을 뒷받침하고 있는 철골구조가 바로 IDE(통합개발환경)이다. 보다 빠르고 시각화된 개발환경을 제공하기 위해서 일찌감치 IDE(통합개발환경)라는 위대한 환경을 제시해 왔다. IDE를 통해 단순 컴파일러가 아니라 개발툴이라는 당시로서는 진보적 개념을 처음 도입한 것은 볼랜드였.. 2023. 12. 14.
윈도우 사용자 이름 알아내기 윈도우 사용자 이름 알아내기 function GetCurrentUserName : string; const cnMaxUserNameLen = 254; var sUserName : string; dwUserNameLen : DWord; begin dwUserNameLen := cnMaxUserNameLen-1; SetLength(sUserName, cnMaxUserNameLen); GetUserName(PChar(sUserName), dwUserNameLen); SetLength(sUserName, dwUserNameLen); Result := sUserName; end; procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(GetCurren.. 2023. 11. 17.
최상위 윈도우 얻기 최상위 윈도우 얻기 현재 윈도우상에서 최상위에 떠있는 이름을 알려주는 함수 function OKTopWindowText: string; var WinName: array[0..144] of char; begin FillChar(WinName, 145, 0); GetWindowText(GetForegroundWindow, WinName, 144); SetLength(Result, StrLen(WinName)); Result := StrPas(WinName); end; 2023. 11. 1.
델파이 숫자 한글변환 델파이 숫자 한글변환 첫번째 함수 function IntToHanguel( Value: Int64 ) : String; const NumberChar: array['0'..'9'] of String = ( '영','일','이','삼','사','오','육','칠','팔','구' ); LevelChar: array[0..3] of String = ( '', '십','백','천' ); DecimalChar: array[0..5] of String = ( '','만','억','조','경','현' ); var S : String; UseDecimal : Boolean; i, Level: Integer; begin Result := ''; S := IntToStr( Value ); UseDecimal := Fals.. 2023. 10. 27.
기간사이 특정요일 개수알아내기 기간사이 특정요일 개수알아내기 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.
태스크바 (taskbar) 에서 숨기기 태스크바 (taskbar) 에서 숨기기 To do this you will need to: 1.Select the View -> Project Source, from Delphi's main menu. 2.Add the Windows unit to the uses clause. 3.Add Application.ShowMainForm := False; to the line after "Application.Initialize;". 4.Add: ShowWindow(Application.Handle, SW_HIDE); to the line before "Application.Run;" Your main project source file should now look something like this: pro.. 2023. 8. 1.
시스템 날짜바꾸기 시스템 날짜바꾸기 방법 1 시스템의 날짜를 바꾸는 방법은 아래와 같이 윈도우 API를 사용하면 간단히 바꿀수 있습니다. procedure TForm1.ChgSysDateTime(ADateTime: TDateTime); var sys_time: TSystemTime; begin sys_time.wYear := StrToInt(FormatDateTime('yyyy', ADateTime)); sys_time.wMonth := StrToInt(FormatDateTime('m', ADateTime)); sys_time.wDay := StrToInt(FormatDateTime('d', ADateTime)); sys_time.wHour := StrToInt(FormatDateTime('h', ADateTime)); .. 2023. 7. 27.
Hook(훅) SetWindowsHookEx Hook(훅) SetWindowsHookEx SetWindowsHookEx 함수는 Windows 운영 체제에서 훅(Hook)을 설치하기 위해 사용되는 함수입니다. 훅은 시스템 내에서 발생하는 이벤트를 감지하고 해당 이벤트에 대한 처리를 수행하는 데 사용됩니다. 예를 들어, 키보드 이벤트, 마우스 이벤트, 윈도우 메시지 등을 감지하고 원하는 동작을 수행할 수 있습니다. SetWindowsHookEx 함수는 다음과 같은 매개변수를 가지고 있습니다 idHook: 설치할 훅의 유형을 지정하는 매개변수로, 훅의 종류에 따라 다른 상수 값을 사용합니다. 예를 들어, WH_KEYBOARD는 키보드 이벤트를 감지하는 훅을 설치하는 상수입니다. lpfn: 훅 프로시저(Hook Procedure)로서 호출될 함수의 포인터.. 2023. 7. 7.
메모(TMemo) 팁 TMemo 팁 델파이에서 TMemo는 텍스트 기반 멀티라인 에디트 컨트롤입니다. 이 컨트롤을 사용하면 사용자가 여러 줄의 텍스트를 입력하고 편집할 수 있습니다. TMemo는 다양한 속성과 이벤트를 제공하여 텍스트의 표시 및 편집을 제어할 수 있습니다. 일반적으로 TMemo 컨트롤은 대화형 애플리케이션에서 텍스트 입력 또는 출력에 사용됩니다. 예를 들어, 사용자가 메모를 작성하거나 텍스트 문서를 편집하는 등의 작업에 유용합니다. TMemo의 중요한 속성 중 일부는 다음과 같습니다 Lines Lines 속성은 TMemo에 표시되는 텍스트의 줄 목록을 나타냅니다. 이 속성을 통해 텍스트를 프로그래밍 방식으로 설정하거나 읽을 수 있습니다. Text Text 속성은 TMemo의 전체 텍스트 내용을 가져오거나 설정.. 2023. 6. 14.
StringGrid의 Cell에 입력 값 제한 StringGrid의 Cell에 입력 값 제한 하기 unit Unit1; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids; type TForm1 = class(TForm) StringGrid1: TStringGrid; procedure StringGrid1DrawCell(Sender: TObject; Col, Row: Integer; Rect: TRect; State: TGridDrawState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; tmpText, cellText.. 2023. 6. 2.
초를 시간 분 초 형식으로 리턴 초를 시간 분 초 형식으로 리턴 //초를 입력하면 0시간 0분 0초 식으로 리턴한다 //ex: 4600 -> 1시간 16분 40초 function GetTimeToStr(sec : double) : string; function GetDigit(num : integer):string; var sss : string; begin sss := inttostr(num); if length(sss) = 1 then result := '0' + sss else result := sss; end; function LeftStr(const Str: string; Size: Word): string; begin LeftStr := Copy(Str,1,Size) end; var rsec, hhour, mmin, ssec.. 2021. 7. 22.
델파이 RTF (Rich Text Format) 사용방법 델파이 RTF (Rich Text Format) 사용방법 서식있는 텍스트 형식 의 약자인 RTF 란? 서식있는 텍스트 파일과 일반 텍스트 파일의 혼합 텍스트 파일과 달리 RTF 파일은 굵게, 기울임 꼴, 밑줄, 글 머리 기호, 다른 글꼴 및 텍스트 양쪽 맞춤과 같은 일부 서식 지정 기능을 제공합니다. 그러나 전체 워드 프로세서에있는 모든 기능을 제공하지는 않습니다. RTF 편집기의 예는 Microsoft WordPad입니다. 그러나 모든 텍스트 또는 워드 프로세서 프로그램은 RTF 문서를 만들 수있는 위에서 언급 한 서식 지정 기능을 사용하여 문서를 만들 수 있습니다. 일반 텍스트를 RTF 파일로 변환하는 방법 WordPad 또는 Microsoft Word와 같은 RTF 편집기에서 파일 일반 텍스트 파일.. 2021. 7. 21.
델파이 JSON to Object 한줄 델파이 JSON to Object 한줄 uses REST.JSON; // Also new System.JSON TFoo = class private FFee : Integer; FFoo : string; published property Foo : String read FFoo write FFoo; property Fee : integer read FFee write FFee; end; procedure TForm1.Button1Click(Sender: TObject); var Foo: TFoo; begin Foo := TFoo.Create; try Foo.Foo := 'Hello World'; Foo.Fee := 42; Memo1.Lines.Text := TJson.ObjectToJsonString(F.. 2021. 7. 20.