Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   letzter eingegebener buchstabe in memo (https://www.delphipraxis.net/152779-letzter-eingegebener-buchstabe-memo.html)

Demon666 6. Jul 2010 17:56

letzter eingegebener buchstabe in memo
 
Hi Leute
Ich will in einem Memo den letzten eingegebenen Buchstaben herausfinden (beim OnChange des Memos). Also nicht den letzten Buchstaben des ganzen Textes, sondern eben den letzten eingegebenen Buchtsaben, der kann auch mitten im Text stehen.
Dnake schonmal im Vorraus

rollstuhlfahrer 6. Jul 2010 18:09

AW: letzter eingegebener buchstabe in memo
 
im OnChange geht das schlecht. Dafür wirst du schon OnKeyDown bemühen müssen.

Bernhard

Demon666 6. Jul 2010 19:41

AW: letzter eingegebener buchstabe in memo
 
Ja Ok dann mach ichs mit einem OnKeyDown, aber wie geht es dann da?

mkinzler 6. Jul 2010 19:50

AW: letzter eingegebener buchstabe in memo
 
Einfach in Variable/Member Zwischenspeichern:
Delphi-Quellcode:
procedure TForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
    LastChar := Key;
end;

Demon666 6. Jul 2010 19:54

AW: letzter eingegebener buchstabe in memo
 
dann bekommich aber keine groß/klein schreibung hin oder? und dann sind auch zum beispiel ß und ? die gleichen tasten. Mein konkretes problem wäre dass ich merke dass ein Wort zu ende ist. also brauch ich sämtliche satzzeichen, wenn ich aber das ? benutze bekommich ich als resultat auch dass das wort zu ende ist wenn ich zum beispiel "Straße" schreibe mitten im wort, weil ß und ? die gleiche Taste haben.

himitsu 6. Jul 2010 19:55

AW: letzter eingegebener buchstabe in memo
 
FormKeyPress enthält das Zeichen inklusive Groß-/Kleinschreibung und sonstewas.

Bei FormKeyDown/-Up ist es so, wie du sagst.


Wozu benötigst du diesen Buchstaben eigentlich?

Delphi-Quellcode:
Copy(Memo1.Text, Memo1.SelStart + Memo1.SelLength + 1, 1);
könnte oftmals auch ausreichen, falls man es nicht oft macht und nicht jeden Buchstaben braucht.
(mit Einschränkungen bei Cursorumpositionierungen)

Demon666 6. Jul 2010 19:58

AW: letzter eingegebener buchstabe in memo
 
also ist Key dann zum beispiel ':' für shift + . ?

mkinzler 6. Jul 2010 19:59

AW: letzter eingegebener buchstabe in memo
 
Du bekommst einen Char, a bei a und A wenn gleichzeitig Shift usw.
KeyPress liefwrt halt zum Unterschied zu KeyDown einen Char statt dem Scancode

Demon666 6. Jul 2010 20:01

AW: letzter eingegebener buchstabe in memo
 
ok jetzt hab ichs glaub ich verstanden,danke, eine letzte frage hätte ich aber doch noch: welchen wert hat key für eine neuzeile (also enter-taste)?

mkinzler 6. Jul 2010 20:05

AW: letzter eingegebener buchstabe in memo
 
Wäre dann #13

himitsu 6. Jul 2010 20:05

AW: letzter eingegebener buchstabe in memo
 
Zitat:

Zitat von Demon666 (Beitrag 1033833)
also ist Key dann zum beispiel ':' für shift + . ?

Delphi-Quellcode:
Memo1KeyPress(Sender: TObject; var Key: Char);
Wo ist da Shift zu finden?

Von mir gab es vor Kurzem einen Thread, wo ich in OnKeyDown die "ergebende" Taste bekommen wollte (die blöde Suche findet ihn nur nicht), aber das Ergebnis war: es ist nicht (einfach) möglich.

Demon666 6. Jul 2010 20:21

AW: letzter eingegebener buchstabe in memo
 
Zitat:

Zitat von mkinzler (Beitrag 1033834)
Du bekommst einen Char, a bei a und A wenn gleichzeitig Shift usw.

wie soll ich das dann verstehen wenn shift keinen einfluss auf den erhaltenen char hat?

mkinzler 6. Jul 2010 20:30

AW: letzter eingegebener buchstabe in memo
 
Doch es hat Einfluss! Das ist ja gerade der Unterschied zwischen KeyPress und KeyDown!

Demon666 6. Jul 2010 20:33

AW: letzter eingegebener buchstabe in memo
 
also funktioniert es doch... und eine neuzeil müsste doch eigentlich aus 2 chars bestehen oder? zeile nach unten + carriage return

mkinzler 6. Jul 2010 20:36

AW: letzter eingegebener buchstabe in memo
 
In einem String ja. Der Tastendruck hat aber nur einen Char wie alle andere

himitsu 6. Jul 2010 20:42

AW: letzter eingegebener buchstabe in memo
 
Die Enter-Taste ist eine Taste, also ein Zeichen und das ist nunmal die #13 ... wie der Zeilenumbruch in der Komponente verwaltet wird, ist eine andere Sache.




Ja, theoretisch könnte man
Key=Ord('A') + Shift=ssShift als 'A'
und
Key=Ord('A') + Shift ohne ssShift als 'a'
ansehn, aber probiere mal Folgendes:
- drücke auch mal die Alt-Taste
- drücke mal ALT (nicht [Alt Gr]) und gleichzeitig 123 auf dem Zehnerblock
- drücke ´ und dann Shift + A ... das ergibt dann Á und nicht nur A
- ...

Einfach nur OnKeyDown/-Up, ohne Beachtung vergangener Tastatureingaben und anderer Dinge, kann kein zuverlässiges Ergebnis liefern.

Demon666 6. Jul 2010 20:44

AW: letzter eingegebener buchstabe in memo
 
Zitat:

Zitat von himitsu (Beitrag 1033858)

Einfach nur OnKeyDown/-Up, ohne Beachtung vergangener Tastatureingaben und anderer Dinge, kann kein zuverlässiges Ergebnis liefern.

ich benutze aber Keypress ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:17 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz