TClientDataSet+TDBNavigator가 극도로 느려지는 문제에 대한 해결책

개인적으로 저는 잘 사용하지 않지만, DBNavigator 컴포넌트는 데이터베이스 애플리케이션에서 정말 유용한 컴포넌트입니다. TDBNavigator의 역할은 현재 연결되어 있는 데이터셋의 레코드 단위 운영을 위한 컴포넌트로서, 아시다시피 데이터셋의 앞으로/뒤로, 최초/최종 등의 작업을 위한 UI를 간단히 구성해줍니다. 그런데, 델파이/C++빌더의 XE2 이후 버전들부터는, 이 TDBNavigator가 TClientDataSet과 연결해서…

RichEdit 컨트롤의 특이한 버그

이 버그는 아주 특이한 조건에서만 발생하기 때문에 대부분의 개발자들에게는 별 상관이 없겠습니다만… 기록삼아 적어둡니다. 폼에 TRichEdit를 놓고, 아래와 같이 몇가지 속성들을 조정합니다.

이 상태로 컴파일하고 실행해보면, 분명히 디자인시에 리치에디트에 아무런 내용을 넣지 않았음에도 실행된 프로그램에서는 다음과 같이 깨진 문자열이…

Windows7에서 THeaderControl 섹션의 OwnerDraw 문제

이번 포스트에서는, 윈도우7의 Aero UI에 맞게 THeaderControl의 헤더섹션을 제대로 OwnerDraw 하는 방법에 대해 살펴봅니다. THeaderControl은 글자 그대로 헤더 섹션들을 정의해놓은 헤더 컨트롤입니다. ListView에도 포함되어 있구요. 이 HeaderControl의 각 섹션에는 Text 속성을 통해 나타날 텍스트를 지정해줄 수 있습니다. 그런데 이 Text에는 멀티라인, 즉 여러…

임프의 dfm 폼 컨버터

Delphi 및 C++Builder에는 dfm 폼 파일을 바이너리에서 텍스트로 혹은 그 반대로 변환하기 위한 유틸리티 convert.exe가 포함되어 있습니다. 일반적으로는 텍스트 포맷의 dfm 파일이 유리한 점이 많은데, 예를 들면 당연히 텍스트 파일만이 diff가 가능하기 때문에 SubVersion 같은 버전 관리 시스템에서 관리하기도 편리합니다. Delphi…

Undocumented: InputBox 함수에서 Password 입력 받기

간단하지만 경우에 따라 꽤 유용하게 쓸 수 있는 팁입니다. (아쉽게도, Delphi/C++Builder의 XE2  버전 이상에서만 가능한 기능입니다 -.-;;) VCL에 InputQuery와 InputBox라는 함수가 있습니다. 아주 초보적인 함수인데, 아주 자주 쓰는 개발자도 있고 전혀 존재조차 모르는 분들도 꽤 많이 있습니다. 이 두 함수는 본질적으로…