Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Memo Feld Eingabe (https://www.delphipraxis.net/79999-memo-feld-eingabe.html)

renekr 1. Nov 2006 10:11


Memo Feld Eingabe
 
Hallo,
Ich häng grad an einem Memo Feld und zwar will ich gerne folgendes machen:

Wenn der User Eingibt : '--' soll eine Meldung kommen.

Nun ist meine Frage.
Bei OnKeyPress kann ich ja auf das aktuell eingegebene Zeichen reagieren,aber wie ist es oder mache ich es in Verbindung mitdem letzten Zeichen?

Danke.

Luckie 1. Nov 2006 10:12

Re: Memo Feld Eingabe
 
Merk dir doch das letzte Zeichen und dann vergleichst du, ob das aktuelle und das gemerkte deinen Kriterien entspricht.

renekr 1. Nov 2006 10:16

Re: Memo Feld Eingabe
 
Hi,
Danke das wäre ne Idee,aber sowas wie memo1.text -1 gibt es nciht ,oder?

Also ich kann ja im Memo nicht rausfinden ob er an Position 3 oder 6 steht mit der eingabe?

Weil ich will ev. das man auf der Meldung ja nein, und dann werden die Letzten 2 Zeichen gelöscht,
Oder wenn diese nciht am Anfang einer Line sind.


danke

TStringlist 1. Nov 2006 10:35

Re: Memo Feld Eingabe
 
Zitat:

Zitat von renekr
Hi,
Danke das wäre ne Idee,aber sowas wie memo1.text -1 gibt es nciht ,oder?

doch fast:

Delphi-Quellcode:
procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
begin
  if (Key = '-')
  and (Memo1.Text[Memo1.SelStart] = '-') then beep;
end;
Hier nur "Memo1.SelStart" (ohne -1), weil der Char ja zu diesem Zeitpunkt noch nicht "dazuaddiert" wurde.

renekr 1. Nov 2006 10:59

Re: Memo Feld Eingabe
 
Hi,
Danke,aber wenn ich als 1. Zeichen das - eingebe bekomm i ne Zugriffsverletzung.

Kann ich auch Prüfen ob das -- nicht an der 1. Stelle einer Line ist.
Weil mein memo sieht so aus.

------------------

--Test 1 linie
-- 2. Linie
-- 3 Linie

Und wenn dann man wo ein -- eingibt würde ich dieses gerne löschen.die -- am Anfang jeder Linie kommen wenn man Key #13 drückt.also Return.

danke

TStringlist 1. Nov 2006 11:28

Re: Memo Feld Eingabe
 
Zitat:

Zitat von renekr
...aber wenn ich als 1. Zeichen das - eingebe bekomm i ne Zugriffsverletzung.

ok, kleiner Fehler meinerseits, weil: SelStart ist natürlich 0-basierend, während die .Text-Property ein ganz normaler String ist, also sein erster Char mit [1] beginnt. Von daher sollte es also in etwa so stimmen:

Delphi-Quellcode:
  // wären jetzt gerade 2 '-' -Chars hintereinander?
  if (Key = '-')
  and (Memo1.SelStart > 0)
  and (Memo1.Text[Memo1.SelStart] = '-') then
    // und wenn ja,
    // befinden diese sich NICHT am Text- bzw. an einem Zeilenanfang?
    if (Memo1.SelStart > 1)
    and (Memo1.Text[Memo1.SelStart-1] <> #10) then ....

renekr 1. Nov 2006 13:10

Re: Memo Feld Eingabe
 
Hi,
Vielen Dank.
Hab es nun hinbekomme.

noch nen Schönen nen Feiertag.


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:38 Uhr.

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