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 Punkte im TDBEdit entfernen (https://www.delphipraxis.net/56477-punkte-im-tdbedit-entfernen.html)

Duffy 6. Nov 2005 15:15


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:
 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;
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.

Eine kleine Demo habe ich beigepackt, damit man sieht, was ich meine.

Bye
Claus

marabu 6. Nov 2005 16:14

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:
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;
Die Funktion Without() liefert einen string zurück, aus dem bestimmte Zeichen entfernt wurden:

Delphi-Quellcode:
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;
Grüße vom marabu

Duffy 6. Nov 2005 16:34

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

marabu 6. Nov 2005 16:49

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

Duffy 6. Nov 2005 17:15

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 14:28 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