Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi EInvalid Operation "Element hat kein übergeodnetes Fenster" (https://www.delphipraxis.net/172583-einvalid-operation-element-hat-kein-uebergeodnetes-fenster.html)

ATS3788 12. Jan 2013 08:40

EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Hallo

Habe dies schon gelesen
http://www.delphipraxis.net/159070-e...s-fenster.html

Mein Problem geht in eine andere Richtung.

Ich habe ein TRichEdit Stream und da hat man nun mal die Formatierungen.

Also dachte ich mir ich erstelle mit Create eine TRichEdit Komponente.
und extrahiere mir den Plain Text. Was auch gut funktioniert wenn man
dies auf einem TForm macht.
Nur dummerweise habe ich KEIN übergeordnetes Fenster.

Meine Frage

Wie komme ich sonst an den Plain Text ohne Formatierung ?

DeddyH 12. Jan 2013 09:08

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Wenn es keine Konsolenanwendung ist, dürfte es das Einfachste sein, das RichEdit unsichtbar zu stellen und irgendein Fenster als Parent zuzuweisen. Zur Not erstellt man sich halt ein Dummy-Fenster und nimmt das dann.

Bummi 12. Jan 2013 09:09

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Nimm doch ein Dummyform mit RichEdit, anzeigen musst Du es ja nicht ...

Furtbichler 12. Jan 2013 09:17

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Wenn Du ein wenig Zeit investierst, dann konvertierst Du diesen Code von C nach Delphi, oder diesen hier von LUA nach Delphi.

Bezüglich der Codierung müsstest Du mal schauen, was das ist. Aber das sollte kein Problem sein. Entweder stehts im RTF-Quelltext (parsen) oder es ist irgend ein Standard.

PS: Der Threadtitel ist irreführend, denn Du willst 'RTF nach plain text konvertieren' und hast kein Problem mit irgendeiner Exception.

ATS3788 12. Jan 2013 10:41

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Danke für die Infos
werde sie mir später anschauen

bin auf dies gestoßen

http://de.softuses.com/302701

DeddyH 12. Jan 2013 10:49

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Wie war das mit Dummy-Fenster? OK, ein Handle genügt ja bereits, aber ohne dieses geht es eben nicht mit einem RichEdit.

ATS3788 12. Jan 2013 11:53

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Delphi-Quellcode:
function RTF_To_Plain_Text(S : AnsiString) : string;
var
Stream      : TMemoryStream;
RichEdit    : TRichEdit;
begin
try
Stream := TMemoryStream.Create;
Stream.WriteBuffer(pointer(S)^ , length(S));
try
RichEdit := TRichEdit.CreateParented(HWND_MESSAGE);
RichEdit.Parent := nil;
RichEdit.PlainText := false;
RichEdit.WordWrap := false;
RichEdit.Visible := false;

Stream.Position := 0;
RichEdit.Lines.LoadFromStream(Stream);

Result := RichEdit.Lines.Text;
finally
RichEdit.Free;
end;
finally
Stream.Free;
end; end;
Also gelöst habe ich es so
Schönes Wochenende

DeddyH 12. Jan 2013 11:55

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Du hast das try jeweils falsch gesetzt.
Delphi-Quellcode:
bla := Tbla.Create;
try
  bla.Machwas;
finally
  bla.Free;
end;
So wäre es richtig.

Bernhard Geyer 12. Jan 2013 12:21

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Zitat:

Zitat von ATS3788 (Beitrag 1198761)
Delphi-Quellcode:
RichEdit := TRichEdit.CreateParented(HWND_MESSAGE);

Jetzt entwickel ich mehr als 15 Jahre mit Delphi und das ist etwas was ich schon 2-3 mal gebraucht hätte.
Man lernt doch nicht aus ...

DeddyH 12. Jan 2013 12:25

AW: EInvalid Operation "Element hat kein übergeodnetes Fenster"
 
Message-Only Windows, das wurde in der DP gelegentlich schon angesprochen. Ich vergesse das selbst aber auch gern immer wieder :roll:


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