AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen
Thema durchsuchen
Ansicht
Themen-Optionen

[Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

Ein Thema von Shrandon · begonnen am 25. Aug 2007 · letzter Beitrag vom 7. Jul 2014
Antwort Antwort
Seite 1 von 2  1 2      
Shrandon

Registriert seit: 18. Sep 2005
5 Beiträge
 
#1

[Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 25. Aug 2007, 15:43
Hallo DP-ler,

ich habe folgendes Problem, das ich trotz langer Suche in mehreren Foren und Onkel Google nicht lösen kann:

Ich nutze die Jedi-Komponente TJvRichEdit und speichere Bilder im RichEdit ab.
Die Bilder können im RichEdit manuell vom User skaliert werden.
Jedoch muss ich beim speichern des RichEdits unbedingt den Text von dem Bild trennen (ggf. HTML-Tag, Dateiname oder ähnliches "Erkennungsmerkmal" an die Stelle des Bildes im text setzen).
Der Text an sich ist RTF-Formatiert, ich kann also nicht einfach bei Eingabe eine simple "Kopie" des Textes in eine string-Variable machen (wäre ja naheliegend).

Habe ich irgendeine Möglichkeit die Grafik im RichEdit zu erkennen/finden/suchen?



Falls es euch etwas hilft... so wird das Bild ins RichEdit geladen:

Delphi-Quellcode:
//führt OpenDialog aus
procedure TForm1.openpicture(Sender: TObject);
begin
  OpenDialog1.Execute;
end;


//lädt Bild in RichEdit
procedure TForm1.addgraphic(Sender: TObject; var CanClose: Boolean);
var Picture:TPicture;
begin
    Picture := TPicture.Create;
    Picture.LoadFromFile(OpenDialog1.FileName);
    RichEdit1.InsertGraphic(Picture.Graphic,true);
end;

Gruß Sven
  Mit Zitat antworten Zitat
Shrandon

Registriert seit: 18. Sep 2005
5 Beiträge
 
#2

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 3. Sep 2007, 16:48
hat wirklich niemand eine idee?

ich komm selbst auf keine lösung, aber vllt könnte mir ja ein denkanstoß gut tun.
schreibt bitte alles was euch einfällt.

gruß und dank
sven
  Mit Zitat antworten Zitat
marabu

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

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 3. Sep 2007, 18:58
Herzlich willkommen in der Delphi-PRAXiS, Sven.

du kannst die Bilder, die du mit InsertObject() eingefügt hast, über die Schnittstelle IRichEditOle zählen und lokalisieren. Löschen kannst du sie über die Schnittstelle IRichEditOleCallBack.

Wenn es nur um das entfernen der Bilder und sonstiger Objekte geht, dann kannst du das Dokument auch einfach über einen Stream in das VCL RichEdit umspeichern.

Freundliche Grüße
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#4

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 4. Sep 2007, 10:12
Geh mal zu bsalsa.com und installiere Dir die EmbeddedWb-Komponente.
Könnte Dir ein wenig Arbeit ersparen!
  Mit Zitat antworten Zitat
Shrandon

Registriert seit: 18. Sep 2005
5 Beiträge
 
#5

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 5. Sep 2007, 15:55
vielen dank für eure hilfe!

@moperswings: mit einem webbrowser hab ich auch schon herumgbastelt, aber ich denke eine browser-kompo ist für meine zwecke nicht geeignet.


@marabu: dein vorschlag hört sich gut an.. ich hab versucht mehr über die schnittstelle, sowie über die function zu erfahren. die dokumentation für jvrichedit ist leider ziemlich rar.

kannst du mir vllt ein paar weitere infos über die funktionsweise liefern?

ich verstehe zum bsp. nicht welche parameter ich der insertobject() überliefern muss:

insertobject(const OleClassName:String ; Iconic:Boolean); muss ich da mein TPicture in eine OleClass umwandeln?? wie mache ich sowas?
ich habs über den OleContainer versucht, bin aber nicht gerade schlau daraus geworden :/
Ebenso wollte mein Delphi TOleGraphic nicht kennen (darauf bin ich in der Hilfe gestoßen).


ich bemüh mich seit einigen stunden auf den richtigen weg zu kommen, steh aber anscheinend auf dem schlauch
ich wäre euch richtig dankbar, wenn ich mit eurer hilfe endlich dieses problem lösen könnte

gruß sven
  Mit Zitat antworten Zitat
Shrandon

Registriert seit: 18. Sep 2005
5 Beiträge
 
#6

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 5. Sep 2007, 19:30
Ich komme nicht voran

Ich habs jetzt mal mit InsertObjectFromFile() versucht.
Funkitioniert zwar, aber ich hab nicht mehr als eine Verknüpfung im RichEdit!

Größere Bilder (alles was etwas über .ico geht^^) werden gar nicht mehr angezeigt.

Kann ich mit dieser IRichEditOle-Schnittstelle nicht auf Grafiken zugreifen, die ich über TJvRichEdit.AddGraphic() hinzugefügt habe?

Und wie setze ich diese Schnittstelle überhaupt an? Ich hab bisher nur eine Möglichkeit über die TEditOle-Komponente gefunden, aber das nützt mir leider gar nichts
  Mit Zitat antworten Zitat
marabu

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

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 6. Sep 2007, 21:15
Hallo Sven,

InsertObject() ist eine Methode der Schnittstelle IRichEditOle. Du musst sie nicht selbst aufrufen, wenn du JvRichEdit.InsertGraphic() verwendest, wie du es ja bereits getan hast:

Delphi-Quellcode:
procedure TDemoForm.InsertButtonClick(Sender: TObject);
begin
  with JvRichEdit do
  begin
    Lines.Add('first line');
    Lines.Add('second line');
    Lines.Add('');
    SelStart := MaxInt;
    InsertGraphic(Image.Picture.Graphic, False);
    Lines.Add('');
    Lines.Add('last line');
  end;
end;
Über SelStart kannst du die Graphic an jeder beliebigen Stelle einfügen. Anschließend kannst du die Grafiken (und jedes andere OLE-Object) so finden und ersetzen:

Delphi-Quellcode:
procedure TDemoForm.ReplaceButtonClick(Sender: TObject);
var
  u: IUnknown;
  reole: IRichEditOle;
  i, n: Integer;
  obj: TREObject;
begin
  FillChar(obj, SizeOf(obj), 0);
  obj.cbStruct := SizeOf(obj);
  with JvRichEdit do
  begin
    Perform(EM_GETOLEINTERFACE, 0, Integer(@u));
    if Succeeded(u.QueryInterface(IID_IRICHEDITOLE, reole)) then
    begin
      n := reole.GetObjectCount;
      ShowMessage(Format('%d objects found', [n]));
      for i := 0 to Pred(n) do
      begin
        if Succeeded(reole.GetObject(i, obj, REO_GETOBJ_NO_INTERFACES)) then
        begin
          SelStart := obj.cp;
          SelLength := 1;
          SelText := Format('<object %d>', [Succ(i)]);
        end else ShowMessage('yikes');
      end;
    end;
  end;
end;
Vergiss meinen Hinweis auf die Schnittstelle IRichEditOleCallBack, deren Methode DeleteObject() dient nicht zum Löschen, sondern ist ein Event Handler, den du implementieren kannst.

Getippt und nicht getestet.

Gute Nacht
  Mit Zitat antworten Zitat
Shrandon

Registriert seit: 18. Sep 2005
5 Beiträge
 
#8

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 7. Sep 2007, 17:34
Boah!! Perfekt! Es funktioniert!

Irgendwo im Quelltext ist noch ein Fehler, weil er immer nur ein Objekt erkennt und umwandelt.
Beim 2. Objekt kommt immer die Fehlermeldung ('yikes').


Aber davon abgesehen hab ich noch ein einziges Problem.
Wie komm ich wieder zu dem Bild??
Also im o.g. Quelltext wird ja das Object durch '<object X>' ersetzt, aber ich will vorher die Grafik aus "SelText" wieder einer Variablen zuordnen,sodass ich das Bild weiter verwenden kann (speichern, uploaden, bearbeiten etc.).

Kann ich den String von 'SelText' wieder irgendwie einem TPicture o.Ä. zuordnen?

Vielen Dank für eure Hilfe
Gruß Sven
  Mit Zitat antworten Zitat
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 24. Jun 2008, 12:21
Hallo DP-Community!

Was muss ich denn in die uses aufnehmen damit "IRichEditOle;" erkannt wird?
RichOle soll es zwar als unit geben die kennt er aber bei mir nicht.

Delphi 2007 -> Version 11.0.2627.5503

Vielen Dank schonmal und greez
gabneo


  Mit Zitat antworten Zitat
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: [Jedi VCL] Grafik/Bild in einem JvRichEdit erkennen

  Alt 25. Jun 2008, 15:48
hoffnungsvoller *push*

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:02 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