MsComCt2 - Common Controls - DateTime Picker und MonthList

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

MsComCt2 - Common Controls - DateTime Picker und MonthList

Beitrag von brandelh »

Hallo,

ich habe mal gesucht und diese Datums und Zeitauswahl bzw. Kalenderanzeige gefunden:

HTML-Hilfe Datei: MSCOMCT2.chm http://www.familie-brandel.de/dateien/MSCOMCT2.chm

Code: Alles auswählen

_DateX.PRG
///////////////////////////////////////////////////////////////////////////////
//
//  Vom Xbase++ FormDesigner generierter Klassen Code
//    Erstellt am: 02.09.2008 Zeit: 21:20:44
//
//  Contents  :
//    Diese Datei enth„lt die Implementierungsebene eines Formulares und
//    wird vom Xbase++ FormDesigner automatisch
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: MsComCt2 - Common Controls - DateTime Picker und MonthLi

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: Nun habe ich aber das Problem, dass ich dem Control ein Array für die Anzahl der angezeigten Tage übergeben muß, jeweils mit .t. und .f. Werten (Feiertage, Sonntage, Samstage etc. bold ...)

Aber wie ? Im VB Handbuch steht: object.DayBold(dateIndex As Date) [= value] oder
Occurs when the control is about to display a new range of dates and needs to know which dates should be displayed with a bold font.

Syntax

Sub object_GetDayBold(StartDate As Date, Count As Integer, State As unknown - type)
hm ... schon mal mit

Code: Alles auswählen

aArgs := VTType():new({oDayList}, VT_ARRAY + VT_BOOL )
aArgs := {.T.,.T.,.F.,.F.}
oDayList:DayBold(aArgs)
versucht ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: MsComCt2 - Common Controls - DateTime Picker und MonthLi

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: PS: auch die OLE Farben für Hintergrund und Text sagen mir nix !
AutomationTranslateColor( <nColor>, <lIsOLEColor> ) --> nColor

nOLEColor := AutomationTranslateColor( GRA_CLR_BLUE, .F. )
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: MsComCt2 - Common Controls - DateTime Picker und MonthLi

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben:

Code: Alles auswählen

      * Enthaltene Kontrollelemente
      VAR oDatePicker
      VAR oTimePicker
      VAR oDateShow
      VAR pbEnde
oDayList:DayBold(dDate) := .t. gibt genauso eine Fehlermeldung wie oDayList:DayBold(dDate,.t.)
Tja ich würde sagen : Du hast kein oDayList sondern oDateShow
da oDateShow:DayBold(dDate,.t.) funktioniert. (Naja es passiert
optisch was aber BOLD finde ich ist es nicht ...)
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MsComCt2 - Common Controls - DateTime Picker und MonthLi

Beitrag von brandelh »

AUGE_OHR hat geschrieben:hi,
brandelh hat geschrieben:

Code: Alles auswählen

      * Enthaltene Kontrollelemente
      VAR oDatePicker
      VAR oTimePicker
      VAR oDateShow
      VAR pbEnde
oDayList:DayBold(dDate) := .t. gibt genauso eine Fehlermeldung wie oDayList:DayBold(dDate,.t.)
Tja ich würde sagen : Du hast kein oDayList sondern oDateShow
da oDateShow:DayBold(dDate,.t.) funktioniert. (Naja es passiert
optisch was aber BOLD finde ich ist es nicht ...)
Hi,

genau im Kalender habe ich eine oDateShow und der eine Aufruf funktioniert, aber eben kein Bold ...

Vielen Dank noch wegen der Farben und VTType() werde ich mir auch ansehen ... woher kommt denn das ?
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: MsComCt2 - Common Controls - DateTime Picker und MonthLi

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: ... und VTType() werde ich mir auch ansehen ... woher kommt denn das ?
siehe mal unter AutomationObject() :callMethod() nach.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: MsComCt2 - Common Controls - DateTime Picker und MonthLi

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: funktioniert, aber eben kein Bold ...
Ich habe mir das mal unter VB angesehen und da sieht ein Array Element
so aus :

Code: Alles auswählen


z.b. 06.09.2008

 := {2008,9,6,0,0,0,0}
hab es aber noch nicht in Xbase++ ausprobiert, unter VB wird es BOLD :)

Nachtrag : man kann doch die Anzahl :Row/:Col setzten. Wenn man z.b
einen 3 Monats Kalendar haben möchte muss man ein :start und ein :end
setzen. Das Datum sieht, unter VB, ebenfalls so aus wie das BOLD Array
nur das es eben "nur" 2 Elemente gibt während man im BOLD Array bis
zu 99999 (?) Elemente = Termine aufnehmen könnte...
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

da habe ich ja schneller meinen eigenen Kalender programmiert als mich mit ActiveX rumzuschlagen :(
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

Hi,
brandelh hat geschrieben: da habe ich ja schneller meinen eigenen Kalender programmiert als mich mit ActiveX rumzuschlagen :(
JA, auf jeden Fall ... aber es geht doch "ums lernen" wie man activeX
einsetzt.

Leider komme ich bei dem Datum Array nicht weiter:

Code: Alles auswählen

   aArgs := {2008,10,1,0,0,0,0}
   oDB := VTType():new( aArgs, VT_ARRAY+VT_VARIANT )
   oXbp:DayBold(aArgs)

oError:args         :
          -> VALTYPE: C VALUE: DayBold
          -> VALTYPE: A VALUE: {2008, 10, 1, 0, 0, 0, 0}
oError:canDefault   : J
oError:canRetry     : N
oError:canSubstitute: J
oError:cargo        : NIL
oError:description  : Typkonflikt.
Parameter hat falschen Typ
oError:filename     : NIL
oError:genCode      : NIL
oError:operation    : DayBold
oError:osCode       :          -2147352571
oError:severity     :          2
oError:subCode      :       6500
oError:subSystem    : Automation
oError:thread       :          1
oError:tries        : NIL
ich habe es auch mit VT_ARRAY+VT_DATE versucht.

ich hab da noch etwas was ich nicht verstehe:

Code: Alles auswählen

a.)   oXbp:SetProperty("DayBold", DATE(), .T.)

b.)   oXbp:DayBold( DATE(), .T. )
beide sollten ja das selbe ergeben. Während das 1st "etwas" rausgibt,
bekomme ich beim 2nd eine Fehlermeldung :
oError:args :
-> VALTYPE: C VALUE: DayBold
-> VALTYPE: D VALUE: 20080906
-> VALTYPE: L VALUE: .T.
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Unzul§ssige Parameteranzahl.
Fehlender Parameter in Aufruf
oError:filename : NIL
oError:genCode : NIL
oError:operation : DayBold
oError:osCode : -2147352562
oError:severity : 2
oError:subCode : 6500
oError:subSystem : Automation
oError:thread : 1
oError:tries : NIL
sind die beiden Aufrufe unterschiedlich ... ich "sehe" nichts ?
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

ich vermute des Rätsels Lösung liegt in der Art der Umsetzung.

Unter VB oder .NET sind Datumswerte entweder wie oben 3 Intergerwerte oder ein DateTimeStamp (oder so ähnlich). Weitere Parameter werden dann wohl die 48 (?) angezeigten Tage sein (1 oder 0). Wenn wir nun einen Datumstyp übergeben können und ein Array mit .t./.f. könnte man das ja noch verstehen, aber wer weiß was dazwischen wirklich aus den Parametern wird ...

Außerdem sieht die Dokumentation (OCX...VB...) einmal aus als wäre es eine Methode und einmal als wäre es eine Instanzvariable. Die VB Syntax ist bei uns halt auch nicht anwendbar.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

hi,

könnte es so einfach sein ?

Code: Alles auswählen

iMax  := oXbp:MaxDate - oXbp:MinDate
dDate := DATE()

FOR i := 1 TO iMax
   IF DoW(dDate) = 7
      oXbp:SetProperty("DayBold", dDate , .T.)
   ELSE
      oXbp:SetProperty("DayBold", dDate , .F.)
   ENDIF
   dDate++
NEXT
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

auf der Prof. Sub. CD habe ich eben doch tatsächlich die XbpDPick.ZIP in \ZIPS gefunden. Dort wird es auch mit :SetProperty(...) gemacht.
Außerdem findet man hier den Hinweis auf AutomationTranslateColor(...), mit dem man die Farben umrechnen kann ... (Jimmy hatte das glaube ich aber schon erwähnt).

Erstaunlich was man alles finden kann wenn man die CD genauer ansieht ;-)
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

AUGE_OHR hat geschrieben: IF DoW(dDate) = 7
oXbp:SetProperty("DayBold", dDate , .T.)
ELSE
oXbp:SetProperty("DayBold", dDate , .F.)
ENDIF
[/code]
aber Vorsicht, DOW: Sonntag = 1, Samstag = 7
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi,

der Kalender treibt mich noch zur Weißglut ;-)

Im Yucon Testbeispiel hat es Hannes ohne Probleme geschaft die Samstage und Sonntage BOLD darzustellen.
Somit ist zumindest an einem Beispiel bewiesen, dass er weiß von was er spricht, soweit es ActivX angeht.

Seine Implementation reagiert auf Events und erzeugt welche. Dem GetDate() übergibt er als Parameter neben dem Datum ein Array[12]. Für jeden Monat ein Arrayelement = eine Integerzahl, deren Bits für jeden Tag der Bold gesetzt weden soll gesetzt werden.
Leicht zu verstehen und es funktioniert.
Beim Alaska Beispiel ernte ich beim Aufruf von SetDayBold() nur Parameterfehler. Außerdem muss dies sowieso ein Callback Codeblock sein, da beim Blättern der Anzeige ja neue Infos angefordert werden müssen.
Mit PowerBasic habe ich es bis jetzt aber auch nicht hinbekommen.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Beitrag von AUGE_OHR »

Hi,
brandelh hat geschrieben: Im Yucon Testbeispiel hat es Hannes ohne Probleme geschaft die Samstage und Sonntage BOLD darzustellen.
das zeigt mal wieder das die Xbase++ activeX Schnittstelle doch leider
ziemlich "beschränkt" ist. Schon unter JazzAge gingen einige Beispiele
wo jetzt v1.9x "versagt" ...

das war ja auch mit der Grund warum ich den Thread "nicht funktionierende"
activeX eröffnet habe, den nur wenn wir mit einer "Liste" und Beispielen
ankommen schaffen wir es vielleicht unseren "Wunsch" so viel Ausdruck
zu verleihen das Alaska an der Stelle nochmal "nachbessert".
gruss by OHR
Jimmy
Antworten