본문 바로가기
반응형

IT164

TBitmap32는 Thread내에서 Memory Leak이 발생 해법 이 문제는 TBitmap32에 비트맵(TBitmap) 기반 Assign하는 동작이 스레드 내에서 안전하지 않기 때문으로 증상은 할당후 여타 작업을 수행 후에 TBitmap 객체를 해제 해도 메모리에서 제거되지 않는 문제임. 이 메모리 누수 현상은 유레카 로그에서도 메모리 릭으로 검출되지 않음. 해결책은 다음과 같습니다. GR32.pas 소스를 수정해야 함 procedure TCustomBitmap32.Assign(Source: TPersistent); 함수내에 서브 함수중 Bitmap을 이용한 Assign 부분을 수정 procedure AssignFromBitmap(TargetBitmap: TCustomBitmap32; SrcBmp: TBitmap); var TransparentColor: TColor3.. 2023. 2. 14.
DrawText를 이용한 WrapedText의 높이 구하기 DrawText를 이용하여 고정된 Width를 갖는 TEXTBOX에 DRAW했을 경우에 해당 TEXTBOX의 높이를 알 수 있다. 아래 샘플코드는 DrawText를 이용하여 Wraped된 TEXT를 출력합니다. procedure TForm1.Button1Click(Sender: TObject); var r: Trect; s: String; begin R := Rect(0,0, 300, 100); s := 'WordWrapTextOut(TargetCanvas: TCanvas; var x, y: integer; S: string; maxwidth, lineheight: integer);'; DrawText(Canvas.Handle, PChar(s), length(s), R, DT_WORDBREAK or DT.. 2023. 2. 14.
듀얼 모니터 인식 및 사용하기 1. 개요 듀얼 모니터를 사용할 경우에 마스터, 서브 모니터를 인식하여 원하는 모니터에 윈도우 폼을 표시해 보도록 하자 2. 방법 - 듀얼 모니터 인식 방법 screen.MonitorCount : 모니터 갯수 리턴 - 두번째 모니터에 현재 폼을 전체 화면으로 만들기 form1.top := screen.monitors[1].top; form1.left := screen.monitors[1].left; form1.WindowStates = wsMaximized; 2023. 2. 14.
현재 어플리케이션이 활성/비활성된 상태 Detect 개발된 프로그램이 다른 윈도우에 가려 비활성 되거나 활성화 된 시점을 인식하여 알맞은 작업 처리 하기 FormCreate등 초기화 이벤트등에서 아래와 같이 Application의 이벤트를 활용함 Application.OnDeactivate := YourDeactivateProcedure; Application.OnActivate := YourActivateProcedure; procedure mainform.YourDeactivateProcedure (sender : tObject); begin // do your job.. end; procedure mainform.YourActivateProcedure (sender : tObject); begin // do your job.. end; 2023. 2. 13.
반응형