![]() |
An alle TAction Kracks - TDataSetAction reagieren nicht!!!!!
Hi Leute
Ich hab da mal ein kniffliges Problem!?! Ich habe eigene Actions vom Type TDataSetActions abgeleitet und diese als Standart-Actions registriert. Danach habe ich diese in einen ActionManager hinzugefügt, soweit funktioniert es auch. Mein Programm ist folgendermaßen aufgebaut: Ich habe einzelne Projekte(Formulare/exe) in einer DLL zusammengefasst und lade diese dynamisch aus meiner Hauptmaske(ist eine normale EXE). Nun zu meinem Problem: In den einzelnen Projekten funktionieren die abgeleiteten Action ohne Probleme. (falls sich jemand frägt wieso ich diese Formulare nicht in die Hauptmaske bzw EXE) reinpacke --> da ich sehr viele Formulare habe (ca. 180) ist es einfacher und schneller nur die einzelen Formulare zu Kompilieren und zu testen). Wenn ich aber das ganze Projekt kompiliere (alle Formulare + Hauptmaske) funktionieren manche Aktionen nicht. Sie sind zwar verfügbar aber wenn man sie ausführen will passiert nichts. Das ereigniss onExecut ist nicht ausprogrammiert weil ich ja meine selbt erzeugten Actions nicht überschreiben will!! Ich habe es auch schon mit den Datenbankt-StandartActions von Borland bzw. Delphi probiert es tritt das gleiche Phänomen auf!! Meine Vermutung ist desshalb das die TDataSet-Actions einige Bugs haben. Hatt Jemand schon ein ähnliches Phänomen gehabt oder weiß ne Lösung??? Also schon mal im Vorraus vielen Dankt. |
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
Du musst auf jeden Fall das Property DataSource der TDataSetAction setzen, sonst geht nix.
|
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
Zitat:
|
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
Hi
Ich hab es natürlich auch schon mit der manuelen Zuweisung der Datasource ausprobiert. funktioniert genau so wenig. Nur noch mal zum Verständnis: Normalerweise holt sich die TDataSetAction(und alle abgeleiteten Klassen) im OnUpdate ereigniss anhand des Datensensitivem-Control(sprich dbGrid, dbEdit usw.) die entsprechende Datasource bzw. DataSet. Dies ist eine sehr mächtige Methode wenn man mehrere DB-Tabellen in div. Datensensitivem-Controls(dbGrid, dbEdit usw.) anzeigt, editieren, navigiert. So muss man sich nicht mehr darum kümmern in welchem Grid der Cursor steht und anhand diesem dann die entsprechende TQuery schalten. --> Diese Methode Funktioniert in den einzelen Exe-Moulen(Formulare). Aber sobald ich das ganze Projekt kompieliere (info:"Hauptprogramm.exe" lädt Formulare aus "Unterprogramme.dll") funktionieren die Actions nur noch teilweise oder gar nicht. Kurios ist das zwei fast identische Formulare sich unterschidlich verhalten, so dass beim ersten Formular die Actions funktionieren und beim zweiten gar nicht. Ich hab sie verglichen und binn nun ratlos. Ich kann mir die ganze Sache nicht erklären!?! |
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
Hast Du mal die uses von zwei solchen unterschiedlichen DLL-Formularen verglichen? Befinden die sich in der selben DLL?
|
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
hi Union
Thx für deine Bemühung. Ja hab ich, das ist ja das Komische die Formulare befinden sich in der selben DLL und haben trotzdem ein unterschiedliches Verhalten. Beim einen funktionierts beim Anderen eben nicht.? Ich hab alles Erdenkliche schon ausprobiertr. Von den Delphi-Standart-DatasetActions bis hin, die formulare in die Exe rein zu nehmen. Alles erfolglos. Bin langsam ratlos an was das liegen könnte?!?!? |
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
Zitat:
Dazu muss die Option "mit Debug DCU's " aktiviert werden. Du könntest übrigens deine Delphi Version in deinem Profil eintragen; dann wüsste ich gleich ob du überhaupt den VCL Sourcecode zur Verfügung hast. |
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
ju habe ich schon versucht keinen Fehler gefunden.
Ich nehme an das das Formular das aus der DLL dynamisch erzeugt wird irgendwie keinen WinControl bekommt oder die Actions diesen nicht finden können. Hab es schon mit der TCustomForm Funktion "CMActionexecute" bzw. "CMActionexecute" im Hauptformular und in den Formularen die in der DLL sind, probiert --> kein Änderung der Situation!!! Mist Hier die beiden Proceduren: Info: das Gleiche macht auch die "CMActionexecute" Prozedur.
Delphi-Quellcode:
procedure Tform1.CMActionupdate(var Message: TMessage);
var bPerformed : Boolean; i : Integer; DockForm : TfrmFamilyFormExt; begin bPerformed := False; for i := 0 to pred(Application.ComponentCount) do begin if Application.Components[i] is TForm then begin DockForm := TForm(Application.Components[i]); if DockForm.Active then begin Message.Result := DockForm.Perform(Message.Msg,0,Message.LParam); bPerformed := Message.RESULT = S_OK; if bPerformed then exit; end; end; end; if not bPerformed then inherited; end; |
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
Hast Du die Möglichkeit, ein Mini-Projekt in einer BPG aufzusetzen das nur einen Main mit zwei Buttons hat, durch das die DLL-Forms ausgerufen werden? Ich habe zwar nur BDS2006 EE, aber vielleicht ist das reproduzierbar.
|
Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
@Union
Bei der Komponentenentwicklung mach ich das immer so, dass ich ein kleines Testprojekt mache und da ist es genau das Gleiche. Ich hab auf der Borldseite folgendes gefunden. Es beschreibt zwar das Problem mit einer MDIForm aber das spielt ja nicht so ne rolle. --> ![]() Nur das Problem ist das die keine Lösung anbieten. :-( Vieleicht kann mir jemand von euch helfen. Ich find langsam das Delphi 2005 zu viele Bugs!!!! Die sollten wieder mal ein Update rausbringen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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