전체 글 썸네일형 리스트형 투명 PNG 이미지를 투명하지 않은 다른 이미지 포멧으로 저장하기 1. 개요 투명한 PNG 이미지를 투명 배경을 흰색 바탕으로 처리한 다른 이미지로 저장해 보자. 2. 증상 분석 투명 PNG 이미지를 투명부분을 흰색 배경으로 처리한채 다른 이미지포멧(BMP 또는 JPG)로 저장하고자 할 경우에 일반적으로 다음 과 같은 방법을 시도하여 변환을 시도할 것이다. var bmp : TBitmap; jpg : TJpegImage; png : TPngObject; begin try bmp := TBitmap.Create; jpg := TJpegImage.Create; png := TPngObject; png .LoadFromFile(APngFileName); bmp.Assign(png); jpg.Assign(bmp); jpg.SaveToFile(AJpegName); finally.. 더보기 TcxGrid에서 Popup메뉴 열리기 전에 클릭된 컬럼 및 종류 알아내기 TcxGrid에서 오른쪽 마우스 클릭시 설정된 팝업메뉴 오픈 전에 클릭된 컬럼의 종류(헤더, 본문, 풋터) 및 클릭된 컬럼 인덱스를 알아내는 방법 procedure TForm1.cxGridPopupMenu1Popup(ASenderMenu: TComponent; AHitTest: TcxCustomGridHitTest; X, Y: Integer; var AllowPopup: Boolean); var AColumnIndex: integer; begin // only allow column popup when this column is hit AColumnIndex := cxGrid1TableView1Column4.Index; // Cell was hit if AHitTest is TcxGridRecordCel.. 더보기 TRichEdit에서 전체선택(CTRL+A)시 문서 끝으로 자동 스크롤 시키기 1. 개요 TMemo 컴포넌트 에서는 기본적인 컨텍스트 메뉴인 전체선택(CTRL+A)시 본문 내용이 전체 선택 되면서 문서의 끝으로 자동 스크롤 되지만 TRichEdit 컴포넌트에서는 전체 선택시 문서 끝으로 자동 스크롤 기능을 제공하지 않는다. 따라서 필요에 의해서 전체 선택시 문서의 끝으로 이동하도록 구현해 보자 2. 전체선택(CTRL+A)시 문서 끝으로 자동 스크롤링 // Richedit1.SelStart :=RichEdit1.GetTextLength; // 더보기 TRichEdit에서 기본 컨텍스트팝업메뉴(Context Popup Menu) 활성화 시키기 1. 개요 TMemo 컴포넌트에서는 마우스 오른쪽 버튼 클릭시 기본 컨텍스트 팝업 메뉴(실행취소/복사/붙여넣기 등등)가 기본 활성화 되는데 TRichEdit에서는 어떤 이유에서인지 기본 활성화가 되어 있지 않다. 기본 컨텍스트 메뉴를 선택적으로 활성화 시키는 방법을 알아 보자. 2. TRichEdit에 Context Menu 활성화를 위한 세팅 procedure RichEditPopupMenu(re: TRichEdit); const IDM_UNDO = WM_UNDO; IDM_CUT = WM_CUT; IDM_COPY = WM_COPY; IDM_PASTE = WM_PASTE; IDM_DELETE = WM_CLEAR; IDM_SELALL = EM_SETSEL; IDM_RTL = $8000; // WM_APP .. 더보기 TMonthCalendar의 특정날짜 마크하기 1. 개요 TDateTimePicker 또는 TMonthCalendar의 월력을 Open 했을 때 특정 지정된 날짜를 마킹하여 특정한 목적으로 사용자에게 알려 주어야 하는 경우가 있다. 기본 컴포넌트인 TMonthCalendar를 이용하여 원하는 날짜들에 마킹(볼드체)하는 방법을 알아보자 2. TMonthCalendar의 "OnGetMonthInfo" 이벤트 이 이벤트는 TMonthCalendar 컴포넌트에 새로운 월(Month)가 Display될 때 호출 되는데 화면에 노출되는 일자에 대한 특정한 속성을 초기화 하고자 할 때 사용된다.(예를 들어 일요일 토요일, 국경일 등에 대한 표식이 필요할 경우 등) 이 이벤트 호출을 통하여 특정한 날짜를 굵게(Bold)로 표시할 수 있다. // 표시된 달력의 1일.. 더보기 TIdHTTPServer 응답헤더(Response Header) 다루기 1. 개요 TIdHTTPServer를 이용한 간단한 웹서버 작성시 클라이언트 요청에 대한 응답(Response) 메시지 작성시 헤더에 처리 결과 값을 노출 핟다던가, 특정한 메시지를 전달하고자 하는 경우 헤더를 조작해야 하는 경우가 있다. TIdHTTPServer에서 헤더를 다루는 방법을 알아본다. 2. TIdHTTPServer 응답 헤더 다루기 TIdHTTPServer는 ServerCommandGet 이벤트에서 클라이언트에서 요청한 내용을 처리 하도록 하는데 이때 요청메시지인 TIdContext 를 받아서 처리하는 핸들러를 작성하여 처리한다. 응답 헤더를 다루기 위해서는 IdContext의 HandleRequest 핸들러에서 "AResponseInfo.CustomHeaders" 를 이용하여 조작할 수 .. 더보기 문자열에서 Null문자 제거하기 1. 개요 TInetHTTP (WininetHTTP Suite) 컴포넌트를 이용하여 웹페이지를 요청할때 응답 헤더가 이상하게 넘어오는 경우가 Delphi XE이상버전에서 발생 한다 예를 들어 INetHttp.QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF)를 호출하여 얻은 응답 헤더에 "Content-Type"에 대한 문자열이 "'C'#0'o'#0'n#0't'#0'e'#0'n'#0't'#0 ..." 식으로 리턴 된다. 이 문자열을 직접 사용하고자 하면 문자열 변수에 다음과 같이 담게 되는데 ResponseHeader := INetHttp.QueryInfo(HTTP_QUERY_RAW_HEADERS_CRLF); 그러면 결과는 자동으로 널 스트링을 인지하고 TypeCasting 되어서 Re.. 더보기 델파이 TWebBrowser 컴포넌트에서 자바스크립트 직접 실행하는 방법 1. 개요 TWebBrowser를 이용하여 웹페이지 네비게이션 관련 프로그램을 작성할 경우에 한 번 로딩된 페이지에서 페이지에 포함된 자바 스크립트를 직접 실행 시켜야 하는 경우가 있는데 이때 쉽게 현재 로딩된 웹페이지에 자바스크립트를 실행시키는 방법이다. 2. 해결 방법 현재 로딩된 HTML문서 웹페이지는 윈도우(Window) 객체에서 해당 문서에 대한 액션 줄 수 있다 이때 사용할 수 있는 Window 객채의 자바스크립트 실행 메소드가 자바스크립트 호출을 활성화 시키는 "execScript" 함수이다. execScript는 자바스크립트 뿐만 아니라 웹브라우저가 실행 가능한 스크립트 언어면 어떤 것이든 실행이 가능한데 첫 번째 파라미터는 스크립트 문자열(예:foo(a, b))이며, 두 번째 파라미터가 .. 더보기