![]() |
Ereignis verschwindet aus TQuery Komponente
Hallo!
Ich habe in Delphi 5 auf einer Form ein Query und habe diesem Query im Afterscroll eine Anweisung erteilt. Beim wieder aufmachen der Form im Delphi ist der Zeiger aufs Afterscroll aus dem Objektinspektor verschwunden. Warum ist das so? Bei anderen Forms klappt das... Danke und Gruss, Benjamin |
Re: Ereignis verschwindet aus TQuery Komponente
Herzlich willkommen in der Delphi-PRAXiS, Benjamin.
Mir ist kein grundsätzliches IDE-Problem in dieser Hinsicht bekannt. Hast du nach dem Setzen des Ereignis-Codes im Object Inspector das Ergebnis gespeichert und anschließend mit Alt-F12 mal das Formular im Textmodus betrachtet? Freundliche Grüße |
Re: Ereignis verschwindet aus TQuery Komponente
Ja, wir haben gespeichert. Wir sind sogar auf den Trick gekommen, nach dem Setzen des Ereignisses erstmal irgendwo anders hinzuklicken und erst dann zu speichern. (Denn wenn eine Eigenschaft gesetzt wird und dann direkt gespeichert wird, dann scheint Delphi die Änderung nicht immer mitzubekommen.)
Direkt nach dem Speichern war das AfterScroll-Ereignis jedenfalls noch da, sowohl im Objekt-Inspektor als auch in der dfm-Datei. Form zu, Form auf, Ereignis weg. Der Quellcode, der in dem Ereignis ausgeführt werden soll, ist noch da, nur die Verknüpfung von TQuery zu Quellcode verschwindet spurlos. Hat noch jemand Ideen? Grüße von Mena |
Re: Ereignis verschwindet aus TQuery Komponente
Zitat:
Dann mit einem normalen Editor (Notepad & Co.) nachschauen, ob das Event vorhanden ist. Somit wird entdeckt, ob das Problem beim Speichern oder Laden auftritt. |
Re: Ereignis verschwindet aus TQuery Komponente
Definitv beim Öffnen: Die dfm nach dem Speichern im Editor geöffnet enthält Folgendes:
Delphi-Quellcode:
Interessant ist, dass in der IDE nach dem nächsten Öffnen das Ereignis wieder weg, in der dfm aber noch vorhanden ist. In der IDE wird in diesem Moment nicht angezeigt, dass irgendwas zu speichern wäre. Speichere ich die Unit trotzdem verschwindet das Ereignis auch aus der dfm.
object Query: TQuery
AfterScroll = QueryAfterScroll OnNewRecord = QueryNewRecord DatabaseName = 'Olympia' RequestLive = True SQL.Strings = ( 'select * from AT_Kontakt') UpdateMode = upWhereKeyOnly .... Einigermaßen verständlich, was ich beobachtet habe? Ich mach mir gleich einen Knoten ins Gehirn mit der Geschichte. Grüße von Mena |
Re: Ereignis verschwindet aus TQuery Komponente
Sind irgendwelche nicht-standard Komponenten auf dem Formular?
Falsch programmierte Komponenten könnten in der Procedure Loaded() oder Notification() eigenmächtig Properties von anderen Komponenten verändern. Das funktioniert auch zur Entwicklungszeit innerhalb der IDE!! |
Re: Ereignis verschwindet aus TQuery Komponente
Jawoll, Volltreffer!
Da ist eine selbstgestrickte Komponente drauf, die eine published property Dataset hat, und im OnSetDataset wird das Ereignis AfterScroll (und noch ein paar andere) überschrieben/erweitert. Und das wird auch zur Designtime ausgeführt? Dann wundert mich gar nichts mehr. Wie kann ich das dem Ding abgewöhnen? Wir haben versucht, die Eigenschaft Dataset zur public property zu degradieren und zur Laufzeit im Quellcode zu setzen, aber dann wird das, was im DatasetAfterOpen ausgeführt werden soll übergangen. Wir haben auch versucht, das Überschreiben der Ereignisse im OnSetDataset auf die Laufzeit zu beschränken aber
Delphi-Quellcode:
brachte auch nicht den erhofften Erfolg.
if (csDesigning in self.ComponenetState)
Habt Ihr noch einen Tip? Danke und Grüße von Mena |
Re: Ereignis verschwindet aus TQuery Komponente
Zitat:
Die Komponente darf nicht direkt an TDataSet Komponenten herangehen, sondern indirekt über TDataSource. Es gibt nun die Komponente TDataLink. Du musst also in deiner selbstgebauten Komponente ein internes Objekt vom Typ TDataLink erzeugen und mit dem published Property DataSource verbinden. So wird deine Komponente von allen Änderungen am Dataset indirekt informiert und alle Events des Datasets bleiben dem Programmierer zur freien, eigenen Verfügung. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:51 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