Jahresübersicht Calender

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Jahresübersicht Calender

Beitrag von AUGE_OHR »

hi,

mir fällt auf das mein Outlook Calender Clone keine Jahresübersicht hat ... das original aber auch nicht ...

nun überlege ich wie das wohl aussehen könnte ... bei 12 x 31 ist ja auch nicht viel Platz.
bei 12 Row passen ca. 2-3 "lesbare" Item ... wenn ich alle (Höhe = 1 Pixel) darstelle dauert das ewig.

bislang nehme ich
1.) Wochentag
2.) Geburtstage
3.) Feiertage
4.) ganztägige Events

und so sieht das aus ... aber es gefällt mir nicht ...
Ocal_Jahr_1.JPG
Ocal_Jahr_1.JPG (117.88 KiB) 6305 mal betrachtet
zu 1.) Wochentag muss wohl sein ... aber es nimmt 1/4 der Cell in Anspruch
die Farben der Tage ... sind ja zwar anpassbar ... trotzdem "zu viel"

2.) habe schon auf Initialen gekürzt. Farbe hilft

3.) alle oder nur die gesetzlichen ... kennt man deshalb leicht zu identifizieren

4.) tja ... bei nur 3-4 Zeichen ...

Tooltip bringt es auch nicht, den mit ENTER komme ich ja (schneller) zur Information ( Tagesansicht) ...

Vorschläge erbeten wie man ein "klareres" Design hin bekommt.
gruss by OHR
Jimmy
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Jahresübersicht Calender

Beitrag von Tom »

Hallo, Jimmy.

1. Ich würde in einer Jahresübersicht nur die Anzahl der Termine anzeigen, keine Inhalte. Ggf. wären noch mehrere Anzahlen möglich, wenn es qualitativ unterschiedliche Termine gibt, etwa "richtige" Termine, Geburtstage, Urlaube (Ganztagstermine) usw. Mit einem Klick/Doppelklick auf den Tag sieht man dann die Termine, oder über ein überlagertes Fensterchen.

2. Die Spaltenüberschriften sollten die Tagesnummern sein, so dass die Tabelle immer mit "1." beginnt. Die Wochentage würde ich ganz weglassen und durch die farbliche Darstellung der Zellen verdeutlichen, also Wochenendtage mit einer anderen Hintergrundfarbe, dito für Feiertage.
Herzlich,
Tom
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Jahresübersicht Calender

Beitrag von azzo »

Hallo Jimmy,
Ich habe eine Klasse für einen Jahresplaner (FW).

Bild

Mich würde mal interessieren, ob man mit xBase selbst auch Klassen machen kann.
Glaubst du man könnet diese Klasse einfach auf xBase umändern?

mfg
Otto

Code: Alles auswählen


function Main() 

   local oWnd, oPickDate 

   SET DATE FRENCH 

   DEFINE WINDOW oWnd TITLE "Calendar" 

   oPickDate := TPickDate():New( 10, 10,,, oWnd ) 

   oPickDate:bSelect = { | dStart, dEnd | MsgInfo( Str( dEnd - dStart + 1 ) + " days" ) } 
   oPickDate:bPainted = { | hDC, dStart, dEnd | ; 
                          oPickDate:Say( 17, 20, Str( dEnd - dStart + 1 ) + " days",,,, .T., .T. ) } 

   oWnd:oClient = oPickDate 

   ACTIVATE WINDOW oWnd MAXIMIZED  
      //ON INIT TestDialog() 
    
return nil 

//----------------------------------------------------------------------------// 

function TestDialog() 

   local oDlg, oPickDate 
    
   DEFINE DIALOG oDlg RESOURCE "Test" 
    
   oPickDate = TPickDate():Redefine( 10, oDlg ) 

   oPickDate:bSelect = { | dStart, dEnd | MsgInfo( Str( dEnd - dStart + 1 ) + " days" ) } 
    
   ACTIVATE DIALOG oDlg CENTERED 
    
return nil    

//----------------------------------------------------------------------------// 


CLASS TPickDate FROM TControl 

   DATA   dStart, dEnd, dTemp, lMove 
   DATA   nYear 
   DATA   oBrushSunday, oBrushSelected, oFontHeader 
   DATA   nLeftStart, nTopStart 
   DATA   bSelect ,oBitmap,oBitmap2,oBitmap3,oBitmap4

   CLASSDATA lRegistered AS LOGICAL 

   METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, nYear, nClrFore, nClrBack ) 
   METHOD Redefine( nId, oWnd ) 
   METHOD Paint() 
   METHOD Display() INLINE ::BeginPaint(), ::Paint(), ::EndPaint(), 0 
   METHOD Destroy() 
   METHOD LButtonDown( nRow, nCol, nKeyFlags ) 
   METHOD LButtonUp( nRow, nCol, nKeyFlags ) 
   METHOD PreviousYear() INLINE ::nYear--, ::Refresh() 
   METHOD NextYear() INLINE ::nYear++, ::Refresh() 
   METHOD EraseBkGnd( hDC ) INLINE 0 
   METHOD MouseMove( nRow, nCol, nKeyFlags ) 

ENDCLASS 

//----------------------------------------------------------------------------// 

METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, nYear, nClrFore, nClrBack ) CLASS TPickDate 

   DEFAULT nWidth  := 800,; 
           nHeight := 300,; 
           nLeft   := 0,; 
           nTop    := 0,; 
           nYear   := Year( Date() ),; 
           oWnd    := GetWndDefault() 
 	DEFINE BITMAP ::oBitmap FILE "go.bmp"
	DEFINE BITMAP ::oBitmap2 FILE "go2.bmp"   
	DEFINE BITMAP ::oBitmap3 FILE "go3.bmp"   
	DEFINE BITMAP ::oBitmap4 FILE "go4.bmp"   
	
   ::lMove      = .F. 
   ::nTopStart  = 60                           // for header 
   ::nLeftStart = 150                          // col header 

   ::nTop       = nTop 
   ::nLeft      = nLeft 
   ::nBottom    = nTop + nHeight - 1 
   ::nRight     = nLeft + nWidth - 1 
   ::nYear      = Year( Date() ) 
   ::oWnd       = oWnd 

   ::dStart := ::dEnd := ::dTemp := Date() 

   ::nClrText   = nClrFore 
   ::nClrPane   = nClrBack 
   ::nStyle     = nOr( WS_CHILD, WS_VISIBLE, WS_TABSTOP, WS_BORDER ) 
    
   DEFINE BRUSH ::oBrushSunday COLOR nRGB( 183, 249, 185 ) // Sundays column green brush 
   DEFINE BRUSH ::oBrushSelected COLOR nRGB( 240, 232, 188 ) // Selected days orange brush 

   DEFINE FONT ::oFont NAME "Tahoma" SIZE 0, -12 BOLD 
   DEFINE FONT ::oFontHeader NAME "Tahoma" SIZE 0, -12 

   #ifdef __XPP__ 
      DEFAULT ::lRegistered := .F. 
   #endif 

   ::Register() 

   if ! Empty( oWnd:hWnd ) 
      ::Create() 
      oWnd:AddControl( Self ) 
   else 
      oWnd:DefControl( Self ) 
   endif 

return self 

//----------------------------------------------------------------------------// 

METHOD Redefine( nId, oWnd ) CLASS TPickDate 

   DEFAULT oWnd := GetWndDefault() 
    
   ::nId        = nId 
   ::oWnd       = oWnd 
   ::lMove      = .F. 
   ::nTopStart  = 60                           // for header 
   ::nLeftStart = 150                          // col header 
   ::dStart := ::dEnd := ::dTemp := Date() 
   ::nYear      = Year( Date() ) 

   DEFINE BRUSH ::oBrushSunday COLOR nRGB( 183, 249, 185 ) // Sundays column green brush 
   DEFINE BRUSH ::oBrushSelected COLOR nRGB( 240, 232, 188 ) // Selected days orange brush 

   DEFINE FONT ::oFont NAME "Tahoma" SIZE 0, -12 BOLD 
   DEFINE FONT ::oFontHeader NAME "Tahoma" SIZE 0, -12 
    
   ::SetColor( 0, 0 ) 
    
   ::Register()    

   oWnd:DefControl( Self ) 
    
return Self 

//----------------------------------------------------------------------------// 

METHOD Paint() CLASS TPickDate 
  
   local aInfo := ::DispBegin() 
   local hDC := ::hDC, cDay, nDay, n, dDate, nColStep, nRowStep 
   local dTmpDate, nMonth := 0, nLeftCol := 0 

   FillRect( hDC, GetClientRect( ::hWnd ), ::oBrush:hBrush ) 

   nRowStep = ( ::nHeight - ::nTopStart ) / 13 

   GradientFill( hDC, 0, 0, ::nHeight, ::nWidth, { { 1, nRGB( 128, 217, 255 ), nRGB( 54, 147, 255 ) } } ) 

   dDate = CToD( "01/01/" + Str( ::nYear, 4 ) ) 
   dDate += 8 - DoW( dDate ) 

   nColStep = ( ::nWidth - ::nLeftStart ) / 37 

   GradientFill( hDC, 0, 0, nRowStep - 1, ::nWidth, { { 1, nRGB( 128, 217, 255 ), nRGB( 54, 147, 255 ) } } ) 

   ::Say( ( ::nTopStart  + ( nRowStep / 2 ) - ( ::oFont:nHeight / 2 )),; 
          ( ( ::nLeftStart + nColStep ) / 2 ) - ( GetTextWidth( hDC, Str( ::nYear, 4 ), ::oFont:hFont ) / 2 ),; 
          Str( ::nYear, 4 ),,, ::oFont, .T., .T. ) 

   // Paint Sunday background color 
   for n = 1 to 36 step 7 
      FillRect( hDC, { 0, ::nLeftStart + ( nColStep * n ),; 
                ::nHeight - 1, ::nLeftStart + ( nColStep * ( n + 1 ) ) }, ::oBrushSunday:hBrush ) 
   next 

   for nMonth = 1 to 12 
      ::Line( ::nTopStart + nMonth * nRowStep, 0,(::nTopStart  + nMonth * nRowStep), ::nWidth - 1 ) 
   ::Say( ::nTopStart + nMonth * nRowStep + ( nRowStep / 2 ) - ( ::oFont:nHeight / 2 ), 3, cMonth( RegionDate(nMonth, Str( Year( Date() ), 4 )))   ,,, ::oFont, .T., .T. ) 
   next 

   // fill selected days 
   if ::lMove 
      dTmpDate = Min( ::dStart, ::dEnd ) 

      while dTmpDate <= Max( ::dStart, ::dEnd ) 
         nMonth = Month( dTmpDate ) 
         nLeftCol = ::nLeftStart + ( nColStep * ( DOW( RegionDate( nMonth, Str( ::nYear, 4 ) ) ) ) ) + ; 
                    nColStep * ( Day( dTmpDate ) - 1 ) 
         FillRect( hDC, { ::nTopStart + month(dTmpDate) * nRowStep + 1,; 
                   nLeftCol, ::nTopStart + Month( dTmpDate ) * nRowStep + nRowStep,; 
                   nLeftCol + nColStep}, ::oBrushSelected:hBrush ) 

         dTmpDate++ 
      end 

   endif 

   // Draw days 
   for n = 1 to 36 
      ::Line( 0, ::nLeftStart + ( nColStep * n ), ::nHeight - 1, ::nLeftStart + ( nColStep * n ) ) 
      cDay = SubStr( CDoW( dDate++ ), 1, 2 ) 

      ::Say( ( ::nTopStart + nRowStep * 0.4 ),; 
         ::nLeftStart + ( nColStep * n ) + ( nColStep / 2 ) - ( GetTextWidth( hDC, cDay, ::oFont:hFont ) / 2 ) + 1,; 
         cDay, 0, 0, ::oFont, .T., .T. ) 
   next 

   // Draw months 
   for nMonth = 1 to 12 
      dDate = RegionDate(nMonth,Str( ::nYear, 4 ) ) 
      nDay = DoW( dDate ) 

      while Month( dDate ) == nMonth 
         cDay = AllTrim( Str( Day( dDate ) ) ) 
         ::Say( ( ::nTopStart  + nMonth * nRowStep  ),; 
            ::nLeftStart + ( nColStep * nDay ) + ( nColStep / 2 ) - ( GetTextWidth( hDC, cDay, ::oFont:hFont ) / 2 ) + 1,; 
            cDay, 0, 0, ::oFontHeader, .T., .T. ) 
         
      
         
                      
  ::SayBitmap( ( ::nTopStart  + nMonth * nRowStep + ( nRowStep * 0.4 ) ),;
 ::nLeftStart + ( nColStep * nDay++ ) + ( nColStep / 6 ) - ( GetTextWidth( hDC, cDay, ::oFont:hFont ) / 2 ) + 1, ::oBitmap2 , , 1 )             

         
         dDate++ 
      end 
   next 

   if ValType( ::bPainted ) == "B" 
      Eval( ::bPainted, hDC, Min( ::dStart, ::dEnd ), Max( ::dStart, ::dEnd ), Self ) 
   endif    

   ::DispEnd( aInfo ) 

return 0 

//----------------------------------------------------------------------------// 

METHOD Destroy() CLASS TPickDate 

   ::oBrushSunday:End() 
   ::oBrushSelected:End() 
   ::oFontHeader:End() 
    
return Super:Destroy() 

//----------------------------------------------------------------------------// 

METHOD LButtonDown( nRow, nCol, nKeyFlags ) CLASS TPickDate 

   local nMonth := Int( ( nRow - ::nTopStart ) / ( ( ::nHeight - ::nTopStart ) / 13 ) ) 
   local nDay   := Int( ( nCol - ::nLeftStart ) / ( ( ::nWidth - ::nLeftStart ) / 37 ) ) - ; 
                   DoW( RegionDate( nMonth, Str( ::nYear, 4 ) ) ) + 1 

   if nDay > 0 .and. nMonth > 0  // to work with valid dates only 
      ::dStart := CToD( AllTrim( AllTrim( Str( nDay ) )+ "/"  + Str( nMonth ) )  + "/" + Str( ::nYear, 4 ) ) 
      ::lMove  := .T. 
      ::Refresh( .F. ) 
   endif 

return Super:LButtonDown( nRow, nCol, nKeyFlags ) 

//-----------------------------------------------------------------// 

METHOD LButtonUp( nRow, nCol, nKeyFlags ) CLASS TPickDate 

   if ValType( ::bSelect ) == "B" 
      Eval( ::bSelect, Min( ::dStart, ::dEnd ), Max( ::dStart, ::dEnd ), Self ) 
   endif    

   ::lMove := .F. 
    
return Super:LButtonUp( nRow, nCol, nKeyFlags ) 

//-----------------------------------------------------------------// 

METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS TPickDate 
  
   local nMonth := Int( ( nRow - ::nTopStart ) / ( ( ::nHeight - ::nTopStart ) / 13 ) ) 
   local nDay   := Int( ( nCol - ::nLeftStart ) / ( ( ::nWidth - ::nLeftStart ) / 37 ) ) - ; 
                   DoW( RegionDate( nMonth, Str( ::nYear, 4 ) ) ) + 1 
   local dEnd                

   if nDay > 0 .and. nMonth > 0  // to work with valid dates only 
      dEnd = CToD( AllTrim( Str( nDay ) ) + "/" + AllTrim( Str( nMonth ) ) + "/" + Str( ::nYear, 4 ) ) 

      if ! Empty( dEnd ) .and. dEnd != ::dTemp     // for reducing continuous refreshes 
         ::dTemp := dEnd 
         ::dEnd = dEnd 
         ::Refresh( .F. ) 
         if ValType( ::bChange ) == "B" 
            Eval( ::bChange, Min( ::dStart, ::dEnd ), Max( ::dStart, ::dEnd ), Self ) 
         endif    
      endif 
   endif    

return Super:MouseMove( nRow, nCol, nKeyFlags ) 

//-----------------------------------------------------------------// 

function RegionDate( nMonth, cYear ) 

return CToD( "01/" + AllTrim( Str( nMonth ) ) + "/" +  cYear ) 


Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Jahresübersicht Calender

Beitrag von AUGE_OHR »

azzo hat geschrieben:Ich habe eine Klasse für einen Jahresplaner (FW).

Mich würde mal interessieren, ob man mit xBase selbst auch Klassen machen kann.
Glaubst du man könnet diese Klasse einfach auf xBase umändern?
wieso nicht, das ist doch "nur" eine XbpMultiCellGroup() wie dieses Beispiel von Diego zur Auswahl eines Datums. ( Monatsansicht )
CALENDAR.zip
(4.78 KiB) 268-mal heruntergeladen
im Prinzip hab ich das Demo aufgebohrt mit Ownerdraw und verwende is in 4 Ansichten ( Tag, Woche, Monat, Jahr )
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Jahresübersicht Calender

Beitrag von AUGE_OHR »

Tom hat geschrieben:1. Ich würde in einer Jahresübersicht nur die Anzahl der Termine anzeigen, keine Inhalte.
ja die "Anzahl" wäre eine Möglichkeit
Tom hat geschrieben:Ggf. wären noch mehrere Anzahlen möglich, wenn es qualitativ unterschiedliche Termine gibt, etwa "richtige" Termine, Geburtstage, Urlaube (Ganztagstermine) usw.
ok könnte man auch durch Icon oder Farben machen.
Tom hat geschrieben:Mit einem Klick/Doppelklick auf den Tag sieht man dann die Termine, oder über ein überlagertes Fensterchen.
ja das habe ich default
Tom hat geschrieben:2. Die Spaltenüberschriften sollten die Tagesnummern sein, so dass die Tabelle immer mit "1." beginnt. Die Wochentage würde ich ganz weglassen und durch die farbliche Darstellung der Zellen verdeutlichen, also Wochenendtage mit einer anderen Hintergrundfarbe, dito für Feiertage.
hm ... Hintergrundfarbe ... ob das nicht wieder zu bunt wird ?

ich habe es nun mit "nur" einem Punkt versucht, zusätzlich wird am So. die KW angezeigt ( jaja müsste eigentlich Mo. sein ... ) und die 7 Tage dazwischen wird man wohl identifizieren können.

weitere Vorschläge / Ideen willkommen, danke
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2825
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 96 Mal
Danksagung erhalten: 13 Mal

Re: Jahresübersicht Calender

Beitrag von georg »

AUGE_OHR hat geschrieben: ich habe es nun mit "nur" einem Punkt versucht, zusätzlich wird am So. die KW angezeigt ( jaja müsste eigentlich Mo. sein ... ) und die 7 Tage dazwischen wird man wohl identifizieren können.

weitere Vorschläge / Ideen willkommen, danke
Hallo, Jimmy -


das ist aber doch richtig, da der Sonntag der erste Tag der Woche ist. Unser Samstag entspricht dem jüdischen Sabbat, und das ist der siebte Tag der Woche. Andernfalls wäre auch der Mittwoch nicht mehr die Mitte der Woche ...


Gruss,

Georg
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Jahresübersicht Calender

Beitrag von Wolfgang Ciriack »

Bei uns ist aber Montag der 1. Tag der Woche.
Viele Grüße
Wolfgang
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Jahresübersicht Calender

Beitrag von azzo »

Hallo Jimmy,
>und so sieht das aus ... aber es gefällt mir nicht
Hast du die exe auch als Download.
mfg
Otto
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Jahresübersicht Calender

Beitrag von AUGE_OHR »

azzo hat geschrieben:Hast du die exe auch als Download.
meinst du jetzt den Outlook Clone ?

Das ganze gibt es als LIB zum einbinden in seine eigene Xbase++ Application, deshalb sind Farben und Menutexte in DBF´s zum konfigurieren.
Ich muss nun "diese" Version noch fertig stellen dann werde ich das Teil uploaden.
Dateianhänge
Ocal_Jahr_2.JPG
Ocal_Jahr_2.JPG (100.97 KiB) 6182 mal betrachtet
gruss by OHR
Jimmy
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Jahresübersicht Calender

Beitrag von azzo »

Hallo Jimmy,
Ist der Sourcecode in der zip-Datei vom Wochenplan.
Ich habe nicht herausgefunden, ob man den Plan stufenlose vergrößern oder
verkleinern kann.
Wenn ich den Code richtig verstehe werden hier eine Reihe von get Objekten verwendet.
Funktioniert der Bildschirmaufbau und das Neuzeichnen schnell.
Mfg
Otto
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Jahresübersicht Calender

Beitrag von AUGE_OHR »

azzo hat geschrieben:Ist der Sourcecode in der zip-Datei vom Wochenplan.
Ich habe nicht herausgefunden, ob man den Plan stufenlose vergrößern oder
verkleinern kann.
Wenn ich den Code richtig verstehe werden hier eine Reihe von get Objekten verwendet.
Funktioniert der Bildschirmaufbau und das Neuzeichnen schnell.
aha ... du meinst den Source von Diego.

Code: Alles auswählen

      oCal := XbpMultiCellGroup():new( oDrawing,, { 0, 20 }, { 175, 114 } )
         oCal:maxCol := 7
         oCal:maxRow := 6
bei dem Hauptteil handelt es sich um eine XbpMultiCellGroup().
du kannst zwar die Grösse verändern aber du musst auch (manuell) die Anpassungen der Columne mit

Code: Alles auswählen

      oCal:setColWidth( xx )
vornehmen.

es ist eben nicht ein XbpBrowse() was sich um so was kümmert sondern 1 Etage tiefer der direkte Zugriff auf jede einzelne Cell.
mit Ownerdraw habe ich nun über jede Cell die Kontrolle "wie" die aussehen soll.

btw in deinem Bild sind ja mehrere Tage markiert ( andere Farbe ).
sind das einzelne Termine "pro/Tag" oder geht der Termin über mehr als 1440min ( = 1 Tag) ?

... ich weiss jetzt gar nicht wie Outlook solche Termine anlegt ...
gruss by OHR
Jimmy
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Jahresübersicht Calender

Beitrag von azzo »

Hallo Jimmy,
den Source den ich gepostet habe ist die Basis für eine Kalenderklasse.
Hier ist die exe dazu.
Ich verwende eigentlich nur Windows API-Funktionen.
Mfg
Otto
http://www.atzwanger-software.com/fh/pick2.zip
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Jahresübersicht Calender

Beitrag von azzo »

Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Jahresübersicht Calender

Beitrag von AUGE_OHR »

azzo hat geschrieben:den Source den ich gepostet habe ist die Basis für eine Kalenderklasse.
Hier ist die exe dazu.
Ich verwende eigentlich nur Windows API-Funktionen.
du sagtest ja FiveWin ... hatte ich vergessen bis ich den geposteten Code genauer ansah.

zunächst einmal wirkt dein Bildschirmaufbau "schneller" ... ich denke weil du direkt in den DC "malst"

Anmerkung : was für Xbase++ der oPS ( Presspace ) ist in Windows der DC ( Device Content ) bzw das Handle hDC davon.

Frage : warum willst du den Code verändern ( "pure" Xbase++ ) ?

... wenn ich den Code so sehe denke ich das man es "leicht" mit ot4xb ersetzten könnte :-k
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12909
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 46 Mal

Re: Jahresübersicht Calender

Beitrag von AUGE_OHR »

azzo hat geschrieben:Glaubst du man könnet diese Klasse einfach auf xBase umändern?

Code: Alles auswählen

METHOD Paint() CLASS TPickDate 
...
return 0 
zunächst einmal : die Logic der Berechnung der Positionen sollte unverändert gelten.

aInfo := ::DispBegin()
soll das die "Ausgabe" des Bildschirm unterdrücken ? wenn ja ::drawingArea:lockUpdate(.T./.F.)

FillRect() -> Grabox()
hDC -> oPS
GetClientRect() -> CurrentPos() / CurrentSize()
::oBrush -> GRA_CLR* / GraMakeRGBColor()
GradientFill() -> GraGradient()
nRGB() -> GraMakeRGBColor()
GetTextWidth() -> GraQueryTextBox()
::Say() -> GraStringAt()

alles was ich hier aufgeführt habe hat ja was mit "malen" zu tun, nicht mit der Logic.

p.s. wenn du deinen Fivewin Code auf ot4xb umstellst könnte man ihn auch für ein "native" ListView() nehmen.
frage doch mal im ot4xb Forum an ob es eine #include/#xtranslate Datei Fivewin -> ot4xb gibt
gruss by OHR
Jimmy
Antworten