Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   twwdbrichedit - Element '' hat kein übergeordnetes Fenster (https://www.delphipraxis.net/171621-twwdbrichedit-element-hat-kein-uebergeordnetes-fenster.html)

nobile 15. Nov 2012 15:08

twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Hallo zusammen

ich habe folgendes Problem mit der Komponente TwwDBRichEdit von InfoPower Studio 2011.

Wenn ich die Komponente auf ein Formular setze und die DataSource und DataField zuordne, anschliessend als EXE starte, kann ich das Dialogfeld über die F2 Taste problemlos öffnen - Daten bearbeiten - formatieren usw.

Wenn ich jedoch die Kompenente auf ein Formular setze (alles analog wie oben), das Formular jedoch als DLL generiere und diese DLL anschliessend über die EXE starte, dann werden die Daten ebenfalls richtig angzeigt aber wenn ich die F2 Taste drücke um das Dialogfeld zu öffnen, bekomme ich die Fehlermeldung :

"Im Projekt Probe.exe ist eine Exception der Klasse EInvalidOperation mit der Meldung 'Element '' hat kein übergeordnetes Fenster' aufgetreten."

Kann mir jemand sagen wo das Problem dabei liegt ?

Bin schon langsam am verzweifeln :(

DeddyH 15. Nov 2012 15:19

AW: twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Die Meldung kenne ich nur, wenn man vergessen hat, einem VCL-Control einen Parent zuzuweisen (wie eben z.B. einem RichEdit).

himitsu 15. Nov 2012 15:22

AW: twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Du hast aber nicht versucht die VCLs der DLL und EXE zu verknubbln? (es sollte besser da keinerlei Verbindung bestehen)

Nja, ein paar Infos was wie wo geladen/erstellt wird und was wie miteinander verbunden ist, hätte man (du) schon noch erwähnen können.


VCL in DLL ergibt halt gerne mal ein paar Probleme/Hindernisse.
http://www.delphipraxis.net/169393-m...g-oeffnen.html

nobile 15. Nov 2012 16:34

AW: twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Sorry - versuche es mal mit dem Code beizufügen :

Code der EXE-Datei auf welchem blos das TwwDBRichEdit und der Button für den Aufruf der DLL ist.
Code:
unit probe;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls, wwriched, DB, DBAccess, Uni, UniProvider,
  MySQLUniProvider, MemDS, AdvGlowButton;

type
  TAufrufDLL = procedure (WasAuchImmerZuUebergebenist:string);stdcall;

  TForm1 = class(TForm)
    wwDBRichEdit1: TwwDBRichEdit;
    UniQuery1: TUniQuery;
    MySQLUniProvider1: TMySQLUniProvider;
    UniDataSource1: TUniDataSource;
    UniConnection1: TUniConnection;
    Button_AufrufDLL: TAdvGlowButton;
    procedure FormShow(Sender: TObject);
    procedure Button_AufrufDLLClick(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormShow(Sender: TObject);
begin
  UniQuery1.Open; // Query zum öffnen der Datenbank und anzeigen der Daten im TwwDBRichEdit - Öffnen des RichEditDialogs über F2 funktioniert tadellos
end;


procedure TForm1.Button_AufrufDLLClick(Sender: TObject);
var
  Handle     : THandle;
  pfad       : string;
  ProcAufruf : TAufrufDLL;

begin
  pfad := 'C:\PROBELAUF\Probedll.dll';
  Handle:=LoadLibrary(PChar(pfad));
  if Handle <> 0 then
    begin
      @ProcAufruf := GetProcAddress(Handle, 'ShowProbeDLL');
      if @ProcAufruf <> nil then
        begin
          ProcAufruf('blabla');
      end;
      FreeLibrary(Handle);
  end;
end;

end.

Code von der DLL welche über den Button "Button_AufrufDLL" aufgerufen wird. Auf diesem Formular ist ebenfalls ein TwwDBRichEdit, in welchem die Daten von der Datenbank angezeigt wird, aber beim Drücken der Taste F2 zum Öffnen des Dialogfeldes kommt die Fehlermeldung.
Code:
unit Unit_ProbeDLL;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, AdvPageControl, ComCtrls, StdCtrls, AdvGlowButton,
  ToolWin, DB, MemDS, DBAccess, Uni, AdvDBLookupComboBox, UniProvider,
  MySQLUniProvider, wwriched, ExtCtrls, DBCtrls;

type
  TF_ProbeDLL = class(TForm)
    my: TUniQuery;
    ud: TUniDataSource;
    MySQLUniProvider1: TMySQLUniProvider;
    re: TwwDBRichEdit;
    UniConnection1: TUniConnection;
    procedure FormShow(Sender: TObject);

  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  F_ProbeDLL: TF_ProbeDLL;

implementation

{$R *.dfm}

procedure ShowProbeDLL(WasAuchImmerZuUebergebenIst:string); stdcall;
begin
  with TF_ProbeDLL.Create(application) do
    try
      ShowModal;
    finally
      Free;
    end;
end;

exports

  ShowProbeDLL;

procedure TF_ProbeDLL.FormShow(Sender: TObject);
begin
  my.Open; // Query zum öffnen der Datenbank und anzeigen der Daten im TwwDBRichEdit - Öffnen des RichEditDialogs über F2 funktioniert nicht - FEHLER
end;

end.
Ich hoffe es ist nun etwas verständlicher :-D

Bummi 15. Nov 2012 17:28

AW: twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Abgesehen davon dass Du VCL -Komponenten ohne Runtimepackages nicht zu laufen bekommen wirst scheint my zwar deklariert aber nicht initialisiert/zugewiesen zu sein.

himitsu 15. Nov 2012 19:00

AW: twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Drum hatte ich ja die beiden Threads verlinkt (der Zweite ist in dem Ersten drin) ... VCL und DLLs mögen sich halt nicht.

Außerdem sollte man bei Übergabe von Strings auch noch etwas afpassen, auch wenn es hier "zufällig" grade noch so zu gehn.
Welche Delphiversion verwendet wirt, wurde zwar auch nicht genannt, aber den Hinweis bezüglich ShareMem hab Emba schon eine ganze Weile in denn DLLs drin.
(mir fällt nur grade ein, daß Emba langsam auch mal das SimpleShareMem mit erwähnen sollte)

Zitat:

Zitat von Bummi (Beitrag 1191363)
scheint my zwar deklariert aber nicht initialisiert/zugewiesen zu sein.

Außer es liegt auf der Form drauf (in der DFM).

nobile 16. Nov 2012 07:23

AW: twwdbrichedit - Element '' hat kein übergeordnetes Fenster
 
Hallo Bummi

Die TUniQuery my liegt auf der Form und die Zuweisung der DataSource und DataField im TwwDBRichEdit erfolgte im Objektinspektor. Die TUniQuery my öffnet sich auch problemlos und der Datensatz wird auch korrekt im TwwDBRichEdit angezeigt - das Problem kommt erst, wenn ich die F2 Taste drücke und das RichEdit aufmachen soll, damit der Text formatiert werden kann.


Hallo himitsu

Ich verwende das Embarcadero RAD Studio 2010, Delphi 2010 und das TwwDBRichEdit von InfoPower Studio 2011 . Danke für den Hinweis bezüglich Strings-Uebergabe.
Bei der Vorgänger-Version Delphi 7 und dem TwwDBRichEditor von InfoPower 4000 ging es problemlos.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 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