AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Inhalt von TRichEdit ohne Verlust von DefAttributes kopieren
Thema durchsuchen
Ansicht
Themen-Optionen

Inhalt von TRichEdit ohne Verlust von DefAttributes kopieren

Ein Thema von smart · begonnen am 16. Sep 2005 · letzter Beitrag vom 16. Sep 2005
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#11

Re: Inhalt von TRichEdit ohne Verlust von DefAttributes kopi

  Alt 16. Sep 2005, 12:01
Wenn ich es per Hand, mit kopieren und einfügen mache klappt es, aber sobald ich es mit:
Delphi-Quellcode:
RichEdit1.SelectAll;
RichEdit.CopyToClipboard;
DBRichEdit1.PasteFromClipboard;
klappt es nicht mehr.
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#12

Re: Inhalt von TRichEdit ohne Verlust von DefAttributes kopi

  Alt 16. Sep 2005, 12:39
Hallo Heike,

es gibt keinen so richtig einfachen Weg zum Kopieren von formatierten Texten zwischen zwei RichEdit controls. Ich verwende folgende Prozedur:

Delphi-Quellcode:
uses
  TOM,
  RichEdit,
  RichOle;

procedure RichCopy(reSource, reTarget: TRichEdit);
var
  u: IUnknown;
  reoSource, reoTarget: IRichEditOle;
  tdSource, tdTarget: ITextDocument;
  trSource, trTarget: ITextRange;
begin
  SendMessage(reSource.Handle, EM_GETOLEINTERFACE, 0, Integer(@u));
  u.QueryInterface(IID_IRICHEDITOLE, reoSource);
  tdSource := reoSource as ITextDocument;

  SendMessage(reTarget.Handle, EM_GETOLEINTERFACE, 0, Integer(@u));
  u.QueryInterface(IID_IRICHEDITOLE, reoTarget);
  tdTarget := reoTarget as ITextDocument;

  tdTarget.Selection.FormattedText := tdSource.Selection.FormattedText;
end;
Das angehängte Archiv enthält eine bei SourceForge gehostete Delphi Portierung von RichOle.h und TOM habe ich mit TLIBIMP aus RICHED20.DLL erstellt. TOM habe ich als (unsichtbare) Komponente in Delphi installiert.

Nutzen kannst du es dann so:

Delphi-Quellcode:
begin
  RichEdit1.SelectAll;
  RichEdit2.SelectAll;
  RichCopy(RichEdit1, RichEdit2);
end;
Alternativ kann man den etwas traditionelleren Weg über das stream interface der rich edit controls gehen. nicoDE hat dazu etwas bei den Schweizern abgeladen.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip rich_600.zip (8,2 KB, 41x aufgerufen)
  Mit Zitat antworten Zitat
16. Sep 2005, 12:46
Dieses Thema wurde von "Sharky" von "Sonstige Fragen zu Delphi" nach "VCL / WinForms / Controls" verschoben.
Ich habe es (auf anregung *g*) mal nach VCL verschoben. Hätte ich aber auch früher machen sollen.
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: Inhalt von TRichEdit ohne Verlust von DefAttributes kopi

  Alt 16. Sep 2005, 13:35
Es sollte auch mit den Meldungen EM_STREAMOUT und EM_STREAMIN gehen. Zwei Beiträge dazu findest du hier und hier.

//EDIT: @marabu: Sorry, deinen Verweis auf das Stream-Interface hatte ich überlesen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#15

Re: Inhalt von TRichEdit ohne Verlust von DefAttributes kopi

  Alt 16. Sep 2005, 14:46
Hallo Heike,

Zitat von smart:
Wenn ich es per Hand, mit kopieren und einfügen mache klappt es, aber sobald ich es mit:
Delphi-Quellcode:
RichEdit1.SelectAll;
RichEdit.CopyToClipboard;
DBRichEdit1.PasteFromClipboard;
klappt es nicht mehr.
ich unterstelle mal, dass der abweichende Komponentenname in der zweiten Code-Zeile ein Schreibfehler von dir ist. Das Kopieren über das ClipBoard funktioniert so - und zwar korrekt. Voraussetzung ist, dass sich der deinem DBRichEdit1 unterliegende DataSet im Edit-Modus befindet.

Allerdings gehört die Zwischenablage dem Benutzer und darf eigentlich nur auf seinen speziellen Wunsch hin von deinem Programm befüllt werden.

marabu


@Flocke: Warum sorry? Deine Fundstellen sind doch auch einen Beitrag wert. Da aber alle streamen wollte ich mit dem Text Object Model eine Alternative zeigen.
  Mit Zitat antworten Zitat
Benutzerbild von smart
smart

Registriert seit: 19. Dez 2004
Ort: Bochum
1.266 Beiträge
 
Delphi 2007 Professional
 
#16

Re: Inhalt von TRichEdit ohne Verlust von DefAttributes kopi

  Alt 16. Sep 2005, 15:36
Zitat von marabu:
ich unterstelle mal, dass der abweichende Komponentenname in der zweiten Code-Zeile ein Schreibfehler von dir ist.
War nur ein Schreibfehler!

Zitat von marabu:
Das Kopieren über das ClipBoard funktioniert so - und zwar korrekt. Voraussetzung ist, dass sich der deinem DBRichEdit1 unterliegende DataSet im Edit-Modus befindet.
Genau das war das Spiel, jetzt klappt es nämlich.
Zitat von marabu:
Allerdings gehört die Zwischenablage dem Benutzer und darf eigentlich nur auf seinen speziellen Wunsch hin von deinem Programm befüllt werden.
Hast Recht, war auch nur ein Test.

Vielen Dank für Deine (Eure) Hilfe.
Heike Kretschmann
Viele Grüße aus Bochum

kaum denkt man alles ist fertig, da fängt man wieder von Vorn an.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 16:09 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