일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Django
- 백준
- declare
- delphi 10.3
- dbadvgrid
- GIT
- 델파이
- python3
- github
- MSSQL
- COMMIT
- hackerrank
- c#
- Push
- pythonanywhere
- anaconda3
- advColumnGrid
- blog
- get_object_or_404
- python 3.7
- PyCharm
- queryset
- rank
- templates
- 중복제거
- Visual Studio
- TMS
- pyhcarm
- Delphi
- HTML
- Today
- Total
목록Delphi (15)
DevHyun
[Delphi에서의 thread] 1) thread의 begin ~ end 블록 사이에서 UI를 조작(변경, 수정, 삭제등)할때는 Syncronize를 이용한다. 2) 다른 thread와 동시에 같은 자원(변수, 클래스등)을 공유(동시에 읽거나 쓰는 행위, 포인터를 참조하는 행위)하지 않는다. 3) thread와 유사한 형식인 델파이 기본 타이머의 경우 윈도우 이벤트 방식으로 구현되므로 정확도가 떨어지고(윈도우컨디션에 따라 100~500ms 이하 작동 불규칙) 메인UI(메인쓰레드)가 멈추지 않고 작업 불가능 하다 [Suspend와 Resume] -> Thread를 잠시 멈추고 다시 시작함 -> TThread는 Thread 강제종료 기능을 제공하고 있지 않음 -> Suspend가 호출되는 순간 Thread..
외부업체와 연동 할때 외부업체 프로그램이 실행되어 있는지 확인 후 그 프로그램으로 sendmessage를 전송할때 활용했던 방법. procedure Process32List(Slist: TStringList; Flg:Boolean=True); var Process32: TProcessEntry32; Process32_: LPPROCESSENTRY32; SHandle: THandle; // the handle of the Windows object Next: BOOL; begin Process32.dwSize := SizeOf(TProcessEntry32); SHandle := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS, 0); if Flg then begin if Pr..
그리드 내 검색이라기 보다는 db그리드와 연결된 query 컴포넌트에서 내가 원하는 값에다가 커서를 둔다는 개념으로 이해를 하였음! 'Query Component Name'.Locate('Column Item Name', 'Query Component Name'.FieldByName('Field Name').AsString, [loCaseInsensitive]); - 검색 방법 [loCaseInsensitive] - Key fields and key values are matched without regard to case. [loPartialKey] - Key values can include only part of the matching key field value; for example, 'HAM'..
procedure Tform1.button1Click(Sender: TObject); var str1: string; tPos : TPoint; tp : integer; begin str1 := ''; tPos.X := 0; tPos.Y := 1; tp := 'AdvColumnGrid Name'.Find(tPos, str1 , [fnMatchStart]).Y; if tp > 0 then 'AdvColumnGrid Name'.Row := tp; end; - 검색 방법은 여러가지가 있는듯? { fnMatchCase, fnMatchFull, fnMatchRegular,fnDirectionLeftRight, fnMatchStart, fnFindInCurrentRow, fnFindInCurrentCol,fnInc..
advcolumngrid property 셋팅을 아래와 같이 진행 procedure TForm1.AdvColumnGrid1GetFormat(Sender: TObject; ACol: Integer; var AStyle: TSortStyle; var aPrefix, aSuffix: string); begin if ACol in [ 2,3,4] then // col number( 2번 3번 4번 컬럼만 금액순으로 정렬) AStyle := ssFinancial; // 금액순으로 정렬 end;
*작업환경 - Delphi 10.3 - MSSQL - FastReport 6.0 *사용 컴포넌트 - frxReport - frxDBDataset - AdoQuery - AdoTable - DataSource - AdoConnection : 위 컴포넌트들을 동적으로 생성해도 상관없음! 예시 ) 개발팀 팀원별 2020년 잔여 연차 리스트 뽑아보자! 1. 필요한 데이터 확인 - 잔여 연차 소모 독려를 위하여 개발팀 팀원들의 2020년 잔여 연차리스트가 필요 : 사원별 잔여 연차 리스트 테이블, 사원 정보 테이블(편의상 정규화 X) - 각 사원들은 고유한 사번이 존재 [사원 정보] - Master 사번 직책 이름 1234 팀장 김팀장 5678 과장 송과장 91011 대리 박대리 [사원별 잔여 연차 리스트] - ..
TWebbrowser 컴포넌트에서 웹페이지를 호출 한 뒤 해당 페이지를 핸들링해보자! 1. Navigate 함수를 통해서 웹페이지 접속 procedure Tform1.FormCreate(Sender: TObject); begin Webbrowser1.Navigate('https://www.000.com '); end; 2. 버튼 클릭시 특정 행동(value 값 전달, focus, click 등등) procedure Tform1.WebBrowser1DocumentComplete(ASender: TObject; const pDisp: IDispatch; const URL: OleVariant); begin WebBrowser1.OleObject.Document.all.item('AAA').Value := e..
tms그리드에서 숫자 format 변경은 생각보다 간단하다! property만 바꿔주면 됨! 금액관련 그리드라 천단위(1,000) 콤마가 필요한 상황! Column그리드에선 코딩으로 FormatFloat('#,##0','값')으로 컬럼 자체에 넣어주면 되는데, DB그리드에선 불가능해서 방법을 찾던 도중 property를 살펴봤더니 다음과 같은 property를 찾을 수 있었다. 숫자 컬럼에서 천단위 콤마(1,000)가 필요하다면 FloatFormat 이라는 propery에다가 '%.0n' 을 입력하자! 코딩으로 DBAdvGrid1.FloatFormat := '%.0n' 도 가능!
예를들어 C:\TEMP 폴더가 있으면 C:\TEMP 폴더에 log.txt 파일을 생성하여 '로그 로그 로그'를 작성하기 만약 i/o Error가 난다면 입력할수있는 글자수가 초과되었을 수도 있음! procedure TForm1.Button1Click(Sender: TObejct); var dir : string; // 경로 txt : TextFile; // 텍스트파일 begin //if Not DirectoryExists('경로') then if Not DirectoryExists('C:\TEMP') then begin //CreateDir('경로'); CreateDir('C:\TEMP'); end; //dir := '텍스트 파일 명을 포함한 경로'; dir := 'C:\TEMP\log.txt'; // ..
예를들어 C:\TEMP\TEMP.ZIP 파일을 D:\TEST\로 이동하고 싶을 때, (잘라내기, 원본파일 삭제) C:\TEMP\TEMP.ZIP 파일을 삭제하고 싶을 때, C:\TEMP\TEMP.ZIP파일을 D:\TEMP\로 복사하고 싶을 때(복사, 원본파일 유지)는 아래와 같이 사용! Procecure TForm1.Button1Click(Sender: TObject); begin //MoveFile(PChar('원본 파일의 경로'), PChar('이동하고자하는 파일의 경로')); MoveFile(PChar('C:\TEMP\TEMP.ZIP'), PChar('D:\TEST\TEMP.ZIP')); //DeleteFile(PChar('삭제하고자하는 파일의 경로')); DeleteFile(PChar('C:\TEM..