Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi An alle TAction Kracks - TDataSetAction reagieren nicht!!!!! (https://www.delphipraxis.net/72155-alle-taction-kracks-tdatasetaction-reagieren-nicht.html)

Konchulio 26. Jun 2006 13:50


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.

shmia 26. Jun 2006 14:43

Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
 
Du musst auf jeden Fall das Property DataSource der TDataSetAction setzen, sonst geht nix.

Union 26. Jun 2006 15:35

Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
 
Zitat:

Zitat von Delphi Hilfe
Wenn Sie DataSource nicht explizit zuweisen, wird der Wert beim Auslösen der Aktion von einem aktiven datensensitiven Steuerelement abgerufen.


Konchulio 26. Jun 2006 15:58

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!?!

Union 26. Jun 2006 16:01

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?

Konchulio 27. Jun 2006 06:55

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?!?!?

shmia 27. Jun 2006 08:55

Re: An alle TAction Kracks - TDataSetAction reagieren nicht!
 
Zitat:

Zitat von Konchulio
Bin langsam ratlos an was das liegen könnte?!?!?

Schon mal probiert einen Breakpoint in dem Sourcecode der VCL (unit DBActns) zu setzen?
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.

Konchulio 27. Jun 2006 13:36

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;

Union 28. Jun 2006 12:52

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.

Konchulio 28. Jun 2006 14:22

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.

--> Action-DLL-Problem

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.
Seite 1 von 2  1 2      

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