AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Probleme mit TJvRichEdit Control einfügen..

Ein Thema von Angel4585 · begonnen am 31. Jul 2006 · letzter Beitrag vom 1. Aug 2006
Antwort Antwort
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#1

Probleme mit TJvRichEdit Control einfügen..

  Alt 31. Jul 2006, 10:55
Hallo,

ich habe folgendes Problem:

hiermit füge ich ein TJvGIFAnimator in ein TJvRichEdit ein:

Delphi-Quellcode:
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;
das funktioniert auch soweit, allerdings hab ich folgende zwei Probleme:

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
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Probleme mit TJvRichEdit Control einfügen..

  Alt 31. Jul 2006, 15:17
Du weist ja gar nirgends das Parent zu ?!

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...
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#3

Re: Probleme mit TJvRichEdit Control einfügen..

  Alt 31. Jul 2006, 15:41
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.
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: Probleme mit TJvRichEdit Control einfügen..

  Alt 31. Jul 2006, 18:06
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:
with RichEdit.GetCharPos(Animator.Tag) do
begin
  Animator.x := x;
  Animator.y := y;
end;
2. Die Position solltest du bei den beiden Ereignissen OnHorizontalScroll und OnVerticalScroll des RichEdit neu setzen - für alle erzeugten Elemente (RichEdit.Controls).

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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Angel4585

Registriert seit: 4. Okt 2005
Ort: i.d.N.v. Freiburg im Breisgau
2.199 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Probleme mit TJvRichEdit Control einfügen..

  Alt 1. Aug 2006, 08:15
Zitat von Flocke:
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.
Und ich denke wenn jemand das Fenster verkleinert/vergrößert und sich das RichEdit anpasst wird es dann auch Probleme geben oder?

Also im Prinzip muss ich den Animator irgendwie in den Text einfügen.. nur wie?
Martin Weber
Ich bin ein Rüsselmops
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

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

Re: Probleme mit TJvRichEdit Control einfügen..

  Alt 1. Aug 2006, 09:34
Zitat von Angel4585:
Und ich denke wenn jemand das Fenster verkleinert/vergrößert und sich das RichEdit anpasst wird es dann auch Probleme geben oder?
Dann musst du die obige Routine eben auch in OnResize aufrufen.

Zitat von Angel4585:
Also im Prinzip muss ich den Animator irgendwie in den Text einfügen.. nur wie?
Du könntest höchstens das Bild einfügen (dafür gibt's 'ne Methode in TJvRichEdit), aber das ist dann nicht animiert.

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)
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 20:11 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