Newsgroup: it.comp.lang.delphi
Titolo: delphi e gli eventi

sono un programmatore visual basic che sta cercando di capire/imparare
delphi..
la mia domanda riguarda e classi e la generazione di eventi e provo a
spiegarmi con un esempio:
in visual basic si puň far scatenare un evento a una propria classe
aggiungendo in quest'utlima una dichiarazione del tipo
Public Event NomeEvento
e poi scatenarlo con l'istruzione "RaiseEvent" per far sě che venga
richiamata la routine di implementazione nell'oggetto che istanzia la
classe.
In delphi č possibile aggiungere un evento ad una propria classe? e se sě..
potete farmi un esempio di una classe che usa un evento personalizzato e di
come si implementa?
ringrazio in anticipo

 personalizzato e di come si implementa?
Hai scelto una cosa semplice per iniziare.
Un esempio semplice semplice:
Definisci una property published del tipo TNotifyEvent che fa
riferimento ad un membro privato dello stesso tipo.
  private
    { Private declarations }
    fOnExecute: TNotifyEvent;
  public
    property OnExecute: TNotifyEvent read fOnExecute write fOnExecute;
    { Public declarations }
  end;
da notare che TNotifyEvent e' cosi' definita:
TNotifyEvent = procedure(Sender: TObject) of object;
Nel codice della tua classe per scatenare l'evento fai:
procedure TMyClass.Execute();
begin
 if Assigned (fOnExecute) then
	fOnExecute(Self);
end;
Controlli che l'evento sia assegnato, (Assigned) se e' cosi' lo chiami.
Per creare altri eventi persoanlizzati non devi far altro che definire
il tipo
type
TMyEvent = procedure(Sender: TObject; MyVal:integer; MyStrin:string) of
object;
ed utilizzarlo nella classe come descritto sopra.
Saluti.
P.S.
Se stai iniziando con delphi ti suggerisco un buon libro e, se non li
hai gia letti, i seguenti link:
http://www.marcocantu.com/epascal/default.htm
http://www.marcocantu.com/edelphi/default.htm
-- 
I'am what I'am, I do what I can

Gerry scriveva fra l'altro:

unit uChangeableString;
uses Classes, SysUtils;
type
  TChangeableString = class(TObject)
  private
    fData: string;
    fOnChange: TNotifyEvent;
    procedure SetData(const Value: string);
  protected
    procedure DoChange; dynamic;
  published
    property Data: string read fData write SetData;
    property OnChange: TNotifyEvent read fOnChange write fOnChange;
  end;
implementation
procedure TChangeableString.SetData(const Value: string);
begin
  if fData <> Value then begin
    fData := Value;
    DoChange;
  end;
end;
procedure TChangeableString.DoChange;
begin
  if Assigned(fOnChange) then
    fOnChange(self);
end;
uso in una form con 2 pulsanti
var cs: TChangeableString;
procedure TForm1.StringChange(Sender: TObject);
begin
  if Sender is TChangeableString then
    ShowMessage('Nuovo valore: ' + TChangeableString(Sender).Data)
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  if cs = nil then
    cs := TChangeableString.Create;
  cs.OnChange := StringChange;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  if cs = nil then
    Button1Click(nil);
  cs.Data := FormatDateTime('"sono le "hh:nn:ss', Now);
end;
Saluti
Paolo Arosio
--
"La dimostrazione dell'esistenza di specie intelligenti nell'universo e'
che non ci vengono a trovare"

Veramente grazie per l'aiuto!!
grazie ai vostri esempi ho capito "il giro" da fare!!
.. era un po' difficile per un neofita senza aiuto ;-))