validate

Klassen, Objekte, Methoden, Instanzen

Moderator: Moderatoren

Antworten
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

validate

Beitrag von Manfred »

Hi,

mir fällt keine bessere Überschrift ein, wenn doch, dann ändere ich sie nachträglich um

Code: Alles auswählen

oBez := SlePic():new(oRahmen,,{120,oRahmen:currentSize()[2]-80},{320,20})
         oBez:bufferLength    := 50
         oBez:tabStop         := .T.
         oBez:keyboard        := {|nKey, uNil, objekt| IF(nKey == xbeK_RETURN, pruefoBez(objekt),NIL)} // hier wird nur die RETURN Taste abgefangen
         oBez:setInputFocus   := {|| oSleHilfe:setcaption("Bezeichnung von max. 50 Zeichen Länge eingeben")}
         oBez:validate        := {|objekt| ValidateSLE(objekt)}
         oBez:dataLink        := {|x| IIf( x==NIL, Trim(oBuchKto:bez), oBuchKto:bez := x)}
         oBez:create():disable()

FUNCTION ValidateSLE(objekt)  <-- warum steht da SLEPic als Objekt drin?
         LOCAL lErfolg := .T.
         MEMVAR oMessage

         IF Empty(objekt:editBuffer)
            oMessage:pflichteingabe()
            lErfolg := .F.
         ENDIF
         RETURN lErfolg
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Ich habe es jetzt mal geändert:

Code: Alles auswählen

oBez := SlePic():new(oRahmen,,{120,oRahmen:currentSize()[2]-80},{320,20})
         oBez:bufferLength    := 50
         oBez:tabStop         := .T.
         oBez:keyboard        := {|nKey, uNil, objekt| IF(nKey == xbeK_RETURN, pruefoBez(objekt),NIL)} // hier wird nur die RETURN Taste abgefangen
         oBez:setInputFocus   := {|| oSleHilfe:setcaption("Bezeichnung von max. 50 Zeichen Länge eingeben")}
         oBez:validate        := {|objekt| ValidateSLE(oBez:editBuffer())}
         oBez:dataLink        := {|x| IIf( x==NIL, Trim(oBuchKto:bez), oBuchKto:bez := x)}
         oBez:create():disable()

FUNCTION ValidateSLE(feld) 
         LOCAL lErfolg := .T.
         MEMVAR oMessage

         IF Empty(feld)
            oMessage:pflichteingabe()
            lErfolg := .F.
         ENDIF
         RETURN lErfolg
so klappt es jetzt, aber warum anders nicht?
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Manfred,
bin mir nicht sicher, aber im ersten Beispiel

Code: Alles auswählen

 oBez:validate        := {|objekt| ValidateSLE(objekt)} 
gibst du da überhaupt was mit ( objekt).Mach dies mal mit dem Debugger und schau was da mitkommt bei

Code: Alles auswählen

FUNCTION ValidateSLE(objekt)
Kommt da nicht der Dialog mit, aber du willst ja nur ein Sle.

Gruss Thomas
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Thomas,
tut er. :D
Schau mal in den Codeblock, dort steht als erster (und einziger) Parameter die Variable objekt. Die wir bei validate mit self belegt. Und da self ein Objekt der Klasse SLEPic ist, taucht dann halt in der Methode, die er aufruft, ein Objekt SLEPic auf.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Muecke
1000 working lines a day
1000 working lines a day
Beiträge: 623
Registriert: Di, 24. Okt 2006 7:19
Wohnort: Samstagern CH
Hat sich bedankt: 3 Mal
Danksagung erhalten: 9 Mal
Kontaktdaten:

Beitrag von Muecke »

Hallo Martin,

Sorry, ich wollte sagen das die Class mitkommt.
Ich hab Dialog geschrieben was natürlich nicht stimmt.

Gruss Thomas
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,

ich hatte aber der Funktion auch oBez mitgegeben, das half auch nichts.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
was heißt, das hilft nichts? Ist doch das gleiche!
Wenn Du das Objekt mitgibst, dann musst Du in der Funktion auf den :EditBuffer() des übergebenen Objektes zugreifen, sofern Du an die Eingabe ran willst.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hm,

ich hoffe ich drücke mich jetzt nicht falsch aus. Also ich habe oBez übergeben und dann auf den editbuffer zugegriffen. Der war aber nicht vorhanden, weil irgendwie slepic übergeben wurde.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
so hätte es eigentlich funktionieren müssen:

Code: Alles auswählen

oBez := SlePic():new(oRahmen,,{120,oRahmen:currentSize()[2]-80},{320,20}) 
         oBez:bufferLength    := 50 
         oBez:tabStop         := .T. 
         oBez:keyboard        := {|nKey, uNil, objekt| IF(nKey == xbeK_RETURN, pruefoBez(objekt),NIL)} // hier wird nur die RETURN Taste abgefangen 
         oBez:setInputFocus   := {|| oSleHilfe:setcaption("Bezeichnung von max. 50 Zeichen Länge eingeben")} 
         oBez:validate        := {|| ValidateSLE([color=red]oBez[/color])} 
         oBez:dataLink        := {|x| IIf( x==NIL, Trim(oBuchKto:bez), oBuchKto:bez := x)} 
         oBez:create():disable() 

FUNCTION ValidateSLE(objekt)
         LOCAL lErfolg := .T. 
         MEMVAR oMessage 

         IF Empty(objekt:editBuffer) 
            oMessage:pflichteingabe() 
            lErfolg := .F. 
         ENDIF 
         RETURN lErfolg
Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Beitrag von Manfred »

Hi Martin,,
ich sage mal pauschal: Strafe muß sein. Ich habe das Beispiel von Günter Beyes, welches er mir vor einiger Zeit in einem Thread gezeigt hat, genommen. Du erinnerst Dich noch? Nun, dass habe ich übernommen um es zu testen und bin natürlich prompt auf die Fresse gefallen, weil ich wohl nicht richtig geschnallt habe, was ich da tat. Ich hatte mir zwar schon überlegt, wozu die Parameterangabe zwischen den || war, aber keine Erklärung dafür gefunden. Dafür aber blind übernommen, was da stand. Tja, kleine Sünden bestraft der liebe Gott sofort.....
Ich habe eben noch nicht so richtig raus, wann es erforderlich ist und wann nicht.
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16508
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Manfred,
eigentlich hätte es auch mit der von Dir zuerst genutzten Variante funktionieren sollen...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten