반응형

TIOBE에서 한동안 순위에서 밀리던 델파이가 최근 상승세를 타는 것 같습니다.

국내에서는 거의 사용이 안되어 가고 있는데 글로벌하게는 관심이 높아지고 있는 것 같아서

델파이를 사랑하는 개발자로서 기분이 좋네요~


http://www.tiobe.com/tiobe-index/




반응형
반응형

델파이에서 키보드 나 마우스 입력이 일정 시간동안 시스템에 발생 되지 않을 때 특정 기능(로그아웃 등)을


하려면 다음과 같이 할 수 있다.


일단 Timer를 폼에 떨어 트려 놓고 지연시간을 얻는 함수를 만든다.


function Form1.SecondsIdle: Cardinal;
var liInfo: TLastInputInfo;
begin
    liInfo.cbSize := SizeOf(TLastInputInfo);
   GetLastInputInfo(liInfo);

   Result := (GetTickCount - liInfo.dwTime) div 1000;
end;


타이머의 Timer 이벤트에서 지연시간이 일정시간 이상이 되면 특정 기능을 처리 한다.

procedure Form1.Timer1Timer(Sender: TObject);
begin
    if SecondsIdle >= 1800 then begin   // 30분
        Timer1.Enabled := false;

        // 특정 기능 처리
end;
반응형
반응형

특정 텍스트(문자열, string)의 넓이(width)에 따라서 작업을 해야 될 때가 있는데


다음과 같이 얻을 수 있다.


function GetTextWidth(const Text: string; const Font: TFont): Integer;
var
  Canvas: TCanvas;
begin
  Canvas := TCanvas.Create;
  try
	Canvas.Handle := GetDC(0);
	try
	  Canvas.Font.Assign(Font);
	  Result := Canvas.TextWidth(Text);
	finally
	  ReleaseDC(0, Canvas.Handle);
	end;
  finally
	Canvas.Free;
  end;
end;


반응형
반응형

Application.MainForm은 read only 속성이기 때문에 원칙적으로 런타임에 메인폼을 변경 할 수는 없다.


그러나 포인터를 이용하면 가능하다.


procedure SetAsMainForm(AForm: TForm);

var

  P:Pointer;

begin

  P := @Application.Mainform;

  Pointer(P^) := AForm;

end;

반응형

+ Recent posts