Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Großbuchstaben-Format in Memo-Feldern


Ringo - Fr 20.09.02 12:46
Titel: Großbuchstaben-Format in Memo-Feldern
Hallo,

ich möchte, dass der eingegebene Text in einem Memofeld beim Schreiben in Großbuchstaben erscheint. Eine Eigenschaft 'CharCase' gibt es nicht und beim Formatieren mit UpperCase in einem OnChange-Ereignis springt der Curser immer an die erste Stelle des Textes.
Gibt es dafür eine Lösung?
Besten Dank!
Ringo


DeCodeGuru - Fr 20.09.02 12:58

hi,

probiers mal mit folgenden Code: (Habe ihn nur mal eben zusammengetippt, weiss also nicht, ob er funtzt, müsste er aber eigentlich)


Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key in ['a'..'z'] then
  begin
    Key := UpperCase(Key)[1];
  end;
end;


Ringo - Fr 20.09.02 13:11

He super, das funktioniert.
Danke!
Ringo


DeCodeGuru - Fr 20.09.02 14:09

des ist gut :)


LCS - Fr 20.09.02 14:54

Hi
Kleiner Verbesserungsvorschlag, denn früher oder später passierts:

Quelltext
1:
2:
3:
4:
5:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if  key in ['a'..'z','ä', 'ö', 'ü'] then
    Key := AnsiUppercase(Key)[1];
end;


Gruss Lothar


Delete - Fr 20.09.02 15:08

Ein noch besserer Vorschlag, weil das Memo ja API-technisch gesehen ein Multiline-Edit ist:

Quelltext
1:
2:
SetWindowLong(Memo1.Handle,GWL_STYLE,
  GetWindowLong(Memo1.Handle,GWL_STYLE) or ES_UPPERCASE);

8)
Auf die gleiche Weise lässt sich eine Eingabe auch auf Kleinbuchstaben (ES_LOWERCASE), oder auf Nummern (ES_NUMBER) begrenzen.

Anwendung: 1x im "OnCreate" ...


DeCodeGuru - Fr 20.09.02 15:10

Hi LCS,

mein Code sollte auch nur ein kleines Beispiel sein. Natürlich kann man das noch erweitern :wink: Aber trotzdem gut, dass du es geschrieben hast.


LCS - Fr 20.09.02 15:15

Sollte ja auch keinerlei Kritik sein :beer: .
Lothar


DeCodeGuru - Fr 20.09.02 15:24

habe ich auch nicht so aufgefasst :mrgreen: also den prost :beer: :wink: