Avatar billede morten_s Nybegynder
03. december 2001 - 12:06 Der er 7 kommentarer og
1 løsning

Sende Event fra unit



Jeg har en unit som bruges til noget dataopsamling.

Det fungere på den måde at jeg sende en kommando indeholdende IPno, port osv til uniten, hvorefter uniten henter de pågældende data.

Det jeg ønsker er et event tilbage når data er indsamlet (det kan vare fra 1 sek til 1. min) ligesom det kendes fra f.eks. socketcomponenten onRead.

Er det muligt at lave ?
Avatar billede borrisholt Novice
03. december 2001 - 12:10 #1
Ja det er ikke så svært ..... Prøv at gå på http://borrisholt.com og downloaf mit ThreadSearch projekt. (Det ligger under FileIO) Den kaster er OnFileFound event af sig ... Kig lidt på den og spørg så igen hvis du stadig er i tvivl ...

Jens B
Avatar billede morten_s Nybegynder
03. december 2001 - 12:46 #2
Hej Jens

Jeg får nok brug for din hjælp, jeg har oprettet et test projekt med 2*Units med tilhørende Forms

min kode i unit 2 har du her:

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TADataFinishEvent = Procedure (AData : String) of object;
  TForm2 = class(TForm)
    Button1: TButton;
  private
    VOnADataFinish : TADataFinishEvent;
    { Private declarations }
  public
    { Public declarations }
    procedure OnFinishData;
  published
    property OnADataFinish : TADataFinishEvent read  VOnADataFinish write VOnADataFinish;
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}


procedure TForm2.OnFinishData;
begin
 
end;

end.


Jeg vil gerne have at Eventet sender strenge AData tilbage,

men er kørt lidt fast her
Avatar billede borrisholt Novice
03. december 2001 - 13:01 #3
ja ja .. Du har den ellers næsten ....

Lad os sige du har en unit der indsamler Data. (UnitData.pas)

den laver du sådan her :

unit UnitData;

interface

uses WathEverYouNeed;

type
  TADataFinishEvent = Procedure (AData : String) of object;
  TDataopsamling = class
  private
    VOnADataFinish : TADataFinishEvent;
  public
    Constructor Create(aDataFinishEvent : TADataFinishEvent);
    Procedure doGetData;
    property OnADataFinish : TADataFinishEvent read  VOnADataFinish write VOnADataFinish;
 
  end; 

implementation

Constructor TADataFinishEvent.Create();
begin
//sæt dit object op
  inhireted; 
end;

procedure TADataFinishEvent.doGetData;
var
  DataString : String;
begin
  //indsaml data i din DataString;
  if Assigned(VOnADataFinish) then
    VOnADataFinish(DataString);
end;


///// Så har du din form :

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, UnitData;

type
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    Procedure DataFinish(AData : String);
    { Private declarations }
  public
    { Public declarations }
  published
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}


procedure TForm2.Button1Click(Sender: TObject);
begin
  with  TADataFinishEvent.Create do
  try
    OnADataFinish := DataFinish;
    doGetData;
  finally
    free;
  end;
end;

procedure TForm2.DataFinish(AData : String);
begin
  ShowMessage(aData)
end;

end.

.. Frit fra leveren, men noget i den retning

Jens B
Avatar billede morten_s Nybegynder
03. december 2001 - 13:06 #4
Men jeg har en form på den som samler data ind, nærmest for at have
et sted at plavere min socket dims, men det går måske ikke ?
Avatar billede borrisholt Novice
03. december 2001 - 13:08 #5
ork jo ingen problem ..... Men der er ingen grund til at have en form bareofrdi du har en Socket ... Den kan du bare oprette i din Constructor ...

Jens B
Avatar billede morten_s Nybegynder
03. december 2001 - 13:10 #6
Ja men nu er jeg nået temmeligt langt med den, jeg sender også
diverse debug infos op på den
Avatar billede morten_s Nybegynder
03. december 2001 - 13:44 #7
Jeg har sendt lidt til dig
Avatar billede morten_s Nybegynder
03. december 2001 - 16:23 #8
Tak for hjælpen, jeg har hævet til 60 point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester