![]() |
Probleme mit TJvRichEdit Control einfügen..
Hallo,
ich habe folgendes Problem: hiermit füge ich ein TJvGIFAnimator in ein TJvRichEdit ein:
Delphi-Quellcode:
das funktioniert auch soweit, allerdings hab ich folgende zwei Probleme:
procedure TForm1.RichEditChange(Sender: TObject);
function GetGifAnimator : TJvGifAnimator; var i : integer; begin Result:=TJvGIFAnimator.Create(RichEdit); Result.Image:=JvGIFAnimator1.Image; i:=0; while RichEdit.FindComponent('ga'+IntToStr(i))<> nil do Inc(i); Result.Animate:=True; Result.Name:='ga'+IntToStr(i); end; begin LockWindowUpdate(Handle); try if RichEdit.FindText(':D',0,Length(RichEdit.Text),[stSetSelection]) >= 0 then begin RichEdit.SelText:=''; RichEdit.InsertControl(GetGifAnimator); end; finally LockWindowUpdate(0); end; end; 1. Das Control wird auf Pos(0,0) gesetzt, was ich allerdings ja durch left und Top bearbeiten kann, d.h. ich bräuchte die Pixel-koordinaten der Position wo das hin soll. 2. Scrollt das Control nicht mit, sondern bleibt immer gleich. Kann mir da jemand helfen? MfG :angel: |
Re: Probleme mit TJvRichEdit Control einfügen..
Du weist ja gar nirgends das Parent zu :shock: ?!
Also wenn ich das vergesse, seh ich meistens gar nix... naja, evtl. macht das das richedit selber, mit dem insertcontrol. aber ansonsten weiss ih auch nicht, was noch sein könnte... |
Re: Probleme mit TJvRichEdit Control einfügen..
es wird ja angezeigt.. auf von der position richtig(also die werte von left un top) nur weis ich eben nich wie ich das mitscrollen lassen kann, bzw. an die richtige Position von dem zu ersetzenden Text setze.
|
Re: Probleme mit TJvRichEdit Control einfügen..
Du fügst mit InsertControl das Ding ja auch nicht in den Text ein sondern erzeugst nur ein Unterfenster zu dem RichEdit, ähnlich wie wenn du ein Element auf einem Panel ablegst. Das RichEdit weiß ja nichts von dem Control bzw. hat keinen Code, das zu behandeln.
Willst du es wirklich so machen wie du schreibst, dann versuche es so: 1. Die Zeichenposition, die du nach FindText mit SelStart auslesen kannst, solltest du dir merken (z.B. in TJvGifAnimator.Tag). Dann kannst du so den TJvGifAnimator an die richtige Position schieben.
Delphi-Quellcode:
2. Die Position solltest du bei den beiden Ereignissen OnHorizontalScroll und OnVerticalScroll des RichEdit neu setzen - für alle erzeugten Elemente (RichEdit.Controls).
with RichEdit.GetCharPos(Animator.Tag) do
begin Animator.x := x; Animator.y := y; end; Das hilft dir aber nicht viel wenn der Text oberhalb der Stelle bearbeitet wird, also wenn z.B. jemand dort eine neue Zeile einfügt - dann stimmt nämlich die gemerkte Position nicht mehr. |
Re: Probleme mit TJvRichEdit Control einfügen..
Zitat:
Also im Prinzip muss ich den Animator irgendwie in den Text einfügen.. nur wie? :gruebel: |
Re: Probleme mit TJvRichEdit Control einfügen..
Zitat:
Zitat:
Die "große" Lösung: Du kannst OLE-Objekte in ein RichEdit einfügen. Diese sind zwar nicht animiert, könnten aber jeweils ein TJvGifAnimator-Control verwalten (also beim Neuzeichnen des OLE-Objekts das Control neu platzieren). Also musst du "nur" so ein OLE-Control schreiben 8) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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