AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Element hat kein übergeordnetes Fenster #34

Ein Thema von Ultimator · begonnen am 6. Okt 2005 · letzter Beitrag vom 7. Okt 2005
Antwort Antwort
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#1

Element hat kein übergeordnetes Fenster #34

  Alt 6. Okt 2005, 12:39
So, ich muss nochmal nerven :>

Ich hab mir jetzt ne Komponente gebastelt, die von TShellListView abgeleitet ist; die "TUltiShellListView"

Ich hab versucht, sie mit der Drag&Drop-Funktionalität auszustatten, klappt auch bisher recht gut
Ich papp also die Kompo auf die Form, lass das (Test-)Projekt laufen und alles funktioniert wunderbar.
Wenn ich dann allerdings das Programm schließ, krieg ich folgendes:

Zitat:
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EInvalidOperation aufgetreten. Meldung: 'Element 'UltiShellListView1' hat kein übergeordnetes Fenster'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
Wenn ich dann in Delphi auf Datei->Alles schließen geh, kommt erst die Frage, ob ich speichern will (Nein), und dann das:
Zitat:
---------------------------
Fehler
---------------------------
Element 'UltiShellListView1' hat kein übergeordnetes Fenster.
---------------------------
OK
---------------------------

Zitat:
---------------------------
Fehler
---------------------------
Zugriffsverletzung bei Adresse 0083B551 in Modul 'vcl70.bpl'. Lesen von Adresse 00000370.
---------------------------
OK
---------------------------
Und dann schließlich beim Beenden von Delphi noch:
Zitat:
---------------------------
Delphi 7: delphi32.exe - Fehler in Anwendung
---------------------------
Die Anweisung in "0x40008e48" verweist auf Speicher in "0x01aa08c0". Der Vorgang

"read" konnte nicht auf dem Speicher durchgeführt werden.


Klicken Sie auf "OK", um das Programm zu beenden.
---------------------------
OK
---------------------------
Wahlweise kommt bei Datei-Alles schließen (Nein) auch ne AV bei 00000000 im Modul delphi32.exe

Ich hab die Kompo mal angehängt, Benutzung auf eigene Gefahr

Ach ja, wenn ich ich die EXE ohne Delphi starte, kommt beim Beenden das hier:

Zitat:
---------------------------
Project1: Project1.exe - Fehler in Anwendung
---------------------------
Die Ausnahme "Unbekannter Softwarefehler" (0x0eedfade) ist in der Anwendung an der Stelle 0x7c81eb33 aufgetreten.


---------------------------
OK Abbrechen
---------------------------
Bei OK kommt die Sache mit dem übergeordneten Fenster und DANN wird das Programm beendet und bei Abbrechen wird das Programm gleich beendet.

Ich hoff, ihr könnt mir helfen
Angehängte Dateien
Dateityp: pas ultishelllistview_232.pas (1,6 KB, 10x aufgerufen)
Julian J. Pracht
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Element hat kein übergeordnetes Fenster #34

  Alt 6. Okt 2005, 18:30
Moin Julian,

Hier im Forum suchenElement hat kein übergeordnetes Fenster

da gibt es schon einige Fundstellen zum Thema.

Ggf. findest Du direkt weiterführendes unter

Hier im Forum suchenCreateWnd
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Element hat kein übergeordnetes Fenster #34

  Alt 6. Okt 2005, 19:47
Hallo,
Delphi-Quellcode:
constructor TUltiShellListView.Create(aOwner: TComponent);
begin
 inherited Create(aOwner);
// Parent := aOwner as TWinControl; // <- kommentiere diese Zeile bitte aus
 DragAcceptFiles(self.handle, True);
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Element hat kein übergeordnetes Fenster #34

  Alt 6. Okt 2005, 20:20
Hi Christian, hi Jens^^

@Christian: Hm, bisher hat das was ich so gefunden hab auch nicht funktioniert *gg*
Aber ich schau noch weiter

@Jens: Das bringt leider nur insofern was, dass ich nun schon die Meldung
Zitat:
---------------------------
Fehler
---------------------------
Element '' hat kein übergeordnetes Fenster.
---------------------------
OK
---------------------------
bekomme, wenn ich die Kompo nur im Designer platzieren will


Das, was mich am meisten stutzig macht, ist, dass die gesamte IDE verrückt zu spielen scheint

//edit:

Hab das ganze nun mal so umgeschrieben:
Delphi-Quellcode:
constructor TUltiShellListView.Create(aOwner: TComponent);
begin
 inherited Create(aOwner);
 //Parent := aOwner as TWinControl;
end;

procedure TUltiShellListView.CreateWnd;
begin
 inherited;
 if parent <> nil then
  begin
   DragAcceptFiles(self.handle, True);
   MessageBox(0, PChar(parent.Name), 'Parent', MB_OK);
  end
 else
  MessageBox(0, 'Kein Parent!', 'Caption', MB_OK);
end;
Nun bekomm ich zweimal die Meldung mit dem Namen des Parents; einmal, wenn ich die Kompo auf die Form platziere, und einmal, wenn ich das Projekt kompiliere und starte.

Aber wieso kommt dann wenn ich das Prog beende die EInvalidOperation-Exception, dass das Element kein übergeordnetes Fenster hätte?

Funzt übrigens weder in D7 PE noch in D2005 PE...
Julian J. Pracht
  Mit Zitat antworten Zitat
teebee

Registriert seit: 17. Jan 2003
Ort: Köln
460 Beiträge
 
Delphi 6 Professional
 
#5

Re: Element hat kein übergeordnetes Fenster #34

  Alt 6. Okt 2005, 21:09
Lass mal in CreateWnd die Überprüfung auf Parent weg. Wenn Du die Komponente aus der IDE auf das Form ziehst, wird automatisch der Parent gesetzt, ist also da. Wenn Du bei einer dynamischen Erzeugung vergisst, den Parent zu setzen, wird CreateWnd nicht aufgerufen.
Und dann: entferne aus Destroy den erneuten Aufruf von DragAcceptFiles. Wenn überhaupt gehört der nach DestroyWnd.
Bei mir kommen so zumindest keine Fehler mehr wg. des übergeordneten Fensters.

Gruß, teebee
  Mit Zitat antworten Zitat
Benutzerbild von Ultimator
Ultimator

Registriert seit: 17. Feb 2004
Ort: Coburg
1.860 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Element hat kein übergeordnetes Fenster #34

  Alt 6. Okt 2005, 21:15
teebee, du bist hiermit ab sofort offiziell der Held meines Abends :mrgeen:

Es funktioniert alles perfekt, so wies soll

Aber ich muss sagen, dass ich das zweite DragAcceptFiles (Parameter "false) einbringen muss, denn sonst wird das ja nicht mehr zurückgesetzt, wenn ichs im CreateWnd mit Parameter "true" aufrufe. Man will ja schließlich sauber programmieren

Danke nochmal an alle, die helfen wollten

Was sich mir aber dennnoch für ne Frage stellt: Wieso lässt sowas die IDE "kaputt gehen"?
Julian J. Pracht
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Element hat kein übergeordnetes Fenster #34

  Alt 7. Okt 2005, 07:46
Hallo Ultimator,
mir ist noch eine Kleinigkeit aufgefallen:
Es fehlt der Aufruf von DragFinish am Ende der Methode.
Da im EventHandler etwas schief gehen könnte sollte es
innerhalb eines Resourceschutzblockes stehen.
Delphi-Quellcode:
procedure TUltiShellListView.WMDropFiles(var Message: TWMDropFiles);
var
  Count: Integer;
  I: Integer;
  Buffer: array[0..MAX_PATH] of Char;
  Temp : TStringList;
begin
  Temp := TStringList.Create;
  Try
    Count := DragQueryFile(Message.Drop, UINT(-1), nil, 0);
    for I := 0 to Count - 1 do
    begin
     DragQueryFile(Message.Drop, I, @Buffer, SizeOf(Buffer));
     Temp.Add(Buffer);
    end;
    OnGetFiles(Temp);
  Finally
    DragFinish(Message.WParam);
    Temp.Free;
    end;
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:03 Uhr.
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