Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi memo und Zeilenanfangstring (https://www.delphipraxis.net/49676-memo-und-zeilenanfangstring.html)

richard_boderich 14. Jul 2005 11:55


memo und Zeilenanfangstring
 
hallo leute,

ich brauch mal eure hilfe. ich versuche in einem memo so eine art zeilenindexstring für die einzelnen Lines einzufügen
komme aber einfach nicht klar damit. habe folgenden code benutzt. ich will das so haben, das wenn ich return druecke
er in die naechste zeile springt, und den INDX string hinschreibt, so das ich dann direkt dahinter meine werte setzen kann.
ich habe aber das problem, das er erst den wert schreibt, und dann in die naechste zeile springt,egal was ich auch versuche.
habs auch schon im onkeydown event probiert und mit lines.add , alles ohne erfolg. waere dankbar für einen tip.

Delphi-Quellcode:
procedure TForm1.memo8KeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then memo8.lines[memo8.lines.count]:='[INDX]';
end;
Gruß Richard

//EDIT was mir noch aufgefallen ist, er tut den INDX string nur schreiben,wenn ich nix weiter in der vorherigen zeile eingetippt hab,
ansonsten schreibt er gar nix *ratlos*

marabu 14. Jul 2005 12:13

Re: memo und Zeilenanfangstring
 
Hallo Richard,

das müsste eigentlich ungefähr so ablaufen - noch nicht ganz ausformuliert:

Delphi-Quellcode:
procedure TDemoForm.MemoKeyPress(Sender: TObject; var Key: Char);
const
  LinePrefix = '[INDX]';
var
  lineIndex: integer;
begin
  if key = #13 then begin
    // damit es nicht nur am Ende klappt...
    lineIndex := Succ(CurrentLineNumber);  
    // Kons-Tante einsetzen
    Memo.Lines.Insert(lineIndex, LinePrefix);
    // Eingabe-Cursor dahinter setzen
    SetCaretPosition(lineIndex, Length(LinePrefix));
    // Tasten-Code als bearbeitet kennzeichnen
    key := #0;
  end;
end;
Grüße vom marabu

Hansa 14. Jul 2005 12:17

Re: memo und Zeilenanfangstring
 
Da fallen mir zwei Möglichkeiten ein, das Ganze gleich richtig zu erledigen. 1. Memo auf Listbox/Stringgrid umstellen. 2. Memo um die Eigenschaft Count selbst erweitern. Das mitgelieferte Memo ist eben meist einfach zu schwach.

Ah, "roter Kasten" :mrgreen: Das Insert fügt aber doch eine komplette Zeile ein, oder nicht ?

marabu 14. Jul 2005 12:32

Re: memo und Zeilenanfangstring
 
Oder so:

Delphi-Quellcode:
procedure TDemoForm.MemoKeyPress(Sender: TObject; var Key: Char);
const
  LinePrefix = '[INDX]';
begin
  if key = #13 then begin
    Memo.SelText := #13#10 + LinePrefix;
    Memo.SelStart := Memo.SelStart + Memo.SelLength;
    key := #0;
  end;
end;
marabu

@Hansa: Ja. Wo ist dein Code? *LässigFingerAufTischkanteAbrolle*

richard_boderich 14. Jul 2005 12:38

Re: memo und Zeilenanfangstring
 
@marabu

super du , many THX

deine zweite loesung funktioniert so wie ich das haben wollte. die erste ging bei mir leider nich, weil er mit setcarretpos
irgentwas hatte. da hatt er immer gesagt undefinierter bezeichner. naja das nur der vollstaendigkeit halber ;)

Ich danke dir, hab naehmlich n bisschen die zeit im nacken
bei gelegheit trinken wir ma einen ;)

bis denn,

Richard

Matze 14. Jul 2005 12:43

Re: memo und Zeilenanfangstring
 
Wenn du die Frage noch bitte als "erledigt" kennzeichnen würdest, wäre das super, danke. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:42 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