Autor Beitrag
bensch
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mo 18.12.06 16:06 
hi

ich hab da ein problem mit nem editfeld:

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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 183



BeitragVerfasst: 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;

_________________
Das Leben ist ein Scheiß Spiel aber es hat eine hammer Grafik und grenzt an realismuss.
bensch Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 44



BeitragVerfasst: Mo 18.12.06 16:22 
mit  edit1.MaxLength:=20 funktionierts


vielen dank ;)