WPRichText verliert Focus nach Search / Replace

  • Hallo,

    nach Suchen / Ersetzen (Abbrechen geklickt) verliert die Anwendung den Focus, z.B. der Explorer steht dann vor der Anwendung.

    Bei einer älteren WPTools-Version half mal

    Code
    procedure TCustomWPRichText.FindClose(Sender: TObject);
    begin
      IgnoreMouse;
      Self.Setfocus; // <------------
    end;

    Das habe ich nun auch bei WPTools 9 eingebaut aber es hat keine Wirkung!

    Hat jemand bitte einen Tip für mich?

    Ciao

    Stefan

  • Der neue Dialog hat das Focus-Problem nicht mehr, nach Schließen von diesem hat das WPRichText wieder den Focus und der Cursor blinkt :-)

    Nur eines ist unschön: der Dialog startet erstmalig an der obersten linken Ecke des Bildschirms, nach Verschieben behält er dann die neue Position bei bei erneutem Anzeigen.

    Nach Programmstart aber hat er wieder die linke obere Ecke.

    Einen Parent kann man nicht zuweisen und die Position anderweitig beeinflussen habe ich auch nichts gefunden, gibt es da noch einen Trick?

    ExecuteParented hat keine Wirkung, ExecuteAt ist ebenfalls wirkungslos, der Dialog startet beim ersten Mal immer in der oberen linken Ecke...

    Ciao

    Stefan

    Edited once, last by skoschke (September 28, 2020 at 2:56 PM).

  • Gut, die Positionierung des neuen Dialogs im OnShowDialog habe ich gefunden, nur gefällt er mir optisch und von der Bedienung her nicht so richtig, die alten Search / Replace - Dialoge waren da viel benutzerfreundlicher :-)

    Was mir jetzt bei den alten Dialogen aufgefallen ist:

    Das OnFindClose im WPTools 9 WPRichText wird überhaupt nicht mehr gefeuert wenn man den Dialog schließt !

    Ist da was von 8 auf 9 kaputtgegangen?

    Ciao

    Stefan

  • In Meinem Test mit Delphi 10.3 wird


    procedure TWPCustomRichText.OnFindClose(Sender: TObject);

    begin

    IgnoreMouse;

    end;

    beim schließen des normalen Find Dialogs aufgerufen.

    Zu beachten ist aber, dass diese TFindDialog mit der Application als Parent erstellt wird.

    Man kann natürlich auch leicht eine eigene Instanz verwenden. Einfach dann FindTextMethod aufrufen.