Tips&Tricks I trucchi del mestiere

 

Controllare i processi di un PC remoto

Un tip che consente di ottenere la lista dettagliata dei processi attivi su un PC remoto. Il nome del computer Φ specificato dalla costante "COMPUTER"; con il punto si specifica il PC locale. L'esempio utilizza WMI, per cui Φ necessario che sia installato sia sul PC locale che su quello remoto.
Tip fornito dal sig. R.Cirillo

Procedure TForm1.Button1Click(Sender: TObject);
Const
        QUERY    = 'Select * From Win32_Process';
        COMPUTER = 'SERVER-AT12K';
Var
        Services  : SWbemServices;
        ObjectSet : ISWbemObjectSet;
        Enum      : IEnumVariant;
        tempObj   : OleVariant;
        SObject   : ISWbemObject;
        Value     : Cardinal;
Begin
        Services := Locator.ConnectServer(COMPUTER, 'root\cimv2', '', '', '',
                                          '', 0, nil);
        ObjectSet := Services.ExecQuery(QUERY, 'WQL',
                                        wbemFlagReturnImmediately, nil);
        Enum := (ObjectSet._NewEnum) As IEnumVariant;
        While (Enum.Next(1, TempObj, Value) = S_OK) Do
        Begin
                SObject := IUnknown(TempObj) As SWBemObject;
                Memo1.Lines.Add(SObject.GetObjectText_(0))
        End;
End;


Come personalizzare i componenti Delphi senza scriverne di nuovi

Esiste la possibilitα di personalizzare i componenti senza doverne scriverne di nuovi. Basta definire due nuovi tipi all'interno della unit, uno definisce un'alias al tipo del componente che vogliamo personalizzare, l'atro Φ una classe che si chiama come il componente ed eredita dall'alias specificato. In questo modo alla nuova classe possiamo aggiungere metodi e proprietα che verranno utilizzati all'interno del codice e saranno disponibili (non in design mode), per ogni componente di quel tipo.
Tip fornito dal sig. A.Albergoni

type
	TMyEdit	= TEdit;
	TEdit = class(TMyEdit)
	private
		function lfFloat : real;
		procedure lpFloat(lrValue : real);
	public
		property AsFloat : real read lfFloat write lpFloat;
	end;
	
	TForm1 = class(TForm)
		btnSqrt: TButton;
		edtValue: TEdit;
		procedure btnSqrtClick(Sender: TObject);
	end;

var
  Form1: TForm1;

implementation
function TEdit.lfFloat : real;
begin
	try
		Result	:= StrToFloat(Text);
	except
		Result	:= 0;
	end;
end;

procedure TEdit.lpFloat(lrValue : real);
begin
	Text	:= FloatToStr(lrValue);
end;

{$R *.dfm}

procedure TForm1.btnSqrtClick(Sender: TObject);
begin
	edtValue.AsFloat	:= Sqrt(edtValue.AsFloat);
end;


Limitare il movimento del mouse

Un semplice ma efficace "trucco" in Delphi che permette di confinare il mouse entro un'area rettangolare dello schermo definita dall'utente.
Tip fornito dal Sig. R.Grassi

procedure Limita_Mouse(Sx,Alto,Dx,Basso:Integer); 
/* Questi valori rappresentano i punti in alto a sinistra e in basso a destra del rettangolo entro cui si va a confinare il mouse */ 
var
 Area: TRect;
begin
  Area.Left:=Sx;
  Area.Top:=Alto;
  Area.Right:= Dx;
  Area.Bottom:= Basso;
  ClipCursor(@Area); 
end;

Per far tornare il mouse al suo stato "normale":

ClipCursor(nil);