Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBKomponente POST/CANCEL Events? (https://www.delphipraxis.net/116481-dbkomponente-post-cancel-events.html)

Gruber_Hans_12345 30. Jun 2008 12:48

Datenbank: egal • Version: egal • Zugriff über: egal

DBKomponente POST/CANCEL Events?
 
Ich schreibe mir gerade eine Komponente, die per TFieldDataLink mit einem DataSource verbunden wird.
Nun muß ich beim speichern und so, in einer anderen Datenbank SQL Aktionen ausführen, aber ich finde weder ein Event, noch ein property, mit dem ich feststellen kann, das der USer ein POST oder CANCEL Ereignis ausführt.
Ich sehe nur den aktuellen Zustand der DataSource ...

Gibt es da was anderes? Oder wie komme ich zu den Events in der Komponente?

hoika 30. Jun 2008 12:53

Re: DBKomponente POST/CANCEL Events?
 
Hallo,

im DataSource nicht, aber im dort festgelegten Dataset.

Die Events sind im übrigen lokal,
wenn auf einem anderen Rechner mit dem gleichen Dataset (Tabelle) was gemacht wird,
bekommst du das nicht mit.


Heiko

Gruber_Hans_12345 30. Jun 2008 13:10

Re: DBKomponente POST/CANCEL Events?
 
aber, wie kann ich VON der Komponente darauf zugreifen?

ich mache eine Art von TDBComboBox, die aber beim POST Ereignis der DataSource noch spezielle Sachen ausführen muß.

mkinzler 30. Jun 2008 13:20

Re: DBKomponente POST/CANCEL Events?
 
DataSource != DataSet

dataspider 30. Jun 2008 13:24

Re: DBKomponente POST/CANCEL Events?
 
Hi,

dafür ist IMHO OnEditingChange von TFieldDatalink zuständig.

Frank

Gruber_Hans_12345 30. Jun 2008 13:28

Re: DBKomponente POST/CANCEL Events?
 
Zitat:

Zitat von mkinzler
DataSource != DataSet

ja klar ...

aber, wie gesagt, ich möchte gerne eine DB Komponente designen, die ich dann auf mein Form ploppe, den DataSource und den Feldnamen auswähle
Das ändern, speichern und co, funktioniert ja mit dem TFieldDataLink ja ganz toll, aber nun muß ich in dieser Komponente, beim speichern der DataSource (wird natürlich die DataSet gespeichert) noch extra Sachen ausführen.
Man bekommt ja die events OnEditingChange, aber leider weiss man da nicht, ob es wegen POST oder CANCEL oder was weiss ich ist.
nun müsste ich im DataSet ein Flag setzen, und dieses dann im OnEditingChange des TFieldDataLink abfragen, nur möchte ich das ganze so Global wie möglich halten.

hoika 30. Jun 2008 13:39

Re: DBKomponente POST/CANCEL Events?
 
Hallo,

TFieldDatalink hat ja sogar ein DataSet als Property.

Erzeuge also ein Ereignismethode für das gewünschte DataSet Event
(AfterCancel, BeforeCancel oder was du auch willst).

Etwa so.

Delphi-Quellcode:
type
  TMyComponent = class

    procedure MyEvent of Object;
  end;

und irgendwo
  Self.DataSet.OnBeforeCancel:= MyEvent;

Zu Events war letzte Woche ne Menge getippert worden.


Heiko

Gruber_Hans_12345 30. Jun 2008 13:48

Re: DBKomponente POST/CANCEL Events?
 
Zitat:

Zitat von hoika
Hallo,

TFieldDatalink hat ja sogar ein DataSet als Property.

Erzeuge also ein Ereignismethode für das gewünschte DataSet Event
(AfterCancel, BeforeCancel oder was du auch willst).

Etwa so.

Delphi-Quellcode:
type
  TMyComponent = class

    procedure MyEvent of Object;
  end;

und irgendwo
  Self.DataSet.OnBeforeCancel:= MyEvent;

Zu Events war letzte Woche ne Menge getippert worden.


Heiko


Geht das nicht anders?
So muß ich mir ja dann die letzen Events merken (dieses Events werden natürlich schon verwendet), ich brauche nun sowas wie einen FieldDataLink, nur der mir Infos über den DataSet gibt.
Wie man Evernts generell verwendet ist mir klar, nur ist es natürlich nicht schön in einer Komponente, die man dann ja auch 3 mal auf das Form geben kann, jedesmal auf das Event des DataSet zuzugreien, das wird mir dabei übel, wenn ich das wirklich so lösen müsste ...

hoika 30. Jun 2008 14:12

Re: DBKomponente POST/CANCEL Events?
 
Hallo

und irgendwo
Self.DataSet.OnBeforeCancel:= MyEvent;

sollte heissen "und irgendwo in deiner Komponente".

Also nicht an mehreren Stellen.

Natürlich sollte deine Komponente vor dem Setzen von

OnBeforeCancel:= MyEvent

den alten Event-Handler speichern und ihn vor deinem oder
nach deinem eigenen Handler aufrufen.


Das ganze ist aber immer nur einmal (in deiner Komponente) vorhanden.


Heiko

Gruber_Hans_12345 30. Jun 2008 14:17

Re: DBKomponente POST/CANCEL Events?
 
Zitat:

Zitat von hoika
Hallo

und irgendwo
Self.DataSet.OnBeforeCancel:= MyEvent;

sollte heissen "und irgendwo in deiner Komponente".

Also nicht an mehreren Stellen.

Ist mir schon klar, nur verwende ich diese meine neue Komponente dann mehrmals auf einem Formular

Zitat:

Zitat von hoika
Natürlich sollte deine Komponente vor dem Setzen von

OnBeforeCancel:= MyEvent

den alten Event-Handler speichern und ihn vor deinem oder
nach deinem eigenen Handler aufrufen.

Das ganze ist aber immer nur einmal (in deiner Komponente) vorhanden.

Heiko

Bedeutet aber dann, das ich hier (für DB Komponenten) eine sonderlösung habe, die eben manuell auf die Events der DataSet zugreifen muß, und nicht mehr alles per DataLink und co handeln kann.

Das Problem ist deshalb, da ich zur Laufzeit auch die Events ändern kann (da läuft eine Script Engine und Formulareditor mit, und der bekommt dann probs, wenn jemand anders als die Scriptengine diese Events verwendet ... )
deshalb wollte ich eine Standardlösung machen, die mit den Defaultmitteln von Delphi DB Komponenten auskommt, und nicht ein eigenes Süppchen kochen, aber wenns nicht anders geht, muß ich wohl oder übel mit Flags arbeiten :(


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:39 Uhr.
Seite 1 von 2  1 2      

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