![]() |
DB-Ereignis in anderer Unit abfangen
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 |
Re: DB-Ereignis in anderer Unit abfangen
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?
|
Re: DB-Ereignis in anderer Unit abfangen
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 |
Re: DB-Ereignis in anderer Unit abfangen
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:
...und dann im Create des Servers(und auch Client) das Ereignis zuweisen:
// procedure deklarieren
procedure doConnect(Sender: TObject);
Delphi-Quellcode:
Den Genauen Syntax der Methode habe ich hier nur angenommen.
DataModul1.Connection1.onConnect := doConnect;
|
Re: DB-Ereignis in anderer Unit abfangen
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 |
Re: DB-Ereignis in anderer Unit abfangen
Hallo,
Zitat:
In diesem Fall wird es wohl mit
Delphi-Quellcode:
funktionieren.
procedure doConnect(Sender: TIBConnection);
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 :-D |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz