Gantt class

Re: Gantt class

Postby MdaSolution » Fri Sep 30, 2011 11:17 am

but I cannot publish his work... without his autorization !!!
FWH .. BC582.. xharbour
User avatar
MdaSolution
 
Posts: 401
Joined: Tue Jan 05, 2010 2:33 pm

Re: Gantt class

Postby carlos vargas » Fri Sep 30, 2011 12:05 pm

aca arturo indica que retiro la clase por problemas de "distribucion", :-) ya que alguien la estaba vendido como suya por 300.00 euros.

http://www.lawebdelprogramador.com/foro ... Gantt.html

si realizamos una busqueda en el foro por la palabra tgantt, no encontramos recurrentemente que la autoria de la clase se le atribuye a Ramon Avendaño, gran colaborador y desarrollador de clases de gratuitas para fivewin.

asi mismo Arturo nunca da indicios que la clase no sea otra cosa que un desarrollo suyo.

creo que lo mejor es que la comunidad realize el desarrollo de una nueva clase tgantt publica, o que fivetech la desarrolle como parte de su producto, para evitar este tipo de problemas.

salu2
carlos vargas
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1720
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: Gantt class

Postby lucasdebeltran » Fri Sep 30, 2011 12:26 pm

Carlos,

Arturo la copió de Ramón.
Muchas gracias. Many thanks.

Un saludo, Best regards,

Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]

Implementando MSVC 2010, FWH64 y ADO.

Abandonando uso xHarbour y SQLRDD.
User avatar
lucasdebeltran
 
Posts: 1303
Joined: Tue Jul 21, 2009 8:12 am

Re: Gantt class

Postby Euclides » Fri Sep 30, 2011 2:32 pm

Hi to all, sorry for jumping in, but just could not resist... :D

From the "lawebdelprogramador.com"

arturo tamayo wrote:
Nota, decidi no publicarlo mas esta clase por ya hay un italiano que la copio y la esta vendiendo creo que en 300 euros

guess who is the italian selling the copy for 300 euros :?: :?: :?:

Regards/Saludos to everybody
Euclides
User avatar
Euclides
 
Posts: 156
Joined: Wed Mar 28, 2007 1:19 pm

Re: Gantt class

Postby MdaSolution » Fri Sep 30, 2011 4:27 pm

I have to make a clarification:

Ramon made a class called TGraph.prg this class no have mousemove actions : it is a static class as you can see on this picture

Image

Arthuro made mousemove actions methods on Tgraph.prg and recall it into Tgantt.prg

I made mouse move actions methods and other features from Tgraph.prg and recal it into Tplan.prg and if I create modification can sal my sources ?

I not decompiled Arthuro class , Arthuro not sad the truth , he copyed the class from Ramon !!!

I can try at any time even before a judge that I never decompiled class because I have original files of Ramon from 1998 and then I had no interest to decompile the class of Arthuro.


On mine sources of Tplan.prg there are these lines :
Code: Select all  Expand view


/*-------------------------------------------------------------------------\
|        Class: Class Tplan                                                |
|   Descripton: Remake of Tgant class                                      |
|     Language: xharbour /fw                                               |
|      Version: 1.00 version.                                              |
|         Date: 22/01/2000                                                 |
|       Author: Ramon Avendano, 1998                           |
|       Adds by:   Silvio Falconi                                                          |
|       Rights: There are some restrictions to the use of this code.       |
|               Please read the README file that accompanied this code     |
|               before using it or modifying it.                           |
|                                                                          |
|   Warranties: None. The code has not been rigorously tested in a formal  |
|               development environment, and is offered as-is.  The author |
|               assumes no responsibility for its use, or for any          |
|               consequences that may arise from its use.                  |
|                                                                          |
|
\-------------------------------------------------------------------------*/

 
Last edited by MdaSolution on Fri Sep 30, 2011 4:53 pm, edited 2 times in total.
FWH .. BC582.. xharbour
User avatar
MdaSolution
 
Posts: 401
Joined: Tue Jan 05, 2010 2:33 pm

Re: Gantt class

Postby MdaSolution » Fri Sep 30, 2011 4:37 pm

Euclides wrote:Hi to all, sorry for jumping in, but just could not resist... :D

From the "lawebdelprogramador.com"

arturo tamayo wrote:
Nota, decidi no publicarlo mas esta clase por ya hay un italiano que la copio y la esta vendiendo creo que en 300 euros

guess who is the italian selling the copy for 300 euros :?: :?: :?:

Regards/Saludos to everybody
Euclides


Mr. Euclides,

Sure .... :) Arthuro cannot pubblish it because he not created it and he cannot pubblish without the autorization on the original author...
FWH .. BC582.. xharbour
User avatar
MdaSolution
 
Posts: 401
Joined: Tue Jan 05, 2010 2:33 pm

Re: Gantt class

Postby George » Fri Sep 30, 2011 5:33 pm

Hi to all, sorry for jumping in, but just could not resist...

From the "lawebdelprogramador.com"

arturo tamayo wrote:
Nota, decidi no publicarlo mas esta clase por ya hay un italiano que la copio y la esta vendiendo creo que en 300 euros

guess who is the italian selling the copy for 300 euros

Regards/Saludos to everybody
Euclides


There are something that I cannot understand regarding Mr. Arturo Tamayo statement:
"Nota, decidi no publicarlo mas esta clase por ya hay un italiano que la copio y la esta vendiendo creo que en 300 euros"
If Mr. Tamayo is the class' owner and he already decided to publish it, why stop if by doing that he will be helping the other person that is selling his class?

I think Mr. Tamayo should publish his class, if he has the source code, and by doing this, he is contributing to this forum.

George
George
 
Posts: 725
Joined: Tue Oct 18, 2005 6:49 pm

Re: Gantt class

Postby MdaSolution » Fri Sep 30, 2011 5:42 pm

George,

Mr. Tamayo is NOT the class' owner, he copied it from tgraph 's Avendano class, he only made some modifications...

When Avendano sent me his class , he sad no send to anyone, but then on 2001 Arthuro published tgantt class object

it seems Ramon sent to me and to Arthuro his first project ...


George,
if Mr Tamayo is the class' owner he must explain why I have the Ramon Avendano sources



Image


And I Know Arthuro lose his sources on 2006

and ask to me the first project of Ramon but I not sent it to Arthuro ( I have old messages on chat icq where Arthuro ask me the ramon class)
FWH .. BC582.. xharbour
User avatar
MdaSolution
 
Posts: 401
Joined: Tue Jan 05, 2010 2:33 pm

Re: Gantt class

Postby George » Fri Sep 30, 2011 6:49 pm

Thanks Mr. MdaSolution for the clarification.
At this moment seems that Ramon Avendano, as we are not hearing from Mr. Tamayo, is the only one that can solve this puzzle.

George
George
 
Posts: 725
Joined: Tue Oct 18, 2005 6:49 pm

Re: Gantt class

Postby Otto » Fri Sep 30, 2011 7:17 pm

Can we download a working exe to see this class in action.
Best regards,
Otto
********************************************************************
mod harbour - Vamos a la conquista de la Web
modharbour.org
https://www.facebook.com/groups/modharbour.club
********************************************************************
User avatar
Otto
 
Posts: 6330
Joined: Fri Oct 07, 2005 7:07 pm

Re: Gantt class

Postby mgsoft » Fri Sep 30, 2011 7:20 pm

Hi,

Ramón published his class on the old OZS news server (news.fivetechsoft.com).

Arturo took this class and added Hernan´s Browse.

I think both, Arturo and Silvio, tried to sell the class. But as original Ramon´s autorship was public, both people stopped distributing this class.

Maybe Antonio has a copy of old OZS news.
Saludos,

Eduardo
User avatar
mgsoft
 
Posts: 422
Joined: Mon Aug 17, 2009 12:18 pm
Location: España

Re: Gantt class

Postby Antonio Linares » Fri Sep 30, 2011 7:29 pm

If someone has Ramón Avendaño Class TGant sources, please email them to me as we are going to test it, contact him and ask for authorization.

Does someone know the current email of Ramón ? thanks
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42084
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Gantt class

Postby Antonio Linares » Fri Sep 30, 2011 8:14 pm

We already got a written authorization from Ramón to publish his Class TGant source code, and he confirms that he does not longer its source code, so we kindly ask to however may have it to publish it here, thanks :-)

Hola Félix:

Yo no hice realmente una clase Tgantt, solo y hace mucho tiempo extraje de uno de mis programas la parte que generaba una grafica tipo Gantt y la retoque como ejemplo para alguien y se lo mande (no recuerdo a quien) para que hiciese lo que quisiera con ello.

No se sí en algún viejo ordenador puedo tener algo de esto, pero creo que lo que en su momento hice sobre el tema lo he perdido.

He entrado en el enlace del foro que me adjuntas, creo que se ha montado un pequeño lio de algo que hice hace mucho tiempo y que poco valor tenia y si alguien aun tiene algo mío sobre el tema lo puede publicar, aunque ya digo que de poco puede valer.

Para cualquier cosa más escríbeme a avendano@mundo-r.com, al que me has escrito apenas lo utilizo.

Un saludo,

Ramón Avendaño.

Un abrazo,
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42084
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Gantt class

Postby Antonio Linares » Fri Sep 30, 2011 8:23 pm

Here we have an example of use:

http://code.google.com/p/fivewin-contributions/downloads/detail?name=gantt_example.zip&can=2&q=

Now we need its source code, please :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42084
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Gantt class

Postby Antonio Linares » Sat Oct 01, 2011 9:26 am

Finally Ramón Avendaño Class TGant sources are here and available to everybody :-)

gantt.prg
Code: Select all  Expand view
#include "FiveWin.ch"

#define GWL_STYLE           -16

Static nOldCol,nOldRow
Static nOldCol1,nOldCol2,nOldRow2

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

CLASS TGantt FROM TControl

   DATA   nWidth, nHeight
   DATA   aItems,lCaptured,lCaptuPre
   DATA   nItem,nItePre
   DATA   nRow1,nRow2,nCol1,nCol2 AS NUMERIC INIT 0
   DATA   nRowi1,nRowi2,nColi1,nColi2 AS NUMERIC INIT 0
   DATA   hTrazoPen
   DATA   hOldPen
   DATA   iRop,bLbx
   DATA   nLCol,nRCol AS LOGICAL INIT .f.
   DATA   bChange
   DATA   bPresed
   DATA   bTrovaTIP,bIniziofine    
   DATA   cToolTip,cTipIniFine      

   CLASSDATA lRegistered AS LOGICAL

   METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, lBorder,;
               lVScroll, lHScroll, nClrFore, nClrBack,bchange,dpresed,blbx) CONSTRUCTOR

   METHOD Redefine( nId, oWnd, nClrFore, nClrBack ) CONSTRUCTOR

   MESSAGE FillRect( aRect, oBrush,barra )  METHOD _FillRect( aRect, oBrush,barra )

   METHOD Display() INLINE ::BeginPaint(), ::Paint(), ::EndPaint(), 0

   METHOD Paint()

   METHOD LButtonDown( nRow, nCol, nKeyFlags )
   METHOD LButtonUp( nRow, nCol, nKeyFlags )  

   METHOD MouseMove( nRow, nCol, nKeyFlags )
   METHOD LDblClick( nRow, nCol, nKeyFlags )
   
   METHOD Line( nTop, nLeft, nBottom, nRight, oPen )
   METHOD Rectang( nTop, nLeft, nBottom, nRight, oPen,Barra )
   METHOD Say( nRow, nCol, cText, nClrFore, nClrBack, oFont, lPixel, ;
               lTransparent, nAlign )
   METHOD DibRect()
   METHOD DibLine()
   METHOD End()

ENDCLASS

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

METHOD New( nTop, nLeft, nWidth, nHeight, oWnd, lBorder,;
            lVScroll, lHScroll, nClrFore, nClrBack,bChange,bPresed,blbx ) CLASS TGantt

//   DEFAULT nWidth := 100, nHeight := 100,;
   DEFAULT lBorder := .T.,;
           lVScroll := .f., lHScroll := .f.,;
           oWnd := GetWndDefault()

   ::cCaption   = ""
   ::lCaptured = .f.
   ::lCaptuPre = .f.
   ::aitems   = {}
   ::nitem    = 0
   ::nitePre   = 0
   ::nTop     = nTop
   ::nLeft    = nLeft
   ::nBottom  = nTop + nHeight - 1
   ::nRight   = nLeft + nWidth - 1
   ::oWnd     = oWnd
   ::bchange  = bChange
   ::bPresed  = bPresed
   ::bLbx     = bLbx
   ::nStyle   = nOr( WS_CHILD,;
                     If( lBorder, WS_BORDER, 0 ),;
                     If( lVScroll, WS_VSCROLL, 0 ),;
                     If( lHScroll, WS_HSCROLL, 0 ),;
                     WS_VISIBLE, WS_TABSTOP)
   ::Register() // nOR(CS_VREDRAW,CS_HREDRAW) )
   ::cToolTip := ''
   ::cTipIniFine := ''

   ::SetColor( nClrFore, nClrBack )

   ::htrazopen:=createpen(PS_SOLID,1,nRGB(128,128,128) )

   if oWnd:lVisible
      ::Create()
      ::Default()
      ::lVisible = .t.
      oWnd:AddControl( Self )
   else
      oWnd:DefControl( Self )
      ::lVisible  = .f.
   endif
/*
   if lVScroll
      DEFINE SCROLLBAR ::oVScroll VERTICAL OF Self
   endif
   if lHScroll
      DEFINE SCROLLBAR ::oHScroll HORIZONTAL OF Self
   endif
*/

return Self

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

METHOD Redefine( nId, oWnd, nClrFore, nClrBack,bChange, bPresed,blbx ) CLASS TGantt

   DEFAULT oWnd := GetWndDefault()

   ::nId       = nId
   ::cCaption  = ""
   ::lCaptured = .f.
   ::lCaptuPre = .f.
   ::oWnd      = oWnd
   ::bchange   = bChange
   ::bPresed   = bPresed
   ::bLbx      = bLbx
   ::nWidth    = 100
   ::nHeight   = 100

   ::Register()

   ::SetColor( nClrFore, nClrBack )
   
   if lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), WS_VSCROLL )
      DEFINE SCROLLBAR ::oVScroll VERTICAL OF Self
   endif
   if lAnd( GetWindowLong( ::hWnd, GWL_STYLE ), WS_HSCROLL )
      DEFINE SCROLLBAR ::oHScroll HORIZONTAL OF Self
   endif

   oWnd:DefControl( Self )

return Self

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

METHOD Paint() CLASS TGantt

   local oRect := ::GetRect()

   if ::bPainted != nil
      Eval( ::bPainted, ::hDC )
   endif

return 0 //nil

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

METHOD Line( nTop, nLeft, nBottom, nRight, oPen ) CLASS TGantt

   local hPen := if( oPen = nil, 0, oPen:hPen )

   ::GetDC()
   MoveTo( ::hDC, nLeft, nTop )
   LineTo( ::hDC, nRight, nBottom, hPen )
   ::ReleaseDC()

return nil

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

METHOD Rectang( nTop, nLeft, nBottom, nRight, oPen,barra ) CLASS TGantt

   local hPen := if( oPen = nil, 0, oPen:hPen )
   Local nBar := if( barra = nil, 0, barra)
   ::GetDC()
     Rectangle( ::hDC, nTop, nLeft, nBottom, nRight, hPen )
   ::ReleaseDC()
/*
   if nbar > 0
      if len(::aitems) >= nBar
         ::aitems[nbar]:={ntop,nleft,nBottom,nRight}
      else
         AADD( ::aitems,{ntop,nleft,nBottom,nRight} )
      endif
   endif
*/

return nil

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

METHOD Say( nRow, nCol, cText, nClrFore, nClrBack, oFont, lPixel,;
            lTransparent, nAlign ) CLASS TGantt

   DEFAULT nClrFore := ::nClrText,;
           nClrBack := ::nClrPane,;
           oFont    := ::oFont,;
           lPixel   := .f.,;
           lTransparent := .f.

   if ValType( nClrFore ) == "C"      //  xBase Color string
      nClrBack = nClrFore
      nClrFore = nGetForeRGB( nClrFore )
      nClrBack = nGetBackRGB( nClrBack )
   endif

   ::GetDC()

   DEFAULT nAlign := GetTextAlign( ::hDC )

   WSay( ::hWnd, ::hDC, nRow, nCol, cValToChar( cText ), nClrFore, nClrBack,;
         If( oFont != nil, oFont:hFont, 0 ), lPixel, lTransparent, nAlign )
   ::ReleaseDC()

return nil
//------------------//
METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS TGantt
local neoitem,ctext
if ::lCaptured
   neoItem:=ASCAN(::aitems,{ |val| val[1] <= nRow .and. ;
                                   val[2] <= ncol .and. ;
                                   val[4] >= ncol .and. ;
                                   val[3] >= nRow })
     if neoItem = 0 .and. ( nRow<=::nrow1+2 .or. nRow>=::nrow2-1 ) .and.;
         ::nlCol .and. ::nRCol
      if nCol>nOldCol1 .and. nCol<nOldcol2        
         CURSOR("CURSOR_1")
         ::DibRect()
         selectObject(::hDC,::hOldPen)
         ::ReleaseDC()
         ::lCaptured:=.f.
         ::lCaptuPre:=.t.
         ::nRowi1=::nRow2-1
         ::nColi1=nOldCol2
         ::nColi2=nCol
         ::nrowi2=nRow
         nOldRow:=::nRow2-1
         nOldRow2:=::nRow2-1
         nOldCol:=nOldCol2
         ::nRowi2:=nOldRow2+(nRow-nOldRow)
         ::nColi2:=nOldCol2+(nCol-nOldCol)
         ::holdpen:=Selectobject(::hDC,::hTrazoPen)
         ::DibLine()
         ReTurn 0
       endif
/*
      //----- Disegna TIP
      IF ::bInizioFine # nil
         IF ::lCAmbiaDay
            ::DestroyToolTip()
         ENDIF
         eval(::bInizioFine)
         IF ! empty(::cTipIniFine)
            cText := substr(::cTipIniFine,1,5) + ' al ' +  substr(::cTipIniFine,12,5)
            ::ShowToolTip( ::nBoxBottom + 3 , ::nBoxLeft ,cText )
         ENDIF
      ENDIF
*/

     endif
   ::DibRect()
    if ::nRCol .and. !::nLCol
         CURSOR("CURSOR_2")
       if nOldCol2+(nCol-nOldCol) > ::ncol1
          ::nCol2:=nOldCol2+(nCol-nOldCol)
       endif
    endif
    if ::nlCol .and. !::nRCol
         CURSOR("CURSOR_3")
       if nOldCol1+(nCol-nOldCol) < ::ncol2
         ::nCol1:=nOldCol1+(nCol-nOldCol)
       endif
    endif
    if ::nlCol .and. ::nRCol
         CURSOR("CURSOR_4")
        ::nCol1:=nOldCol1+(nCol-nOldCol)
        ::nCol2:=nOldCol2+(nCol-nOldCol)
    endif
    ::DibRect()
    ReTurn 0
endif
if ::lCaptuPre
   ::DibLine()
   ::nRowi2:=nOldRow2+(nRow-nOldRow)
   ::nColi2:=nOldCol2+(nCol-nOldCol)
   ::DibLine()
   ::nItePre:=ASCAN(::aitems,{ |val| val[1] <= nRow .and. ;
                                val[2] <= ncol .and. ;
                                val[4] >= ncol .and. ;
                                val[3] >= nRow })
    if ::nitepre!=0
        Cursor("CURSOR_1")
    else
//        Super:MouseMove( nRow, nCol, nKeyFlags )
        cursorarrow()
    endif
    ReTurn 0
endif
   ::nItem:=ASCAN(::aitems,{ |val| val[1] <= nRow .and. ;
                                   val[2] <= ncol .and. ;
                                   val[4]+5 >= ncol .and. ;
                                   val[3] >= nRow })
   if ::lcaptured
     if ::nItem = 0
         CURSOR("CURSOR_1")
         ::lCaptured:=.f.
         ::lCaptuPre:=.t.
     endif
   endif

   if ::nItem !=0
      if ::aitems[::nitem][2] <= ncol .and. ::aitems[::nitem][2]+2 >=ncol
         CURSOR("CURSOR_3")
//         Cursorwe()
      elseif ::aitems[::nitem][4]-3 <= ncol .and. ::aitems[::nitem][4] >=ncol
         CURSOR("CURSOR_2")
//         Cursorwe()
      elseif ::aitems[::nitem][4]+2 <= ncol .and. ::aitems[::nitem][4]+5 >= ncol
         Cursor("CURSOR_1") //cadema
      elseif ::aitems[::nitem][2] < ncol+2 .and. ::aitems[::nitem][4]-3 > ncol
         CURSOR("CURSOR_4") //mover
      else
         Cursorarrow()
//        Super:MouseMove( nRow, nCol, nKeyFlags )
      endif

      IF ::bTrovaTip # nil
         eval(::bTrovaTip,self)
         IF ! empty(::cToolTip)
            ::ltooltipBallon:=.t.
            ::ntooltipwidth:=600
            ::ntooltipTexColor:=RGB(0,0,0) //RGB(255,255,255)
            ::ntooltipBkColor:=RGB(58,116,241)  //ColorPan() //
            ::ntooltipIcon:=0
            ::ShowToolTip( nRow, nCol,::cToolTip )
         ENDIF
      ENDIF

   else

      If ::bTrovaTip # nil
         ::DestroyToolTip()
      Endif
         Cursorarrow()
//      Super:MouseMove( nRow, nCol, nKeyFlags )
   endif

Return 0
//---------------------------------------------------------//
METHOD LButtonDown( nRow, nCol, nKeyFlags ) CLASS TGantt
if ::bLbx!=NIL
   ::Blbx:LbuttonDown( nRow+32, 40, nKeyFlags )
endif
::GetDC()
nOldCol:=nCol
nOldRow:=nRow
::nitem:=ASCAN(::aitems,{ |val| val[1] <= nRow .and. ;
                                val[2] <= ncol .and. ;
                                val[4]+5 >= ncol .and. ;
                                val[3] >= nRow })

   if ::nitem !=0
         ::holdpen:=Selectobject(::hDC,::hTrazoPen)
      if ::aitems[::nitem][2] <= ncol .and. ::aitems[::nitem][2]+2 >=ncol
         ::lCaptured:=.t.
         ::nRow1=::aitems[::nitem][1] -2
         ::nCol1=::aitems[::nitem][2]
         ::nCol2=::aitems[::nitem][4]
         ::nrow2=::aitems[::nitem][3] +1
         ::nLcol:=.t.
         ::nRcol:=.f.
         nOldCol1:=::nCol1
         nOldCol2:=::nCol2
         ::DibRect()
         CURSOR("CURSOR_3")
      elseif ::aitems[::nitem][4]-3 <= ncol .and. ::aitems[::nitem][4]>=ncol
         ::lCaptured:=.t.
         ::nRow1=::aitems[::nitem][1] -2
         ::nCol1=::aitems[::nitem][2]
         ::nCol2=::aitems[::nitem][4]
         ::nrow2=::aitems[::nitem][3] +1
         ::nLcol:=.f.
         ::nRcol:=.t.
         nOldCol1:=::nCol1
         nOldCol2:=::nCol2
         ::DibRect()
         CURSOR("CURSOR_2")
      elseif ::aitems[::nitem][4]+2 <= ncol .and. ::aitems[::nitem][4]+5 > ncol
         ::lCaptured:=.f.
         ::lCaptuPre:=.t.
         ::nRowi1=nRow
         ::nColi1=nCol
         ::nColi2=nCol
         ::nrowi2=nRow
         nOldRow2:=nRow
         nOldCol2:=nCol
         ::DibLine()
         Cursor("CURSOR_1")
      elseif ::aitems[::nitem][2] < ncol+2 .and. ::aitems[::nitem][4]-3 > ncol
         ::lCaptured:=.t.
         ::nRow1=::aitems[::nitem][1] -2
         ::nCol1=::aitems[::nitem][2]
         ::nCol2=::aitems[::nitem][4]
         ::nrow2=::aitems[::nitem][3] +1
         ::nLcol:=.t.
         ::nRcol:=.t.
         nOldCol1:=::nCol1
         nOldCol2:=::nCol2
         ::DibRect()
         CURSOR("CURSOR_4")
      endif
   endif
       
RETURN Super:LButtonDown( nRow, nCol, nKeyFlags )
//------------------------------------------------------//
METHOD LButtonUp( nRow, nCol, nKeyFlags )  CLASS TGantt
   ::DestroyToolTip()
if ::lCaptured
   ::DibRect()
   selectObject(::hDC,::hOldPen)
   ::ReleaseDC()
   ::lCaptuPre:=.f.
   ::lCaptured:=.f.
    if nOldCol1!=::nCol1 .or. ;
       nOldCol2!=::nCol2
      if ::bchange != NIL
         eval(::bChange,Self)
      endif
   endif
endif
if ::lCaptuPre
   ::DibLine()
   selectObject(::hDC,::hOldPen)
   ::ReleaseDC()
   ::lCaptured:=.f.
   ::lCaptuPre:=.f.
   if ::nitepre !=0 .and. ::nItem != 0
   if ::nitepre != ::nItem
   if ::bPresed != NIL
      eval(::bPresed,Self)
   endif
  endif
  endif
  ::nItePre:=0
endif
/*
      IF ::bInizioFine # nil
         ::DestroyToolTip()
      endif
*/

Return Super:LButtonUp( nRow, nCol, nKeyFlags )
//----------------------------------------------------------------------------//
METHOD DibRect() CLASS TGantt
::iRop:=ClsetroP2(::hDC, 7)
           MoveTo( ::hDC, ::nCol1,::nRow1  )
           LineTo( ::hDC, ::nCol2,::nRow1 )
           LineTo( ::hDC, ::nCol2,::nRow2 )
           LineTo( ::hDC, ::nCol1,::nRow2 )
           LineTo( ::hDC, ::nCol1,::nRow1 )
ClseTroP2(::hDC,::iRop)
RETURN NIL
//----------------------------//
METHOD DibLine() CLASS TGantt
   ::iRop:=ClsetroP2(::hDC, 7)
           MoveTo( ::hDC, ::nColi1,::nRowi1  )
           LineTo( ::hDC, ::nColi2,::nRowi2 )
   ClseTroP2(::hDC,::iRop)
RETURN NIL
//-----------------------------//
METHOD End() CLASS TGantt
   deleteobject(::hTrazoPen)
   Super:End()
RETURN NIL
//--------------------------------------//
METHOD LDblClick( nRow, nCol, nKeyFlags )
   ::lCaptured:=.f.
   ::lCaptuPre:=.f.
   if ::bLbx!=NIL
      ::blbx:LDblClick( nRow, nCol, nKeyFlags )
   endif
   Super:LDblClick( nRow, nCol, nKeyFlags )    
Return NIL
//-----------------------------------------------------//
METHOD _FillRect (aCols, oBrush,barra) CLASS TGantt
   Local nBar := if( barra = nil, 0, barra)
   ::GetDC()
      FillRect(::hDC ,aCols, oBrush:hBrush)
   ::ReleaseDC()
   if nbar > 0
      if len(::aitems) >= nBar
         ::aitems[nbar]:={aCols[1],aCols[2],aCols[3],aCols[4]}
      else
         AADD( ::aitems,{aCols[1],aCols[2],aCols[3],aCols[4]} )
      endif
   endif
return NIL
 


gantt.ch
Code: Select all  Expand view
//----------------------------------------------------------------------------//
// GANTT

#xcommand @ <nRow>, <nCol> GANTT [<oGantt>] ;
             [ <dlg: OF, WINDOW, DIALOG> <oWnd> ] ;
             [ SIZE <nWidth>, <nHeight> ] ;
             [ <border: BORDER>] ;
             [ <vScroll: VSCROLL, VERTICAL SCROLL> ] ;
             [ <hScroll: HSCROLL, HORIZONTAL SCROLL> ] ;
             [ <color: COLOR, COLORS> <nClrFore> [,<nClrBack>] ] ;
             [  ON CHANGE <uChange> ] ;
             [  ON PRESED <uPresed> ] ;
             [  BOXLIS <uLbx> ] ;
       => ;
          [<oGantt> := ] TGantt():New( <nRow>, <nCol>, <nWidth>, <nHeight>, <oWnd>,;
             <.border.>, [<.vScroll.>], [<.hScroll.>], <nClrFore>,;
             <nClrBack>,[<{uChange}>],[<{uPresed}>],<uLbx> )

#xcommand REDEFINE GANTT [<oGantt>] ;
             [ ID <nId> ] ;
             [ <dlg: OF, WINDOW, DIALOG> <oWnd> ] ;
             [ <color: COLOR, COLORS> <nClrFore> [,<nClrBack>] ] ;
       => ;
          [ <oGantt> := ] TGantt():Redefine( <nId>, <oWnd>,;
             <nClrFore>, <nClrBack> )
 


This function is required:
Code: Select all  Expand view

#include <windows.h>
#include <hbapi.h>

HB_FUNC( CLSETROP2 ) // ( hDll, Ctex )
{
   hb_retni(  SetROP2( ( HDC ) hb_parnl( 1 ), hb_parni( 2 ) ) );
}
 


We have not testet it yet, so your feedback about it is welcome :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42084
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 87 guests