![]() |
Punkte im TDBEdit entfernen
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo zusammen,
ich rätsele schon seit einiger Zeit mit einem recht trivialem Problem herum. Ich möchte Druck aufbreitete Zahlen wie 1.024.583,50 in ein TDBEdit Eingabefeld per Copy und Paste manuell kopieren ohne anschließend die Punkte zu entfernen. Ich habe es schon mit dem Editformat und ähnlichem versucht. Der letzte Versuch war über das Ereignis “OnChange“ eine Routine in der Form
Delphi-Quellcode:
doch dann sind leider auch die Punkte in der Anzeige weg. Wie gesagt, drehe ich mich da im Moment im Kreis. Ach ja, ich habe auch alle anderen Properties versucht. Leider nur ohne Erfolg.
procedure TMainForm.OnInputChange(Sender: TObject);
var Text: string; begin if not(DBNavigator.DataSource.State in [dsEdit, dsInsert]) then Exit; Text := TDBEdit(Sender).Text; while Pos('.', Text) > 0 do begin Delete(Text, Pos('.', Text), 1); end; TDBEdit(Sender).Text := Text; end; Eine kleine Demo habe ich beigepackt, damit man sieht, was ich meine. Bye Claus |
Re: Punkte im TDBEdit entfernen
Hallo Claus,
deine Anforderungen kannst du sehr einfach mit den Ereignissen OnGetText() und OnSetText() der Feldkomponenten umsetzen. Ich verwende folgenden Code bei Integer Feldern, den du sicher an deine Bedürfnisse anpassen kannst:
Delphi-Quellcode:
Die Funktion Without() liefert einen string zurück, aus dem bestimmte Zeichen entfernt wurden:
procedure TDataForm.IntegerFieldGetText(Sender: TField; var Text: String;
DisplayText: Boolean); begin Text := Format('%.0n', [Sender.AsFloat]); end; procedure TDataForm.IntegerFieldSetText(Sender: TField; const Text: String); begin Sender.AsString := Without(Text, '.'); end;
Delphi-Quellcode:
Grüße vom marabu
function Without(s, chars: string): string;
var i: integer; begin Result := s; if chars <> '' then for i := Length(Result) downto 1 do if Pos(s[i], chars) <> 0 then Delete(Result, i, 1); end; |
Re: Punkte im TDBEdit entfernen
Hallo marabu,
vielen Dank für Deine Antwort. TDBEdit kennt aber kein Ereignis "OnGetText". Sehe ich da jetzt was falsch? bye Claus |
Re: Punkte im TDBEdit entfernen
Suche nicht bei TDBEdit - die Ereignisse gehören zur TField-Komponente. Bei statischen Feldlisten kannst du die Zuweisung des event handlers im Object Inspector vornehmen, bei dynamischen Feldlisten machst du es z.B. im Ereignis OnCreate der Form bzw. des Datenmoduls.
marabu |
Re: Punkte im TDBEdit entfernen
Hallo marabu,
stimmt Du hattest Recht. Jetzt geht es. Also vielen Dank. bye Claus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:22 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-2025 by Thomas Breitkreuz