![]() |
Edit: wenn gesamter Inhalt markiert ist, welche Eigenschaft?
Hallo zusammen,
für ein Edit nutze ich ein OnKeyPress Event. U.a. prüfe ich, dass nur ein Komma eingegeben werden darf:
Delphi-Quellcode:
Wenn ich das Edit verlasse und später wieder dahin reinspringe, ist ja alles markiert.
// nur ein Komma
if (pos(#44, string1) > 0) and (key = #44) then key := #0; Wenn alles markiert ist möchte ich gern, dass wenn ich dann das Komma eingebe, alles gelöscht wird und das Komma erscheint. Das wäre ja auch Standard. Nur erkennt mein Source von oben, dass schon ein Komma vorhanden ist und lässt die Eingabe erst gar nicht zu. Wie kann ich denn erkennen (Eigenschaft), ob im Edit ALLES markiert ist, um dann die Eingabe des Kommas zuzulassen? Danke schon mal vorab! |
Re: Edit: wenn gesamter Inhalt markiert ist, welche Eigensch
Zitat:
Delphi-Quellcode:
greetz
if length(Edit.Text) = Edit.SelLength then
//Der gesamte Text ist markiert Mike |
Re: Edit: wenn gesamter Inhalt markiert ist, welche Eigensch
Hallo Jürgen,
die Selektion des ganzen Textes ist kein ausreichendes Kriterium. Außerdem gibt es da noch die Zwischenablage.
Delphi-Quellcode:
Grüße vom marabu
uses
ClipBrd; function Replace(const s: String; index, Count: Integer; subStr: String): String; begin Result := s; Delete(Result, index, count); Insert(subStr, Result, index); end; procedure TDemoForm.EditKeyPress(Sender: TObject; var Key: Char); var s: String; value: Double; begin with Sender as TEdit do begin if (Key = ^V) then s := ClipBoard.AsText else if Key < ' ' then Exit else s := Key; s := Replace(Text, Succ(SelStart), SelLength, s); if (s <> '') and not TryStrToFloat(s, value) then Key := #0; end; end; |
Re: Edit: wenn gesamter Inhalt markiert ist, welche Eigensch
@Mike --> Danke! Wenn man das im Nachhinein so sieht, ist es doch ganz einfach... :zwinker:
@marabu: ich würde dein Beispiel gern verstehen, insbesondere weil ich hier noch Ansätze für andere Sachen sehe :P Ich hoffe ich nerve hier nun nicht zu sehr, aber was genau bedeutet: - ^V - was genau macht die Funktion "Replace" - und was passiert an dieserr Stelle s := Replace(Text, Succ(SelStart), SelLength, s); Danke marabu! :-D |
Re: Edit: wenn gesamter Inhalt markiert ist, welche Eigensch
Hallo Jürgen,
^V ist eine Notation für Steuerzeichen (Strg+V, #22). Replace() ist einfach eine Funktion, welche mir einen Teil-String über seine Ortsangabe (anstelle seinen Wert) durch einen anderen String ersetzt und das Ergebnis zurück gibt.
Delphi-Quellcode:
Mit dieser Code-Zeile wird genau der im Edit-Control selektierte Text durch den Inhalt von s ersetzt. Succ(SelStart) macht aus einem Offset (0-basiert) einen Index (1-basiert) und das Ergebnis speichere ich wieder in s, weil ich den alten Inhalt eh nicht mehr brauche.
with Sender as TEdit do
s := Replace(Text, Succ(SelStart), SelLength, s); Alles klar? marabu |
Re: Edit: wenn gesamter Inhalt markiert ist, welche Eigensch
Hallo marabu,
danke! Zitat:
Werde mir das aber genauer anschauen sowie ich mehr Ruhe habe. Gruss Jürgen |
Re: Edit: wenn gesamter Inhalt markiert ist, welche Eigensch
Zitat:
greetz Mike |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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 by Thomas Breitkreuz