![]() |
Sicherung (Edit Feld-Button)
Hallöle!
Ich brauch mal eure Hilfe!Bei unserem Schulprojekt fehlt noch eine wichtige Sache und zwar ein Teil der Sicherung für Edit-Felder im Programm.Wenn die Edit Felder leer sind,dann kommt ja der Fehler : '' ist kein Integerwert,sobald man den Berechnen Button klickt. Die bisherige Sicherung:
Delphi-Quellcode:
Also wir wollen noch eine Sicherung haben,die verhindert das gerechnet wird wenn alle 11 edit felder leer sind eine showmessage kommt
// Sicherungen der einzelnen EDIT-Felder
procedure TFRM_Rentenversicherungsnummer.EDT_Z1Exit(Sender: TObject); begin //Fehler keine Eingabe if EDT_Z1.text='' then begin showmessage('Ihre Eingabe fehlt! Bitte geben sie hier eine Ziffer ein!'); EDT_Z1.setfocus; exit; //sonst Fehler beim Lesen aus leeren Editfeldern in der //nächsten if-Abfrage end; //Fehler keine Ziffer if (ord(EDT_Z1.text[1])>57) or (ord(EDT_Z1.text[1])<48) then begin showmessage('Falsche Eingabe, bitte hier eine Ziffer eingeben!'); EDT_Z1.text := ''; EDT_Z1.setfocus; end; end; gruß andre |
Re: Sicherung (Edit Feld-Button)
schreibe eine eigene prozedure z.B. exit_editfeld(Sender:TObject); und dann weist du allen Edit-Feldern bei OnExit diese Prozedure zu.
Mit with Sender as TEdit do... kannst du dann deinen algorithmus verwenden |
Re: Sicherung (Edit Feld-Button)
das problem is nur das wir für delphi nur das wichtigste gelernt haben,unsere kenntnisse sind sehr gering...bis jetzt hab ichs nicht geschafft...
|
Re: Sicherung (Edit Feld-Button)
Liste der Anhänge anzeigen (Anzahl: 1)
also was wir bräuchten wär ne recht einfache methode,hoffe die gibt es
--> wenn ihr das programm runtergeladen habt,gebt erstmal z.B. 19735864G73 ein (das is eine Rentenversicherungsnummer wie sie im Programm eingegeben werden muss/das Programm errechnet dann von der Nummer die Prüfziffer) Nun gebt mal in die ersten beiden Edit Felder Zahlen ein und berechnet dann...anstatt der Meldung wollen wir eine showmessage und natürlich für alle anderen felder auch |
Re: Sicherung (Edit Feld-Button)
Hi,
benutzt doch einfach die Komponente TMaskEdit, unter der Eigenschaft EditMask könnt Ihr voreinstellen was der Benutzer eingeben darf oder auch verhindern, dass nichts in den Feldern steht. |
Re: Sicherung (Edit Feld-Button)
Was verstehst du unter "Sicherung"?
Sicher gehen, dass alle Edit-Felder Zahlen enthalten, oder dass bei falscher Eingabe der alte Wert zurück gesichert, also wieder in das Feld geschrieben wird. Also für die Problematik '' ist kein Integerwert empfiehlt sich evtl. StrToIntDef Für das Sichern der korrekten Werte könnte man ein Array [0..ANZ_EDITFELDER] of string nehmen.
Delphi-Quellcode:
Wenn man das ganze noch mit Mooshead's und bitsetter's Vorschlägen kombiniert wird da ne ganz runde Sache draus ... denke ich.
// Alles ungetestet !!
const ANZ_EDITFELDER := 10; // Weils ja 11 Felder sind und wir bei 0 anfangen zu zählen var SaveValues : array [0..ANZ_EDITFELDER] of string; ... procedure TFRM_Rentenversicherungsnummer.FormCreate (Sender: TObject); begin for i:=0 to ANZ_EDITFELDER do SaveValues[i] := ''; end; procedure TFRM_Rentenversicherungsnummer.EDT_Z1Exit(Sender: TObject); var nTestInt : integer; begin nTestInt := StrToIntDef(EDT_Z1.text,-1); if nTestInt = -1 then begin ShowMessage('Bitte Zahl eingeben'); EDT_Z1.text := SaveValues[1]; end elsebegin SaveValues[1] := EDT_Z1.text; // für EDT_Z0 -> SaveValues[0] ; für EDT_Z8 SaveValues[8] end; end; Ich frage mich allerdings, wie man verhindern will, dass die TMaskEdit's leer sind, denn Defaultwerte sind in dem Fall bestimmt ungünstig. |
Re: Sicherung (Edit Feld-Button)
Hallo,
Zitat:
Delphi-Quellcode:
Erlaubt nur Zahlen zwischen 0- 9 und die 0 ist voreingestellt worden. Der Benutzer wird es hiermit nicht schaffen das Feld zu leeren oder Buchstaben einzugeben.
EditMask:= '!9;1;0';
Zitat:
|
Re: Sicherung (Edit Feld-Button)
Nein. "Muss" er (also der Benutzer) in diesem Fall eben nicht, da der voreinstellte Wert "0" ist.
Er kann also auf den "Prüfsummen berechnen"-Button klicken, ohne irgendeine Eingabe zu machen und die Routine funktioniert. Ähm, @xXcomputerrookieXx: Die "0" wird doch als korrekte Eingabe gewertet, oder? Ich denke es ist eine Frage der Programmierphilosophi. Meiner Ansicht nach müssen beim Programmstart sämtlich Felder leer sein, damit der Benutzer gezwungen wird die richtigen Werte einzugeben. Voreinstellungen mache ich nur, wenn ich sicher bin, dass diese korrekt sind. Aber vielleicht sehe ich das auch zu verbohrt. :cheers: EDIT: Wieso ist mein Code oben eigentlich nicht ge-highlight-et :gruebel: |
Re: Sicherung (Edit Feld-Button)
Liste der Anhänge anzeigen (Anzahl: 1)
hi!
ja die '0' ist eine gültige eingabe in den felder 1-8 sowie 10+11 können alle ziffern verwendet werden. das 9. feld ist ja eine ausnahme,da dort ein buchstabe eingegeben wird,der dann ja mithilfe des ASCII-Code umgewandelt wird und durch eine etwas komplizierte rechung mit quersummen etc. kommt am ende dann die prüfziffer raus. ich hab eure vorschläge an sich verstanden was dann passiert,allerdings hab ich schwierigkeiten das dann in den momentanen quelltext einzufügen. EDIT: quelltext nun als datei,hoffe is richtig |
Re: Sicherung (Edit Feld-Button)
Zitat:
könntest Du den Quellcode bitte als Datei anhängen und dann aus dem Posting entfernen? So scrollt man sich ja die Flossen wund ;-) Danke. |
Re: Sicherung (Edit Feld-Button)
Habe gerade gesehen, dass du für jedes Feld ein onExit Ereignis hat. Besser wäre doch wenn du allen deinen Feldern das gleiche onExit Ereignis im OI zuweist. Das macht den Code viel übersichtlicher, kürzer und Fehler unanfälliger. Deinen Code habe ich mal mit übernommen:
Delphi-Quellcode:
procedure procedure TForm1.Edit1Exit(Sender: TObject);
begin if Sender is TEdit then with Sender as TEdit do begin if Name = 'Edit9' then begin //nur Buchstaben... end else begin//nur Ziffern //Fehler keine Eingabe if text='' then begin showmessage('Ihre Eingabe fehlt! Bitte geben sie hier eine Ziffer ein!'); setfocus; end else//Fehler keine Ziffer if (ord(text[1])>57) or (ord(text[1])<48) then begin showmessage('Falsche Eingabe, bitte hier eine Ziffer eingeben!'); text := ''; setfocus; end; end; end; end; |
Re: Sicherung (Edit Feld-Button)
hi bitsetter!
deine sicherung habe ich ausprobiert,die finde ich echt gut,is viel weniger quelltext! --> allerdings ist dadurch mein eigentliches Problem noch nicht komplett gelöst bevor ich hier noch unnötige zeit verschwende,kann ich wem das projekt schicken der dann die sicherung macht wie er es hier vorgeschlagen hat? weil so komme ich nicht viel weiter,denn wie gesagt meine kenntnisse sind nur gering und wenn ich versuche das so zu programmieren geht vieles nicht gruß, andre |
Re: Sicherung (Edit Feld-Button)
Liste der Anhänge anzeigen (Anzahl: 1)
wer will kann sich das dann bitte mal herunterladen und wenn er es hat mir zukommen lassen
ich hoffe das geht in ordnung,es ist wirklich sehr wichtig und für viele von euch nur sehr wenig arbeit bzw. aufwand |
Re: Sicherung (Edit Feld-Button)
hast du dir mit den vielen edits aber umständlich gemacht...
ich hätte ein edit genommen und dann die einzelnen zeichen mit strtoint(edit1.text[Zeichennummer]) := Zeichen abgefragt |
Re: Sicherung (Edit Feld-Button)
ja bloß das problem war ja eben das wir nur die methode in der schule gelernt haben,sonst hatte ich auch wenig zeit mich genau damit zu befassen...
|
Re: Sicherung (Edit Feld-Button)
Liste der Anhänge anzeigen (Anzahl: 1)
Den Rest schaffst du jetzt bestimmt auch alleine.
|
Re: Sicherung (Edit Feld-Button)
Vielen Dank!
Klappt jetzt super! Gruß, Andre |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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