|
| Dusør Fra : Uffe Kousgaard |
Dato : 25-10-01 19:02 |
|
Jeg udlover en dusør (en plovmand) til den, som kan hjælpe mig med et
problem. Jeg har to komponenter, der er linket sammen lidt på samme måde som
TTable og Tdatasource er det. De to komponenter skal der laves én active-x
ud af, men det er her problemet opstår, da mit link giver problemer. Hvis
man er novice ud i active-x og COM, er der nok ingen grund til at kaste sig
ud i at prøve at løse problemet.
Se en simplificeret udgave af komponenterne + et lille delphi demo-project i
news://dk.binaer, subject pascal.
Hilsen
Uffe
| |
Thomas Rose (25-10-2001)
| Kommentar Fra : Thomas Rose |
Dato : 25-10-01 20:50 |
|
Hej Uffe,
jeg synes ikke dit eksempel er helt nemt at forstå... hvad er det præcis du
vil opnå, og hvad præcis er problemet? Jeg kunne ikke kompilere eksemplet,
mest sansynligt fordi de to test-klasser skal være installeret i Delphi's
IDE. Jeg forsøgte selv en lille test, med to klasser der nedarver fra
TWinControl; nedarvningen gav mig problemer - men jeg kunne lægge en
property på den ene klasse der kunne pege på den anden klasse (design-time
og run-time).
Desuden taler du om ActiveX og COM... der er ikke meget af dette i dit
eksempel... hvordan kommer ActiveX og COM ind i billedet?
Hygge,
Thomas
| |
Uffe Kousgaard (25-10-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 25-10-01 21:38 |
|
Hej
Problemet er, at lave de to komponenter om til Active-x. Det er derfor
eksemplet nedarver fra Twincontrol, da active-x ikke kan baseres på Tobject.
Og du har ret i, at komponenterne først skal installeres før demo projektet
kan kompileres. Principielt skulle samme 2 komponenter kunne laves om til
active-x (så de kan kaldes fra VB), derefter kan active-x'erne så importeres
i Delphi og stort set samme demo projekt skulle derefter kunne kompileres,
blot med active-x komponenter i stedet for alm. dlephi komponenter.
Hilsen
Uffe
"Thomas Rose" <trose@get2net.dk> wrote in message
news:3bd86ce0$0$196$edfadb0f@dspool01.news.tele.dk...
> Hej Uffe,
>
> jeg synes ikke dit eksempel er helt nemt at forstå... hvad er det præcis
du
> vil opnå, og hvad præcis er problemet? Jeg kunne ikke kompilere eksemplet,
> mest sansynligt fordi de to test-klasser skal være installeret i Delphi's
> IDE. Jeg forsøgte selv en lille test, med to klasser der nedarver fra
> TWinControl; nedarvningen gav mig problemer - men jeg kunne lægge en
> property på den ene klasse der kunne pege på den anden klasse (design-time
> og run-time).
>
> Desuden taler du om ActiveX og COM... der er ikke meget af dette i dit
> eksempel... hvordan kommer ActiveX og COM ind i billedet?
>
> Hygge,
> Thomas
>
>
| |
Thomas Rose (25-10-2001)
| Kommentar Fra : Thomas Rose |
Dato : 25-10-01 22:17 |
|
Hej Uffe,
"Uffe Kousgaard" <uffe@routeware.dk> wrote in message
news:3bd87818$0$245$edfadb0f@dspool01.news.tele.dk...
> Hej
>
> Problemet er, at lave de to komponenter om til Active-x. Det er derfor
> eksemplet nedarver fra Twincontrol, da active-x ikke kan baseres på
Tobject.
Hmm... jeg ser umiddelbart ikke forbindelsen mellem TWinControl og
ActiveX... TWinControl er en standard Delphi VCL klasse, hvorimod en ActiveX
komponent udmærker sig ved at implementere et eller flere COM/Automation
interfaces, og har tilknyttet et typelibrary (der muliggører komponentens
anvendelse uden for Delphi).
Hvis du ønsker at lave en ActiveX form, kontrol, eller objekt, der kan
anvendes udenfor Delphi, f.eks. på ASP-sider, i VB, o.a., så kan du bruge
Delphis wizard (File -> New -> ActiveX)... her kan du oprette en række
forskellige typer ActiveX, COM, og Automation objekter. Hvis du ønsker en
visuel kontrol skal du have fat i en ActiveX Control eller Form, men ønsker
du derimod blot ikke-synlige objekter kan du bruge Automation-objekter
(COM-objekter kan så vidt jeg ved ikke anvendes i VB).
Cheers,
Thomas
| |
Uffe Kousgaard (25-10-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 25-10-01 23:05 |
|
Tak for de mange henvisninger, men jeg er udmærket bekendt med delphi's
active-x wizard m.v. Active-x komponenter skal nedarve fra Twincontrol, da
de skal have en windows handle (hvilket Tobject f.eks. ikke har). Problemet
er fortsat, at der i en af mine metoder optræder en paramter, som er af
samme type som den anden komponent. Og det kan wizarden ikke håndtere, da
kun "almindeligt" forekommende type håndteres af denne wizard. Mit spørgsmål
er derfor, hvad man gør i det tilfælde?
Hilsen
Uffe
PS: VB programmører forventer active-x og ikke COM objekter, derfor er COM
ikke på banen som et alternativ. Desuden ville jeg også der have det samme
problem som ovenfor.
"Thomas Rose" <trose@get2net.dk> wrote in message
news:3bd8814d$0$237$edfadb0f@dspool01.news.tele.dk...
> Hej Uffe,
>
> Hmm... jeg ser umiddelbart ikke forbindelsen mellem TWinControl og
> ActiveX... TWinControl er en standard Delphi VCL klasse, hvorimod en
ActiveX
> komponent udmærker sig ved at implementere et eller flere COM/Automation
> interfaces, og har tilknyttet et typelibrary (der muliggører komponentens
> anvendelse uden for Delphi).
>
> Hvis du ønsker at lave en ActiveX form, kontrol, eller objekt, der kan
> anvendes udenfor Delphi, f.eks. på ASP-sider, i VB, o.a., så kan du bruge
> Delphis wizard (File -> New -> ActiveX)... her kan du oprette en række
> forskellige typer ActiveX, COM, og Automation objekter. Hvis du ønsker en
> visuel kontrol skal du have fat i en ActiveX Control eller Form, men
ønsker
> du derimod blot ikke-synlige objekter kan du bruge Automation-objekter
> (COM-objekter kan så vidt jeg ved ikke anvendes i VB).
>
> Cheers,
> Thomas
>
>
| |
Thomas Rose (26-10-2001)
| Kommentar Fra : Thomas Rose |
Dato : 26-10-01 08:40 |
|
Hej Uffe,
"Uffe Kousgaard" <uffe@routeware.dk> wrote in message
news:3bd88c73$0$772$edfadb0f@dspool01.news.tele.dk...
> Tak for de mange henvisninger, men jeg er udmærket bekendt med delphi's
> active-x wizard m.v. Active-x komponenter skal nedarve fra Twincontrol, da
> de skal have en windows handle (hvilket Tobject f.eks. ikke har).
Problemet
> er fortsat, at der i en af mine metoder optræder en paramter, som er af
> samme type som den anden komponent. Og det kan wizarden ikke håndtere, da
> kun "almindeligt" forekommende type håndteres af denne wizard. Mit
spørgsmål
> er derfor, hvad man gør i det tilfælde?
Ok... hmm... har du behov for en visuel kontrol? Mit problem er her min
manglende erfaring med netop ActiveX komponenter, og jeg ved derfor ikke om
de samme regler gælder for ActiveX som for standard Automation og COM... min
erfaring ligger nemlig primært indenfor Automation, COM og COM+...
Har du ikke behov for en desideret visuel kontrol, men blot et objekt der
kan anvendes i VB, kan du bruge Automation objekter... og her skulle det
ikke være noget problem at opnå det du gerne vil - at objekterne kan
referere til hinanden. Forskellen mellem standard Delphi objekter og
Automation objekter er referencernes type... Delphi objekter bruger som
bekendt TObject referencer, hvorimod Automation objekter anvender interface
referencer (IUnknown og IDispatch). Måske kan ActiveX kontroller også
refereres til vha. interface referencer, men her er jeg lidt usikker - især
fordi Delphi's ActiveX Wizard laver en ActiveX wrapper til dig... dvs.
Delphi kode der omkranser ActiveX komponenten...
> PS: VB programmører forventer active-x og ikke COM objekter, derfor er COM
> ikke på banen som et alternativ. Desuden ville jeg også der have det samme
> problem som ovenfor.
Hmm... som sagt, hvis du ikke har behov for en visuel kontrol kan du anvende
Automation objekter istedet... og her skulle dit problem sagtens kunne
løses.
Cheers,
Thomas
| |
Thomas Schulz (28-10-2001)
| Kommentar Fra : Thomas Schulz |
Dato : 28-10-01 17:05 |
|
> Jeg udlover en dusør (en plovmand) til den, som kan hjælpe mig med et
spørg i en Borland newsgroup?
Thomas
| |
Uffe Kousgaard (28-10-2001)
| Kommentar Fra : Uffe Kousgaard |
Dato : 28-10-01 22:39 |
|
Der har jeg selvfølgelig spurgt samtidig og det var også der igennem jeg fik
et "hint"(fra Holland). Thomas Rose har nu også været til stor hjælp omend
han er mere til rendyrket COM end Active-X Min løsning virker nemlig kun
med Active-X.
Når løsningen er testet mere grundigt, kommer løsningen her sammen med lidt
kildekode.
"Thomas Schulz" <dk_sz@hotmail.com> wrote in message
news:3bdc2ce9$0$25397$edfadb0f@dspool01.news.tele.dk...
> > Jeg udlover en dusør (en plovmand) til den, som kan hjælpe mig med et
>
> spørg i en Borland newsgroup?
>
>
> Thomas
>
>
| |
|
|