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 ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuweisen (https://www.delphipraxis.net/57834-validateedit-zur-laufzeit-eigenschaft-displayformat-zuweisen.html)

Rolf Rostig 27. Nov 2005 13:20


ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuweisen
 
Hallo,

ich möchte zur Laufzeit der Komponente JvValidateEdit die Eigenschaft DisplayFormat zuweisen, so geht´s nicht:

Code:
JvValidateEdit1.DisplayFormat := 'dfCurrency';

Wer hat für mich die Lösung?

marabu 27. Nov 2005 13:35

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Lass die Apostrophe weg, Rolf.

Grüße vom marabu

Rolf Rostig 27. Nov 2005 15:29

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Danke, das war ja einfach.

Aber ich stehe immer noch auf dem Schlauch.
Den Wert für DisplayFormat hole ich aus einer DB.

Delphi-Quellcode:
with myQuery do
...
for i := 1 to 25 do
 TJvValidateEdit(myForm1.FindComponent('JvValidateEdit' + IntToStr(i))).DisplayFormat:=         TJvValidateEditDisplayFormat(Fields[i]);
...
Es gibt keine Fehlermeldungen.
Aber es funktioniert nicht. Ich kann während der Laufzeit auch keine Daten in die Edits eingeben.

marabu 27. Nov 2005 16:30

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Diesmal hast du etwas weg gelassen und ich habe es hinzugefügt:

Delphi-Quellcode:
 ....DisplayFormat := TJvValidateEditDisplayFormat(Fields[i].AsInteger);
marabu

Rolf Rostig 27. Nov 2005 16:56

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Das geht leider auch nicht. In meinem DB-Textfeld steht ja z.B. dfCurrency.
Also bekomme ich die Fehlermeldung: dfCurrency ist kein gültiger Integerwert. :(

marabu 27. Nov 2005 19:13

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Hallo Rolf,

hast du denn den Namen der Konstante in der Datenbank verewigt? Das ist sehr ungewöhnlich. Normalerweise speichert man Zahlenwerte, die sich dann viel leichter handhaben lassen. Wenn du das ändern kannst, dann solltest du das tun. Wenn nicht, dann musst du jetzt aus dem String 'dfCurrency' wieder einen passenden Zahlenwert erzeugen:

Delphi-Quellcode:
{
type
  TJvValidateEditDisplayFormat = (dfAlphabetic, dfAlphaNumeric, dfBinary,
    dfCheckChars, dfCurrency, dfCustom, dfFloat, dfHex, dfInteger,
    dfNonCheckChars, dfNone, dfOctal, dfPercent, dfScientific, dfYear);
}

uses
  JvValidateEdit;

function StrToDisplayFormat(s: string): TJvValidateEditDisplayFormat;
begin
  s := Lowercase(s);
  if s = 'dfalphabetic' then Result := dfAlphabetic else
  // ... fill in the blanks
  if s = 'dfcurrency' then Result := dfCurrency else
  // ... else
  Result := dfYear;
end;
marabu

Rolf Rostig 27. Nov 2005 20:13

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Hallo marabu,

vielen Dank für deine Hilfe. :-D

Mir war gar nicht klar, das hinter dfCurrency ein Integerwert steckt.
Ich stelle es jetzt in der DB um, das ist einfacher.

Sharky 27. Nov 2005 21:02

Re: ValidateEdit zur Laufzeit Eigenschaft DisplayFormat zuwe
 
Zitat:

Zitat von Rolf Rostig
... Mir war gar nicht klar, das hinter dfCurrency ein Integerwert steckt.

Hai Rolf,

am einfachsten kann man das erkennen wenn man einfach bei getrückter Strg-Taste mit der Maus auf den Wert geht, die rechte Maustaste drückt und dann "Deklaration suchen" auswählt.

In diesem Fall hättest Du dann gesagt das hinter TJvValidateEditDisplayFormat ein Aufzählungstyp steckt. Alles was dort dann deklariert ist wird von Delphi einfach mit 0 beginnend gezählt (Über die Funktion Delphi-Referenz durchsuchenOrd bekommt man die "Position" in dem Aufzählungstyp.

Delphi-Quellcode:
type
  mydemoTyp = (blubb,meow,delphipraxis);

procedure TDemoForm.btn_DemoClick(Sender: TObject);
var
  foo : myDemoTyp;
begin
  foo := blubb;
  ShowMessageFmt('blubb ist Eintrag Nummer %d',[Ord(foo)]);
  foo := delphipraxis;
  ShowMessageFmt('delphipraxis ist Eintrag Nummer %d',[Ord(foo)]);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:15 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