Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   RichEdit1 Komponente von Delphi 21.0 läßt Programm abstürzen (https://www.delphipraxis.net/213886-richedit1-komponente-von-delphi-21-0-laesst-programm-abstuerzen.html)

paule32.jk 14. Okt 2023 23:21

RichEdit1 Komponente von Delphi 21.0 läßt Programm abstürzen
 
Hallo,

ich habe eine TRichEdit Komponente auf eine TForm gelegt, und dieser dann ein OnMouseDown Event zugewiesen.
wenn ich dann im laufenden Prozess die Maus im RichEdit klicke passiert nichts.

Wenn ich aber nun Text eingebe, und wieder wahllos innerhalb der RichEdit Komponente klicke, stürzt die Anwendung ab.

Den folgenden Code habe ich dabei als Fehlerquelle lokalisieren können:
Delphi-Quellcode:
procedure TForm2.RichEdit1MouseDown(
  Sender: TObject;
  Button: TMouseButton;
  Shift : TShiftState;
  X, Y : Integer);
  var
  ClickPos: Integer;
begin
  ClickPos := RichEdit1.Perform(
    EM_CHARFROMPOS, 0, MakeLong(
    RichEdit1.CaretPos.X,
    RichEdit1.CaretPos.Y));

  ShowMEssage('X: ' + inttostr(clickpos));
end;
ich verwende Windows 11 64-Bit Pro, die Anwendung ist aber 32-Bit.

paule32.jk 15. Okt 2023 03:22

AW: RichEdit1 Komponente von Delphi 21.0 läßt Programm abstürzen
 
Lösung:
- Perform weglassen
- RichEdit1.SelStart verwenden

himitsu 15. Okt 2023 12:24

AW: RichEdit1 Komponente von Delphi 21.0 läßt Programm abstürzen
 
Haben die den Schrott eigentlich repariert?
[edit] nein [/edit]

SelStart und SelLength liefern originale Werte. (was falsch ist und der Bugreport wird ignoriert)
RichEdit verwendet #13 als Zeilenumbruch,
aber an Text und Lines wird rumgepfuscht und es kommt #13#10 raus,
also mit jeder Zeile verrutsch die Position um ein weiteres Char.


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