Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - [VisualCLX] markierten text ersetzen?


bensch - Mo 18.12.06 16:06
Titel: markierten text ersetzen?
hi

ich hab da ein problem mit nem editfeld:

auf meinem formular hab ich nen editfeld mit folgender onkeypress-prozedur:


Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if (key<>#8) and (length(edit1.text)>19) then key:=#0;
end;


ich möchte, dass der benutzer maximal 20 zeichen ins feld eingeben kann. wenn man nun 20 zeichen eingegeben hat, und diese alle markiert und überschreiben will, funktioniert das nicht, man muss erst auf die löschen-taste oder entfernen-taste drücken.

wie kann ich jetzt den markierten text durch drücken einer taste ersetzen?

kleines Beispiel: im editfeld steht folgendes: ABCDEFGHIJKLMNOPQRST

der user hat die buchstaben EFGH mit der maus markiert, und möchte diese durch Z ersetzen. dazu muss er aber erst die löschen oder entfernen-taste drücken, und dann Z. wie erreiche ich nun, dass wenn 20 zeichen im editfeld stehen, markierte zeichen sofort durch drücken eines anderen zeichens ersetzt werden?


Schüler - Mo 18.12.06 16:15

ich würde sagen das geht so Edit1.text.maxlenght:=20;
If edit1.lenght = 20 then Edit1.readonly:=true; Im Onkeypress ereignis dann Case Key of Vk_Delete : Edit1.text:= ''; Edit1.readonly:=false;


bensch - Mo 18.12.06 16:22

mit  edit1.MaxLength:=20 funktionierts


vielen dank ;)