Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   TStringList => Anordnung der Einträge (https://www.delphipraxis.net/103524-tstringlist-%3D-anordnung-der-eintraege.html)

Progman 16. Nov 2007 23:11

Re: TStringList => Anordnung der Einträge
 
Delphi-Quellcode:
Insert('CDE', text, CurPosition)
, denn +3 ist doch schon im Nirvana :)

Tommy1988 16. Nov 2007 23:16

Re: TStringList => Anordnung der Einträge
 
Delphi-Quellcode:
if Copy(SynMemo1.Text, CurPosition-2, 3) = 'ABC' then // ****
Insert('CDE', text, CurPosition);
Ich hab den total falschen Ansatz :cry:

Das klappt alles nicht ..

Progman 16. Nov 2007 23:19

Re: TStringList => Anordnung der Einträge
 
Lass dir doch mal
Delphi-Quellcode:
Copy(SynMemo1.Text, CurPosition-2, 3)
in ein Label oder Caption schreiben, was da genau drinsteht, und mal anstelle von Insert einfach nur Memo.Text := Memo.Text+'DEF'.
Und vielleicht noch Memo.Refresh aufrufen, falls nix zu sehen ist.

Tommy1988 16. Nov 2007 23:25

Re: TStringList => Anordnung der Einträge
 
Wenn ich jetzt diesen Code nehme:

Delphi-Quellcode:
procedure TForm1.SynMemo1KeyPress(Sender: TObject; var Key: WideChar);
begin
text := SynMemo1.Text;

   Ln := SynMemo1.CaretY;
   CurPosition := SendMessage(SynMemo1.handle,EM_LineIndex,Ln,0);
   CurPosition := SynMemo1.SelStart-CurPosition;

Caption := '('+IntToStr(CurPosition)+') "'
+Copy(SynMemo1.Text, CurPosition-2, 3)+'"'; // nur zum gucken
if Copy(SynMemo1.Text, CurPosition-2, 3) = 'ABC' then // ****
SynMemo1.Text := SynMemo1.Text+'DEF';
SynMemo1.Refresh;
end;
und direkt am Anfang "ABC" eintippe, passiert nix, gebe ich ein zusätzliches Leerzeichen ein, so kommt DEF.

Aber das ist es ja auch nicht :?

Progman 16. Nov 2007 23:35

Re: TStringList => Anordnung der Einträge
 
Delphi-Quellcode:
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if copy(Memo1.Text,Memo1.SelStart-2,3)='ABC' then begin
    Memo1.Text:=Memo1.Text+'DEF';
    Memo1.SelStart:=Length(Memo1.Text);
  end;
end;
Das funzt bei mir mit nem normalen TMemo.

Tommy1988 17. Nov 2007 00:56

Re: TStringList => Anordnung der Einträge
 
Delphi-Quellcode:
Caption := '('+IntToStr(CurPosition)+') "'
+Copy(SynMemo1.Text, CurPosition-2, 3)+'"';

 if Copy(SynMemo1.Text, CurPosition-2, 3) = '[b]' then
 begin
  SynMemo1.SelText := '[/b]';
 end;
Ds ist es soweit.

Es steht aber in einem unschönen TIMER .. von daher.. das Problem, ist, wenn es im KeyUp/Down steht, kommt es doppelt

DP-Maintenance 17. Nov 2007 07:17

DP-Maintenance
 
Dieses Thema wurde von "Sharky" von "Programmieren allgemein" nach "Sonstige Fragen zu Delphi" verschoben.
Ist ja eine Delphifrage

Progman 17. Nov 2007 09:56

Re: TStringList => Anordnung der Einträge
 
Dass es doppelt kommt, hat seine Ursache darin, dass bei Loslassen der Shift-Taste auch KeyUp ausgelöste wir, und das TMemo, brav wie es ist, hängt eben noch mal 'DEF' dran. Deshalb hab ich ja nach anhängen von 'DEF' auch gleich den Cursor dahinter gesetzt. Dann trifft die Bedingung nicht mehr zu und es passiert nix.
SelStart repräsentiert immer die Cursor-Position, wenn kein Text selectiert ist, daher
Delphi-Quellcode:
Memo1.SelStart:=Length(Memo1.Text);
. Dann sind die drei Zeichen davor ja nicht 'ABC' ;)
Also nach dem Anhängen gleich Cursor dahinter setzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:07 Uhr.
Seite 3 von 3     123   

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