Selektierten Text per Return löschen [gelöst]

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Selektierten Text per Return löschen [gelöst]

Beitrag von Aliobaba »

Hallo,

wenn man in einem Memo-Feld einen Textabschnitt mit der Maus oder auch per Tastatur selektiert und anschließend die "Return"-Taste betätigt, dann wird der markierte Textabschnitt gelöscht und eine neue Zeile erzeugt.

Kann man dieses Löschen "per Return" verhindern?

Schöne Festtage!
Aliobaba
Zuletzt geändert von Aliobaba am Sa 26. Dez 2015, 10:29, insgesamt 1-mal geändert.
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: Selektierten Text per Return löschen

Beitrag von theo »

Ich weiß zwar nicht warum, aber weil Weihnachten ist...
Man könnte es so machen:

Code: Alles auswählen

 
uses LCLType;
....
 
procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: word; Shift: TShiftState);
begin
  if (Key = VK_RETURN) and (Memo1.SelLength > 0) then
  begin
    Memo1.SelStart := Memo1.SelStart + Memo1.SelLength;
    Application.QueueAsyncCall(@DE, 0);
    Key := 0;
  end;
end;
 
procedure TForm1.DE(Data: PtrInt);
begin
  Memo1.SelText := LineEnding;
end;    
Fröhliche Weihnachten allerseits.

Michl
Beiträge: 2511
Registriert: Di 19. Jun 2012, 12:54

Re: Selektierten Text per Return löschen

Beitrag von Michl »

theo hat geschrieben:Fröhliche Weihnachten allerseits.
Das wünsche ich dir auch und allen anderen Forumsteilnehmern. Ein paar schöne und besinnliche Tage im Kreis eurer Lieben!

Code: Alles auswählen

type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection;  

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Selektierten Text per Return löschen

Beitrag von Aliobaba »

:shock: Wowh! Danke!!

Da hatte ich aber Glück, dass zufällig Weihnachten ist!!
Diese Problemlösung liegt ja schon deutlich über dem Beginn der "2. Lektion Lazarus" (mein Niveau :oops: )
Danke, Theo!!! (wieder einmal)

Aliobaba

Weihnachten ist nun zwar schon halb vorbei; trotzdem bleibt mir die Frage:
Wozu ist es eigentlich gut, dass selektierte Textfragmente nach einem "Return" so einfach verschwinden?
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

Benutzeravatar
theo
Beiträge: 10874
Registriert: Mo 11. Sep 2006, 19:01

Re: Selektierten Text per Return löschen

Beitrag von theo »

Aliobaba hat geschrieben: Wozu ist es eigentlich gut, dass selektierte Textfragmente nach einem "Return" so einfach verschwinden?
Die verschwinden nach jedem Input, nicht nur nach "Return".
Das ist bei Windows Notepad so, bei KDE KWrite und bei praktisch jedem Editor.
Was du verlangst entspricht nicht dem Standardverhalten von Text Editoren, deshalb finde ich das auch nicht unbedingt gut und deswegen die Bemerkung "weil Weihnachten ist..." :wink:

Bitschubser
Beiträge: 61
Registriert: Mo 27. Aug 2012, 15:43

Re: Selektierten Text per Return löschen

Beitrag von Bitschubser »

theo hat geschrieben:
Aliobaba hat geschrieben: Wozu ist es eigentlich gut, dass selektierte Textfragmente nach einem "Return" so einfach verschwinden?
Die verschwinden nach jedem Input, nicht nur nach "Return".
Eine ziemlich unangenehme Angewohnheit...
Soweit ich mich erinnere eingeführt mit SAA (https://de.wikipedia.org/wiki/Systems_A ... chitecture)
Das ist bei Windows Notepad so, bei KDE KWrite und bei praktisch jedem Editor.
Also bei "meinen" Lazarus und Delphi-Editoren ist das z.B. nicht so - persistente Blöck FTW.
Was du verlangst entspricht nicht dem Standardverhalten von Text Editoren,
Das ist heutzutage richtig. Früher war eben doch (fast) alles besser...
Mir persönlich ersparen die persistenten Blöcke jedenfalls (selbst in der defekten Implementation in Lazarus) täglich eine menge Arbeit.

**Obacht: Obiger Beitrag kann leichte Übertreibungen und Spuren von eigener Meinung enthalten.

Aliobaba
Lazarusforum e. V.
Beiträge: 496
Registriert: Di 1. Mai 2012, 09:11

Re: Selektierten Text per Return löschen

Beitrag von Aliobaba »

... das Abschalten dieser manchmal "überraschend auftretenden Löschfunktion" :shock: ist nicht nur im Lazarus-Editor hilfreich sondern auch sonst.
Dank Theos Code funktioniert jetzt die Suche nach Textstellen und die Weitersuche nach weiteren Textstellen sehr elegant:
Im Beispiel: Einfach den gesuchten Text eingeben und ab dann mit "Return" "durchklicken".

Nochmal: Danke Theo!

Aliobaba

Beispiel:
Suchfunktion mit [Alt+B] aufrufen: http://www.heise.de/download/mymemorydb-1189626.html

Code: Alles auswählen

 
procedure TForm1.DE(Data: PtrInt);
begin
  Memo1.SelText := '' ; // statt "lineEnding" steht ein leerer String
end;    
[/size]
"MyMemoryDB" ( https://www.heise.de/download/product/mymemorydb-89626 )

wp_xyz
Beiträge: 5154
Registriert: Fr 8. Apr 2011, 09:01

Re: Selektierten Text per Return löschen [gelöst]

Beitrag von wp_xyz »

das Abschalten dieser manchmal "überraschend auftretenden Löschfunktion" ist nicht nur im Lazarus-Editor hilfreich sondern auch sonst.
Ich versteh' nicht: Wenn ihr auf diese Art die Return-Taste abwürgt, kann doch immer noch der Fall eintreten, dass man den markierten Text durch Drücken einer anderen Taste löscht. Warum nehmt ihr in so einem Fall nicht die Undo-Funktion? Ist beim TMemo eingebaut und kann mit ein paar Zeilen Code an die Benutzeroberfläche weitergeschaltet werden.

Antworten