Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi GetCursorPos in einem Edit (https://www.delphipraxis.net/21680-getcursorpos-einem-edit.html)

BenjaminHelbig 6. Mai 2004 14:32


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:
if (Key = VK_Delete) or (Key = VK_Back) then
 begin
 end;
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?


Grüßle

Ben

Benedikt 6. Mai 2004 14:34

Re: GetCursorPos in einem Edit
 
Hi,

die Eigenschaft SelStart sollte dir die Cursorposition in deinem Edit zurückliefern.

Christian Seehase 6. Mai 2004 18:42

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.

Jens Schumann 6. Mai 2004 18:49

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 12:50 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