AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Punkte im TDBEdit entfernen

Ein Thema von Duffy · begonnen am 6. Nov 2005 · letzter Beitrag vom 6. Nov 2005
Antwort Antwort
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#1

Punkte im TDBEdit entfernen

  Alt 6. Nov 2005, 16:15
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
Miniaturansicht angehängter Grafiken
errormsg_104.jpg  
Angehängte Dateien
Dateityp: zip demo_933.zip (494,5 KB, 3x aufgerufen)
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Punkte im TDBEdit entfernen

  Alt 6. Nov 2005, 17:14
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
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#3

Re: Punkte im TDBEdit entfernen

  Alt 6. Nov 2005, 17:34
Hallo marabu,
vielen Dank für Deine Antwort.

TDBEdit kennt aber kein Ereignis "OnGetText". Sehe ich da jetzt was falsch?

bye
Claus
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Punkte im TDBEdit entfernen

  Alt 6. Nov 2005, 17:49
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
  Mit Zitat antworten Zitat
Benutzerbild von Duffy
Duffy

Registriert seit: 19. Mär 2003
Ort: Wuppertal
835 Beiträge
 
Delphi 3 Standard
 
#5

Re: Punkte im TDBEdit entfernen

  Alt 6. Nov 2005, 18:15
Hallo marabu,
stimmt Du hattest Recht. Jetzt geht es. Also vielen Dank.

bye
Claus
Künftige Generationen wollen ihre Fehler selber machen.
Jedes Programm wird nie das können, was Du wirklich brauchst.
Das Gegenteil von gut ist gut gemeint
-----
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:22 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