AGB  ·  Datenschutz  ·  Impressum  







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

Bild in RichEdit einfügen

Ein Thema von Bobator · begonnen am 5. Feb 2004 · letzter Beitrag vom 9. Mär 2004
Antwort Antwort
Bobator
(Gast)

n/a Beiträge
 
#1

Bild in RichEdit einfügen

  Alt 5. Feb 2004, 17:25
hi,

ich hab ein echt großes Problem an dem ich schon ein paar Monate sitze(sicher so wie jeder der ein neuen Thread öffnet). Ich will ein Bild in ein RichEdit einfügen. Als Komponente verwende ich TJvxRichEdit der JVCL. Zum Einfügen verwende ich diesen Code von swissdelphicenter:
Delphi-Quellcode:
uses
  RichEdit;

// Stream Callback function
type
  TEditStreamCallBack = function(dwCookie: Longint; pbBuff: PByte;
    cb: Longint; var pcb: Longint): DWORD;
  stdcall;

  TEditStream = record
    dwCookie: Longint;
    dwError: Longint;
    pfnCallback: TEditStreamCallBack;
  end;

// RichEdit Type
type
  TMyRichEdit = TRxRichEdit;

// EditStreamInCallback callback function
function EditStreamInCallback(dwCookie: Longint; pbBuff: PByte;
  cb: Longint; var pcb: Longint): DWORD; stdcall;
  // by P. Below
var
  theStream: TStream;
  dataAvail: LongInt;
begin
  theStream := TStream(dwCookie);
  with theStream do
  begin
    dataAvail := Size - Position;
    Result := 0;
    if dataAvail <= cb then
    begin
      pcb := read(pbBuff^, dataAvail);
      if pcb <> dataAvail then
        Result := UINT(E_FAIL);
    end
    else
    begin
      pcb := read(pbBuff^, cb);
      if pcb <> cb then
        Result := UINT(E_FAIL);
    end;
  end;
end;

// Insert Stream into RichEdit
procedure PutRTFSelection(RichEdit: TMyRichEdit; SourceStream: TStream);
  // by P. Below
var
  EditStream: TEditStream;
begin
  with EditStream do
  begin
    dwCookie := Longint(SourceStream);
    dwError := 0;
    pfnCallback := EditStreamInCallBack;
  end;
  RichEdit.Perform(EM_STREAMIN, SF_RTF or SFF_SELECTION, Longint(@EditStream));
end;

// Convert Bitmap to RTF Code
function BitmapToRTF(pict: TBitmap): string;
// by D3k
var
  bi, bb, rtf: string;
  bis, bbs: Cardinal;
  achar: ShortString;
  hexpict: string;
  I: Integer;
begin
  GetDIBSizes(pict.Handle, bis, bbs);
  SetLength(bi, bis);
  SetLength(bb, bbs);
  GetDIB(pict.Handle, pict.Palette, PChar(bi)^, PChar(bb)^);
  rtf := '{\rtf1 {\pict\dibitmap ';
  SetLength(hexpict, (Length(bb) + Length(bi)) * 2);
  I := 2;
  for bis := 1 to Length(bi) do
  begin
    achar := Format('%x', [Integer(bi[bis])]);
    if Length(achar) = 1 then
      achar := '0' + achar;
    hexpict[I - 1] := achar[1];
    hexpict[I] := achar[2];
    Inc(I, 2);
  end;
  for bbs := 1 to Length(bb) do
  begin
    achar := Format('%x', [Integer(bb[bbs])]);
    if Length(achar) = 1 then
      achar := '0' + achar;
    hexpict[I - 1] := achar[1];
    hexpict[I] := achar[2];
    Inc(I, 2);
  end;
  rtf := rtf + hexpict + ' }}';
  Result := rtf;
end;


// Example to insert image from Image1 into RxRichEdit1
procedure TForm1.Button1Click(Sender: TObject);
var
  SS: TStringStream;
  BMP: TBitmap;
begin
  BMP := TBitmap.Create;
  BMP := Image1.Picture.Bitmap;
  SS := TStringStream.Create(BitmapToRTF(BMP));
  try
    PutRTFSelection(RxRichEdit1, SS);
  finally
    SS.Free;
  end;
end;
Das Problem ist, dass man später die Größe des Bildes ändern kann. Wie kann ich das Verhindern?
  Mit Zitat antworten Zitat
max

Registriert seit: 5. Mär 2004
4 Beiträge
 
#2

Re: Bild in RichEdit einfügen

  Alt 5. Mär 2004, 13:31
hallo,
ich habe das gleiche prob...
zudem freezed bei dem ausführen und anklicken der
eingefügten bitmap windosen komplett ein...

lg
XAM
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Bild in RichEdit einfügen

  Alt 5. Mär 2004, 14:22
Du könntest es mal mit dem "RxRichEdit" aus der "RxLibrary" versuchen.

mfG
mirage228
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
max

Registriert seit: 5. Mär 2004
4 Beiträge
 
#4

Re: Bild in RichEdit einfügen

  Alt 5. Mär 2004, 17:35
hi,
das problem existiert leider auch mit dieser...

lg
XAM
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Bild in RichEdit einfügen

  Alt 5. Mär 2004, 17:42
Hi, oben ist die Rede von TJvxRichEdit, ich weiß nicht, ob's ein Tippfehler ist, falls ja, vergesst meinen Post.

Es gibt dort auch die Jedi-Komponente: TJvRichEdit (wenn nicht die gemeint ist), mit der es gehen sollte.


Der Code von Swissdelphicenter bezieht sich auf das TRxRichEdit.
  Mit Zitat antworten Zitat
max

Registriert seit: 5. Mär 2004
4 Beiträge
 
#6

Re: Bild in RichEdit einfügen

  Alt 7. Mär 2004, 15:24
hi
TJvxRichEdit ist die Migration von TRxRichEdit in Jedi...
Demzufolge ist das Problem "nicht 100% readonly" leider
auch dort vorhanden...

lg
XAM
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Bild in RichEdit einfügen

  Alt 7. Mär 2004, 15:27
Es geht mit beiden
  Mit Zitat antworten Zitat
max

Registriert seit: 5. Mär 2004
4 Beiträge
 
#8

Re: Bild in RichEdit einfügen

  Alt 9. Mär 2004, 14:05
@spider:das einfügen eines images - logo -
aber wie verhindern das ein eingefügtes
image als object bei mausaktion nicht
skaliert wird - obwohl read only definiert...

XAM
  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 02:30 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