AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DB-Ereignis in anderer Unit abfangen
Thema durchsuchen
Ansicht
Themen-Optionen

DB-Ereignis in anderer Unit abfangen

Ein Thema von meggles · begonnen am 8. Jan 2004 · letzter Beitrag vom 8. Jan 2004
Antwort Antwort
meggles
(Gast)

n/a Beiträge
 
#1

DB-Ereignis in anderer Unit abfangen

  Alt 8. Jan 2004, 10:15
Hi Leute,
ich habe mir ein Datenmodul gebastelt, in dem DB-Routinen zur Speicherung von Emails enthalten sind. Zwei Units greifen darauf zu; die Unit des Client-Programms und die Unit des Server-Programms.
Sowohl das Client-als auch das Serverprogramm sollen in der Statusbar die Information "Datenbank online" bzw "offline" darstellen können. Nun das Problem:
uClient uses uDM
uServer uses uDM
Wie kann ich aus einer der beiden Units auf ein Ereignis, resp. "AfterConnect" und "AfterDisconnect" im DM reagieren?
Vielen Dank,
Simon
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#2

Re: DB-Ereignis in anderer Unit abfangen

  Alt 8. Jan 2004, 10:32
wenn ich Dich richtig verstehe, müßtest Du in UClient z.B. eine Objektmethode als Ereignisbehandlungsroutine für das Ereignis deklarieren und dann mit uDM.Objekt.OnAfterConnect := Objekt.ObjektMethode zuweisen?
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Benutzerbild von Smokey
Smokey

Registriert seit: 10. Nov 2003
Ort: Puerto de la Cruz
158 Beiträge
 
Delphi 7 Enterprise
 
#3

Re: DB-Ereignis in anderer Unit abfangen

  Alt 8. Jan 2004, 10:35
Du könntest zum Beispiel in den Events Set-Funktionen der beiden Units aufrufen, die Public deklariert sind und eine Variable wie bConnected auf True setzen.

Oder wär das in dem Fall zu simpel?
Wenn du die Absolute Trennung der DB Unit von den beiden anderen aufrecht erhalten willst ist es natürlich ungeschickt so.
Dann müsstest du von den anderen Units auf eine Public Funktion der DBUnit zugreifen und den Status abfragen.
Ein anderes Stichwort wären Observer. Aber ka in wie weit da Delphi was anbietet oder man es selber zusammenhäkeln muss.

mfg
smk
Greif dir ein gutes Stück Fleisch auf deinem Weg nach draussen !!!
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#4

Re: DB-Ereignis in anderer Unit abfangen

  Alt 8. Jan 2004, 10:48
Hallo,

da du wahrscheinlich den Client und den Server nicht gleichzeitig laufen hast, kannst du das Ereignis direkt aus der Server-, bzw. Client-Unit überschreiben.
Delphi-Quellcode:
// procedure deklarieren
procedure doConnect(Sender: TObject);
...und dann im Create des Servers(und auch Client) das Ereignis zuweisen:DataModul1.Connection1.onConnect := doConnect; Den Genauen Syntax der Methode habe ich hier nur angenommen.
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
meggles
(Gast)

n/a Beiträge
 
#5

Re: DB-Ereignis in anderer Unit abfangen

  Alt 8. Jan 2004, 11:03
Danke für den Tip - ich habs ausprobiert, kassiere aber folgende Fehlermeldung:
"Inkompatible Typen: 'TIBConnection' und 'TObject'"
Ich schwimme in der Ereignis-Materie noch ein wenig, aber müsste ich "doConnect" nicht als Ereignis (TIBCOnnection_Event)definieren...?
Gruß,
Simon
  Mit Zitat antworten Zitat
Benutzerbild von Garby
Garby

Registriert seit: 17. Mär 2003
Ort: Tirol
199 Beiträge
 
Delphi 2005 Professional
 
#6

Re: DB-Ereignis in anderer Unit abfangen

  Alt 8. Jan 2004, 11:14
Hallo,

Zitat von Garby:
Den Genauen Syntax der Methode habe ich hier nur angenommen.
Das bedeutet, dass ich die Methode nicht richtig deklariert habe.

In diesem Fall wird es wohl mitprocedure doConnect(Sender: TIBConnection); funktionieren.

Der einfachste Weg ist: im OI das gewünschte Ereignis doppelclicken, damit wird eine Ereignisprocedure im Editor erzeugt, die du dann nur mehr kopieren brauchst
Walter
Wenn zwei dasselbe tun, ist es noch lange nicht dasselbe
(Adelphi)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz