[Delphi] Verschillende Data Modules, zelfde events

Pagina: 1
Acties:

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Ik heb een DCOM server met 2 (en in de toekomst meer) Remote Data Modules, namelijk 1 parent en op dit moment nog 1 child (worden er dus meer).

Nou zitten er een aantal DataSetProvider's op de verschillende Data Modules. Nou was het mijn idee om ze allemaal aan dezelfde Events te hangen, vanwege logging e.d.

Dit lukt zolang de DataSetProvider's op dezelfde DM zitten, maar ik wil ook de events van de DataSetProvider's van de Child('s) DM's er aan koppelen, dit lukt niet zomaar.

Waarom niet? En is dit op te lossen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:57
Welke fout krijg je?
Wat lukt er niet?

Heb je uw hoofd DM wel ge-used in uw child DM's?

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Jep, alles uses zijn goed.

Ik kan gewoon die events uit de parent DM niet in de Child gebruiken. Die kent ie gewoon niet ofzo. Terwijl het allebij normale DataSetProviders zijn.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • whoami
  • Registratie: December 2000
  • Laatst online: 22:57
Kan het ook niet te maken hebben met de volgorde waarin uw datamodules gecreeërd zijn. (Ik veronderstel dat uw DM's auto-created zijn).
Ik ben maar aan het gissen hoor

https://fgheysels.github.io/


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Het gaat om Remote Data Modules he?

Die worden run-time aangemaakt per DCOM connectie. Met de parent RMDM wordt de Child gemaakt.

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Afbeeldingslocatie: http://www.endoria.net/upload/?bekijk=1013783911

Bij 1 staat een DataSetProvider met Events, bij 2 staat ook een DataSetProvider. Je ziet dat 1 events heeft, dezelfde events wil ik ook voor 1 gebruiken!

Kan dat?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 16:08

Delphi32

Heading for the gates of Eden

Op vrijdag 15 februari 2002 15:41 schreef jelmervos het volgende:

[weg leuk plaatje]

Bij 1 staat een DataSetProvider met Events, bij 2 staat ook een DataSetProvider. Je ziet dat 1 events heeft, dezelfde events wil ik ook voor 1 gebruiken!

Kan dat?
Niet zomaar. Je moet (uit mn hoofd, dus ongetest en puur theorie) een PUBLISHED property MainDataModule maken op je child datamodule. Pas dan kan Delphi's RTTI bij de informatie die hoort bij de main datamodule.
Het lijkt me een lastig werkje en het trekt de verhoudingen tussen de datamodules behoorlijk scheef vind ik zelf. Bovendien is je child ineens afhankelijk van het bestaan van een instantie van de main datamodule om te kunnen werken; je weet nooit hoe dat gaat lopen in COM situaties.

Je kan natuurlijk de event handlers (de intelligentie die daar nu in zit) verschuiven naar een aparte unit, en dan in de event handlers zelf op main en child een call laten maken naar je functies in de gesharede unit. Of ook leuk (maar meer uitzoekwerk): maak een TSharedDatasetProviderEventHandlers component waarin je intelligentie is en pleur die op beide datamodules :)

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Een apart component is een idee, die had ik zelf ook bedacht, alleen lijkt me die oplossing in een beetje overkill. Of is het heel simpel om die events zo te krijgen?

"The shell stopped unexpectedly and Explorer.exe was restarted."


  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Topicstarter
Nog iemand?

"The shell stopped unexpectedly and Explorer.exe was restarted."

Pagina: 1