วันจันทร์ที่ 6 กุมภาพันธ์ พ.ศ. 2555

How to track a user's idle time

function SecondsIdle: DWord;
var
   liInfo: TLastInputInfo;
begin
   liInfo.cbSize := SizeOf(TLastInputInfo) ;
   GetLastInputInfo(liInfo) ;
   Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject) ;
begin
   Caption := Format('System IDLE last %d seconds', [SecondsIdle]) ;
end;

วันพฤหัสบดีที่ 2 กุมภาพันธ์ พ.ศ. 2555

DevExpress GetSkinNames

procedure GetSkinNames(aList: TStrings);
var
  i : Integer;
begin
  for i := 0 to Pred(cxLookAndFeelPaintersManager.Count ) do
    AList.Add( cxLookAndFeelPaintersManager.Items[ i ].LookAndFeelName );
end;
/////////////////
uses
...., cxLookAndFeelPainters, dxSkinInfo, dxGDIPlusClasses;

procedure GetSkinNamesAndIcon(aList: TStrings; aImageList16 : TcxImageList);
var
  i         : Integer;
  fDetails  : TdxSkinDetails;
  fIcon     : TdxPNGImage;
  fPainter  : TcxCustomLookAndFeelPainter;
  fSkinInfo : TdxSkinInfo;
  fImg      : TBitmap;
  fTempList : TStrings;
begin
  fImg := TBitmap.Create;
  fTempList := TStringList.Create;
  try
    for i := 0 to Pred( cxLookAndFeelPaintersManager.Count ) do
    begin
      fTempList.Add( cxLookAndFeelPaintersManager.Items[ i ].LookAndFeelName );
    end;
    for i := 0 to Pred( fTempList.Count ) do
    begin
      cxLookAndFeelPaintersManager.GetPainter(fTempList[i], fPainter);
      fPainter.GetPainterData(fSkinInfo) ;
      if fPainter.GetPainterDetails(fDetails) then
      begin
        aList.Add(fTempList[i]);
        fIcon := fDetails.Icons[sis16];
        fImg.Assign(fIcon);
        aImageList16.Add(fImg, Nil);
      end;
    end;
  finally
    fImg.Free;
    fTempList.Free;
  end;
end;

วันพุธที่ 1 กุมภาพันธ์ พ.ศ. 2555