Datefield im Dialog begrenzen, dann next Seite freischalten

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Datefield im Dialog begrenzen, dann next Seite freischalten

Beitrag von balu »

Tach Liebe Gemeinde.

Also, ich hab einen Mehrseitigen Dialog erstellt der so weit funktioniert. Jetzt möchte ich aber die 1. Seite davon als eine unbedingt MUSS Aktivierung schalten. Das heißt, erst wenn man einen Namen UND ein Datum ausgewählt hatt, dann wird die nächste Seite freigeschaltet. Das wäre ja eigentlich so weit kein Problem, wenn ich nicht noch ganz besondere Bedingungen stellen würde.

Und diese besonderen Bedingungen lauten:

1.
Es muss ein Name ausgewählt werden.

2.
Das Datefield soll nur einen begrenzten Zeitraum, einen vorher bestimmten Monat, zur Auswahl anbieten. Und wenn man versucht ein Datum außerhalb davon auszuwählen, so soll das Datumsfeld leer bleiben und die Freischaltung wird verweigert. Erst wenn das Datum im richtigem Monat ist, darf es weitergehen.

3.
Wenn alles Korrekt ist, wird Name und Datum in daneben stehenden Labeln eingetragen. Quasi als sichtbare Bestätigung das alles in Ordnung ist.

Und mit dem 2. Punkt habe ich nun meine Probleme.
Ich dachte mir, erstelle zu erst einmal in einer Calc-Tabelle die Grundvoraussetzungen für das Datefield. Also:
- Jahr
- Monat
- Mindesdatum; in Datefield gerechter Schreibweise
- Maximaldatum; in Datefield gerechter Schreibweise
Alles kein Problem.

Aber ich bekomme es nicht hin, den Code so zu erstellen dass das Datum begrenzt wird. Und auch nicht das "blockieren" (Datumsfeld leer) bei falsch eingabe.

Diese ganze "Prozedur" habe ich in einer eigenen Sub geschrieben (zumindest versucht). Und auf das Datefield habe ich diese Sub bei *Text modifiziert* gelegt. Es wird also der Dialog gestartet, und bei klick des Datefields wird der ganze Prozess in die Wege geleitet. Das Dumme ist nur, irgendwie oder wo habe ich da was nicht richtig, da ich immer an einer Stelle eine Fehlermeldung bekomme.
Aktion nicht unterstüzt.
Ungültiger Prozeduraufruf.
Habe 2 Dateien angehängt, eine ohne die Datumsbegrenzung "SIMPELTEST_5_9.ods" so wie es rein theoretisch sein soll, und die andere mit der Begrenzung "SIMPELTEST_6_0.ods" die nicht wirklich funktioniert.


Kann mir jemand bei der Beseitigung meines Problems behilflich sein?
Würde mich wirklich sehr darüber freuen :D.

Bedanke mich schon mal für eure Bemühungen, und wenns auch nur für das lesen ist.


Gruß
balu
Dateianhänge
SIMPELTEST_6_0.ods
(14.99 KiB) 54-mal heruntergeladen
SIMPELTEST_5_9.ods
(11.08 KiB) 53-mal heruntergeladen
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Datefield im Dialog begrenzen, dann next Seite freischal

Beitrag von turtle47 »

Hallo mein lieber Freund Balu,

heute ist wohl nicht Dein Tag. Oder?


Der erste Fehler in Deinem Code ist, dass Du eine falsche Zelle

Code: Alles auswählen

mycellD2 = osheet0.getCellRangeByName("B7")
abgefragt hast, die überhaupt keinen Inhalt hat.



Der zweite Fehler ist, dass Du die Datumeingrenzung für das Datefield nach dem Dialogaufruf setzten wolltest. Das muss vor dem Dialogaufruf schon geschehen.

In der beigefügten Beispieldatei ist nur möglich innerhalb des definierten Zeitraums ein Datum auszuwählen, ansonsten wird das Min- bzw. Maxdatum angezeigt.

Ich hoffe es war in Deinem Sinne das Datum der besseren Lesbarkeit wegen als Text zu übergeben.

Code: Alles auswählen

oLabelDate.text = oDatum.text

Schönes Wochenende.

Jürgen

Edit: Habe gerade noch gesehen

Code: Alles auswählen

 oDialog1.endexecute
Wozu soll das gut sein?
Dateianhänge
SIMPELTEST_6_1.ods
(15.8 KiB) 60-mal heruntergeladen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Datefield im Dialog begrenzen, dann next Seite freischal

Beitrag von balu »

Hallo mein lieber Freund Jürgen,
heute ist wohl nicht Dein Tag. Oder?
Nicht Tag, sondern Plural - *Tage*!
Kaum hab ich ein Problem weniger, liegt das nächste schon auf der Lauer *grrrr*.

Der erste Fehler in Deinem Code ist, dass Du eine falsche Zelle
[...]
abgefragt hast, die überhaupt keinen Inhalt hat.
Das ist nicht so wie Du denkst, dat war nur n Tüypfähler :lol:.


Der zweite Fehler ist, dass Du die Datumeingrenzung für das Datefield nach dem Dialogaufruf setzten wolltest. Das muss vor dem Dialogaufruf schon geschehen.
Ja okay. Das wusste ich wirklich nicht.
Weil es aber in der anderen Datei "funktionierte", ich meine das Datefield aufrufen, hatte ich falsch gedacht das ich dann dort die Begrenzung machen kann. Aber nun gut, das werd ich mir merken.

Ich hoffe es war in Deinem Sinne das Datum der besseren Lesbarkeit wegen als Text zu übergeben.
Jetzt verwirrst Du mich aber.
Denn ich seh im Label keinen unterschied zwischen deiner und meiner Codezeile. :roll:

Code: Alles auswählen

	oLabelDate.text = oDatum.text

	oLabelDate.text = CDateFromIso(oDatum.Date) ' <- meine Version
In beiden Fällen wird beispielsweise 02.04.2011 angezeigt. Also fürs Label wär es ja nicht weiter tragisch, aber in der fertigen Datei kann ich mit der Datumsangabe als Text nichts anfangen, da es dort in der Tabelle weiter verarbeitet wird. Deshalb mache ich diese Umwandlung gleich im Makro.

Oder hat das etwas mit deinem zusätzlichen eingefügten Modul (Module2 Sub ExampleDateValue) zu tun? Nun bin ich noch verwirrter :roll:


In der beigefügten Beispieldatei ist nur möglich innerhalb des definierten Zeitraums ein Datum auszuwählen, ansonsten wird das Min- bzw. Maxdatum angezeigt.
Ja, sorry. Aber das wollte ich ja vermeiden, das dann das Min,- beziehungsweise das Maxdatum eines Monats genommen wird. Ich möchte das dann gar nichts angezeigt wird und es nicht zur nächsten Seite weitergehen kann. Aber mal schaun, vielleicht bekomme ich es ja jetzt selber hin. Und wenn nicht, meld ich mich wieder.

Edit: Habe gerade noch gesehen

Code: Alles auswählen

 oDialog1.endexecute
Wozu soll das gut sein?
Macht der Gewohnheit. Er ist beim hin- und herkopieren mit rein gerutscht. In der fertigen Datei brauche ich es aber.


Ich danke dir vielmals für deine Hilfe und Unterstützung. :D


Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
Antworten