Avatar billede eiland Nybegynder
06. februar 2001 - 12:31 Der er 15 kommentarer og
1 løsning

Kan man lave en unit(ikke en form) der har en event?

Kan man lave en unit(ikke en form) der har en event?
Hvis ja hvordan, den skal modtage en event fra en komponent, og derefter sende et svaret til den form/unit der har opretter den.
Avatar billede delphi Nybegynder
06. februar 2001 - 12:34 #1
Det nemmeste er nok at lave en ny class, der nedarver fra et passende object i Delphi VCL hiraki, evt. TComponent.  Denne nye class vil så kunne reagere på events.

Delphi
Avatar billede borrisholt Novice
06. februar 2001 - 12:35 #2
Du opretten en Function fx. Som følger :

Procedure HestEvent(Sender : TObject; Hest : Pointer) of Object


Et ready to go eksempel kan du finde på http://Borrisholt.com, undet File Io hvorfra du skal downloade ThreadSerach.

JEns B
Avatar billede delphi Nybegynder
06. februar 2001 - 12:35 #3
For iøvrigt at svare direkte på dit spørgsmål: Nej en unit kan ikke reagere på en event. 

Du sammenblander lidt tingene ved at spørge på den måde, lig\'som: Kan en avis reagere på et lyssignal??

Peter
Avatar billede eiland Nybegynder
06. februar 2001 - 15:37 #4
--> delphi
Når jeg nu arver fra TwebBrowser
hvilken syntaks skal jeg skrive, for at få udført et stykke kode ved eventen ”OnDownloadComplete”?
Avatar billede delphi Nybegynder
06. februar 2001 - 15:39 #5
TwebBrowser.....Se det er en størrelse jeg ikke har arbejdet med... Ven venligst, jeg skal lige se på sagen.
Avatar billede delphi Nybegynder
06. februar 2001 - 15:40 #6
procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
begin
  ShowMessage(\'Download er afsluttet....\');
end;


Men så simpelt er det vel ikke???  Hvad er egetligt mere specifikt dit problem.

Avatar billede delphi Nybegynder
06. februar 2001 - 15:45 #7
Det jeg mener er: Hvis jeg banker en TWebBrowser ind på en form, så er dette den rutiner der kaldes, hvis browseren har afsluttet sit job (succesfuld eller ej). 

Nu skriver du godt nok noget om, at du ikke vil benytte en form... så hvad er det egentligt du vil?

Hvis dit problem er, at du vil lave en console application, kan du så ikke bare bruge en skjult form til at indeholde dine inet components?

Peter

- der iøvrigt smutter om 9 minutter!
Avatar billede eiland Nybegynder
06. februar 2001 - 15:48 #8
Jeg har en separat Unit med en klasse (THentSide) der arver fra TwebBrowser.
I  THentSide vil jeg gerne skrive et stykke kode, der bliver udført ved eventen ”OnDownloadComplete” optræder?
Avatar billede delphi Nybegynder
06. februar 2001 - 16:11 #9
Hjælper det her dig vidre:

type
  THentSide = class(TWebBrowser)
  private
    { Private declarations }
    procedure HentSideDownloadComplete(Sender: TObject);
  protected
    { Protected declarations }
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
  published
    { Published declarations }
  end;

procedure Register;

implementation

procedure THentSide.HentSideDownloadComplete(Sender: TObject);
begin
  ShowMessage(\'Davs...\');
end;

constructor THentSide.Create(AOwner: TComponent);
begin
  inherited;
  onDownloadComplete := HentSideDownloadComplete;
end;

Peter
Avatar billede borrisholt Novice
06. februar 2001 - 16:18 #10
Ingen heste ?

:-(

Jens B
Avatar billede dl Nybegynder
06. februar 2001 - 20:09 #11
Du skal først lave en Unit fil, du vælger New, og derefter Unit.
Og den komme til at se sådan du!

// start //

unit Unit2;

interface

implementation

end.

// slut //

En færdig unit fil:

// start //

unit Unit2;

interface

function x2( x: Integer ): Integer;

implementation

function x2( x: Integer ): Integer;
begin
  x2 := X * X;
end;

end.

// slut //

\"interface\" er det som andre programmer kan se, og kan starte.

\"implementation\" er der hvor du har alt dit kode.

HUSK:

at ligge filerne ind under samme mappe som dit program.

At filenavn er det samme som Unit fil.  Fx Filenavn er Unit2, fordi at der i unit filen står Unit2 under Unit!

Hust så i dit hoved program at tilføje unit filen under USER.

Og så kan du kalle dine Functioner og Procedure.

======================

Hvis der er noget du ikke forstå skriv igen!

Avatar billede delphi Nybegynder
07. februar 2001 - 08:41 #12
dl> Enten misforstår jeg det du skriver eller også har du misforstået hele spørgsmålet - og jeg tror mest på det sidste!  Du forklarer lidt om generel unit opbygning og - så vidt jeg kan gennemskue - lidt i retning af hvorledes man bruger en rutine fra en unit i en anden, dog uden at komme ind på \'Uses\' udtrykket.  Eiland snakker om hvorledes en component kan tilknyttes en event, om at har lavet sin egen component og at han nedarver fra TWebBrowser - de ting er ikke for begyndere, så jeg tror umidelbart at han er over det stadie, der hedder alm. unit opbygning.

Bare for 2 øre af mine meninger...

Peter
Avatar billede eiland Nybegynder
07. februar 2001 - 11:31 #13

Det er nu det delphi skriver, jeg er ude efter, man jeg får en fejl når jeg kører programmet:

Unsatisfied forward or external declaration: \'Register\'
Avatar billede borrisholt Novice
07. februar 2001 - 11:35 #14
prøv med

procedure Register;
begin
  RegisterComponents(\'Hest\',[THentSide]);
end;
Avatar billede delphi Nybegynder
07. februar 2001 - 11:46 #15
Register er en procedure Delphi bruger hvis/når du ønsker at indstallere din component sammen med de øvrige VCL komponenter.  Hvis du laver en component, som du opretter dynamisk (under runtime) og aldrig har brug for at kunne vælge den fra component paletten for derefter at placere den på formen, så kan du droppe proceduren....MEN: Når du laver nye komponenter, så lad dog Delphi hjælpe dig.  Det gør du ved: Component -> New Component.  Du får nu en dialogboks.  Udfyld denne (brug TWebBrowser som ancestor, THentSide som name og \'Hest\' (så du det Jens) som palette name).  Nu vil Delphi oprette skelettet til din nye component - hvilket sparer noget arbejde - OG DEN HAR LAVET EN REGISTER procedure.

Peter
Avatar billede dl Nybegynder
07. februar 2001 - 21:35 #16
Jeg har vist misset det ( spørgsmålet ).
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