Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Bild in JvRichedit einfügen ohne Focus? (https://www.delphipraxis.net/98918-bild-jvrichedit-einfuegen-ohne-focus.html)

Sko 4. Sep 2007 08:40


Bild in JvRichedit einfügen ohne Focus?
 
Hallo,

ich habe mehrere Forms mit JvRichEdits in die manchmal Bilder eingefügt werden (Smilies in einem Chat). Mit der Prozedur InsertGraphic(AGraphic: TGraphic; Sizeable: boolean) wird ein Bild bei der aktuellen Auswahl eingefügt und dazu braucht das JvRichedit den Focus damit man die passende Stelle auswählen kann. Das ist ein Problem, denn wenn man gerade in einer anderen Form was macht (Nachricht schreiben) und zwischendurch ein Smilie in ein Richedit einer anderen Form eingefügt wird, wird man beim Schreiben unterbrochen weil die andere Form den Focus bekommt. Kann man irgendwie Bilder in ein JvRichedit einfügen ohne das es den Focus braucht? Zur Zeit füge ich die Smilies so ein:
Delphi-Quellcode:
// Smilies einfügen
procedure TMainForm.BildEinfuegen(Bilder: TPNGImageCollection; ImageIndex: integer; RE: TJvRichEdit);
var
  BMP: TBitmap;
begin
  BMP := TBitmap.Create;
  try
    //Das JvRichedit zeigt PNGs nicht an, daher erst in BMPs umwandeln
    BMP.Width := Bilder.Items[ImageIndex].PngImage.Width;
    BMP.Height := Bilder.Items[ImageIndex].PngImage.Height;
    Bilder.Items[ImageIndex].PngImage.Draw(BMP.Canvas,Rect(0,0,BMP.Width,BMP.Height));
    RE.InsertGraphic(BMP,false);
    with RE.GetSelection do RE.SetSelection(cpMin + 1, cpMin + 1, False);
  finally
    BMP.Free;
  end;
end;

// Smilies suchen

procedure TMainForm.SucheSmilie(Smilie: string; ImageIndex: integer; Liste: TPNGImageCollection; RE: TJVRichEdit);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
begin
  with RE do
  begin
    if SelLength <> 0 then StartPos := SelStart + SelLength
    else StartPos := 0;
    ToEnd := Length(Text) - StartPos;
    FoundAt := FindText(Smilie, StartPos, ToEnd, []);
    while FoundAt <> -1 do
    begin
      SetFocus;
      SelStart := FoundAt;
      SelLength := Length(Smilie);
      BildEinfuegen(Liste, ImageIndex,RE);
      FoundAt := FindText(Smilie, StartPos, ToEnd, []);
    end;
  end;
end;
Kennt jemand eine Lösung für dieses Problem?

Sko 5. Sep 2007 16:04

Re: Bild in JvRichedit einfügen ohne Focus?
 
OK, ist erledigt, ich bin für die Anzeige der Nachrichten auf HTML umgestiegen (hat auch den positiven Effekt das man animierte Smilies verwenden kann :-D ).


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 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