Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Wie kann ich SynEdit sich wie eine TextBox benehmen lassen?


hydemarie - Di 16.02.16 01:34
Titel: Wie kann ich SynEdit sich wie eine TextBox benehmen lassen?
Mal doof gefragt:

SynEdit kann eigentlich genau das, was ich gerade brauche. Aber ich hätte gern ein SynEdit-Control, das sich wie eine normale TextBox verhält (nur eben mit Highlighting) - mit exakt 1 Zeile und ohne "schreiben, wohin man klickt".

Geht das?


jaenicke - Di 16.02.16 03:57

Das ist nicht so einfach. Das Aussehen geht schnell und mit "schreiben wohin man klickt" meinst du nach dem Zeilenende, oder? Das kannst du auch deaktivieren.
Dafür setzt du im Objektinspektor:

Delphi-Quelltext
1:
2:
3:
Gutter.Visible auf False
Options.eoScrollPastEol auf False
ScrollBars auf ssNone


Nun bleibt das größte Problem: Mehrzeiligkeit

Dafür kannst du die Entertaste abfangen. In Delphi sieht das so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TForm85.SynEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
    Key := 0;
end;
Nun hast du noch das Problem, dass der Benutzer mehrzeilige Texte aus der Zwischenablage einfügen kann. Das müsstest du auch noch unterbinden.


hydemarie - Di 16.02.16 08:59

Das wäre wohl sonst auch zu einfach gewesen..


Mit "Schreiben, wohin man klickt" meine ich, dass ich momentan an eine beliebige Stelle in der Box klicken kann und genau dort ein Cursor erscheint, auch vertikal versetzt.