![]() |
Cursor hinkt nach
Hallo,
ich verschiebe bei einem Edit den Text etwas nach links.
Delphi-Quellcode:
Problem dabei: Der Textcursor hinkt um diese zwei Punkte nach. Er sitzt immer noch auf der "alten regulären" Position.
inflateRect(r, -2, 0);
Weiß jemand, wie ich auch den Cursor um diese 2 Punkte verschieben kann? Danke. Josef |
AW: Cursor hinkt nach
Schau mal nach SetCursorPos.
|
AW: Cursor hinkt nach
Hi,
Zitat:
Dann hinkt halt der Cursor an dieser Stelle um besagte 2 Punkte nach. Vielleicht sonst noch eine Idee? Danke. Josef |
AW: Cursor hinkt nach
Gleich nen Befehl zum "Neuzeichnen" hinterher schicken?
|
AW: Cursor hinkt nach
Zitat:
Delphi-Quellcode:
In einer Paint Prozedure wird ein Rahmen gemalen und eben der Text des Editfeldes um 2 Punkte nach rechts gesetzt.
procedure TKEdit.PaintWindow(DC: HDC);
begin FCanvas.Lock; try FCanvas.Handle := DC; try TControlCanvas(FCanvas).UpdateTextFlags; Paint; updateWindowRgn; finally FCanvas.Handle := 0; end; finally FCanvas.Unlock; end; end;
Delphi-Quellcode:
Es paßt sonst alles. Nur eben der Textcursor hinkt um besagte Stellen nach.procedure TKEdit.Paint; begin .... inflateRect(r, -2, 0); DrawText{Ex}(Canvas.Handle, PChar(Text),-1, R, DT_LEFT or DT_NOPREFIX or DT_WORDBREAK or DT_NOCLIP or DrawTextBiDiModeFlagsReadingOnly{, @params}); ..... end; Ich wüßte jetzt auch nicht, wo ich da noch einen Befehl zum "Neuzeichnen", also RecreateWnd oder so nachschicken soll. Josef |
AW: Cursor hinkt nach
Hat vllt etwas mit EM_SETMARGINS zu tun?
|
AW: Cursor hinkt nach
Hallo,
Zitat:
Die Params selber hab ich so probiert:
Delphi-Quellcode:
Das funktioniert auch, also der Text im Edit Feld wird nach links gerückt. Aber halt mein Cursor, der hinkt nach, das Schwein.:lol:
var
Params: TDrawTextParams; ... begin with Params do begin Cbsize := SizeOf(DrawTextParams); iTabLength := 0; iLeftMargin := 2; <---- iRightMargin := 0; uiLengthDrawn := Length(text); end; end; Josef |
AW: Cursor hinkt nach
Zitat:
Delphi-Quellcode:
- ohne InflateRect etc.
SendMessage(Edit1.Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, MakeLong(16, 16));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 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