![]() |
GetCursorPos in einem Edit
Hi DP'ler,
habe folgendes Problem. Ich möchte in einem TEdit in welches ich automatisch den aktuellen Zeitstempel reinschreiben lasse, verhindern, dass dieser wieder rausgenommen wird. Hinter den Zeitstempel kann der Benutzer noch normalen Text eintragen. Ich will den Zeitstempel aber auch nicht später setzen lassen, da ich verhindern möchte, dass der Benutzer meint er müsse ihn manuell eintragen. Ich habe jetzt in das On KeyDown Ereignis von dem Edit Feld folgendes eingetragen
Delphi-Quellcode:
So kann ich ja auf Delete und Backspace reagieren. Die länge von einem Zeitstempel beträgt auch immer Datum (10) + Uhrzeit (8) + ein Leerzeichen. Also eine Gesamtlänge von 19. Die ersten 19 Zeichen dürfen also nicht gelöscht werden. Um dieses zu verhindern muss ich aber die Cursorposition in dem Editfeld bekommen. Hat jemand von Euch eine Idee?
if (Key = VK_Delete) or (Key = VK_Back) then
begin end; Grüßle Ben |
Re: GetCursorPos in einem Edit
Hi,
die Eigenschaft SelStart sollte dir die Cursorposition in deinem Edit zurückliefern. |
Re: GetCursorPos in einem Edit
Moin Benjamin,
Du könntest auch ein RichEdit dafür missbrauchen. Hier kannst Du mit dem Attribut Protected (siehe: SelAttributes) einen Text vor Veränderung schützen. |
Re: GetCursorPos in einem Edit
Hallo,
versuch es doch mal so:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; procedure FormCreate(Sender: TObject); procedure Edit1Enter(Sender: TObject); procedure Edit1Change(Sender: TObject); procedure Edit1Click(Sender: TObject); private { Private-Deklarationen } FTimeStamp : String; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin FTimeStamp:=DateToStr(Now)+' '+TimeToStr(Now)+': '; Edit1.Text:=FTimeStamp; end; procedure TForm1.Edit1Enter(Sender: TObject); begin Edit1.SelStart:=Length(FTimeStamp); end; procedure TForm1.Edit1Change(Sender: TObject); begin If (Length(Edit1.Text)<Length(FTimeStamp)) or (Edit1.SelStart<Length(FTimeStamp)) then begin Edit1.Text:=FTimeStamp; Edit1.SelStart:=Length(FTimeStamp); end; end; procedure TForm1.Edit1Click(Sender: TObject); begin If Edit1.SelStart<Length(FTimeStamp) then Edit1.SelStart:=Length(FTimeStamp); end; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:43 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