Clase TActiveX mejorada y RibbonBar más fácil

User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Gracias a las pruebas que estamos haciendo estos dias con el RibbonBar de CodeJock, hemos mejorado la Clase TActiveX para que automaticamente use objetos TOleAuto en los eventos, por lo que el uso del RibbonBar es mucho más simple y fácil :-)

Aqui teneis un ejemplo de uso. Fijaros en la forma en que oControl se obtiene desde RibbonBarEvent():

Code: Select all

#include "FiveWin.ch"

#define xtpControlButton      1

#define xtpFlagRightAlign     1

#define ID_ADDTAB            10
#define ID_ADDGROUP          20
#define ID_ADDBUTTON         30

static oRb

function Main()

   local oWnd, oAct, oMenu, oTabs, oGroups, oControls

   DEFINE WINDOW oWnd TITLE "Visual RibbonBar"

   @ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.12.1.1" OF oWnd SIZE 0, 0

   oAct:bOnEvent = { | cEvent, aParams | RibbonBarEvent( cEvent, aParams ) }

   oAct:Do( "AttachToWindow", oWnd:hWnd )

   oRb = oAct:Do( "AddRibbonBar", "fwh" )

   oMenu = oRb:Controls:Add( 2, 0, "Menu" )
   oMenu:Flags = xtpFlagRightAlign

   oTabs = oMenu:CommandBar:Controls:Add( 2, 0, "Tabs" )
   oTabs:CommandBar:Controls:Add( 1, ID_ADDTAB, "Add" )

   oGroups = oMenu:CommandBar:Controls:Add( 3, 0, "Groups" )
   oGroups:CommandBar:Controls:Add( 1, ID_ADDGROUP, "Add" )

   oControls = oMenu:CommandBar:Controls:Add( 3, 0, "Controls" )
   oControls:CommandBar:Controls:Add( 1, ID_ADDBUTTON, "Add Button" )

   ACTIVATE WINDOW oWnd

return nil

function RibbonBarEvent( cEvent, aParams )

   local oControl, oTab, oGroup, oItem 

   do case
      case cEvent == "Execute"
           
           oControl = aParams[ 1 ]
           
           do case
              case oControl:Id == ID_ADDTAB
                   oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) )
                   oControl:Id = oRb:TabCount
                   oControl:Selected = .T.

              case oControl:Id == ID_ADDGROUP
                   if oRb:TabCount > 0
                      oGroup = oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                               ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   

              case oControl:Id == ID_ADDBUTTON
                   if oRb:SelectedTab:Groups:GroupCount > 0
                      oGroup = oRb:FindGroup( ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount )
                      oItem = oGroup:Add( xtpControlButton, 1, nil )
                      oItem:Caption = "Button " + AllTrim( Str( oGroup:Count ) )
                   endif   
                   
              otherwise
                   if ! Empty( oControl:Caption )
                      MsgInfo( oControl:Caption )     
                   endif   

           endcase        
   endcase
   
return nil              
 
regards, saludos

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

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Dinamicamente inspeccionando los controles del RibbonBar:

Image

RibonBar.prg

Code: Select all

#include "FiveWin.ch"

#define xtpControlButton      1

#define xtpFlagRightAlign     1

#define ID_ADDTAB            10
#define ID_ADDGROUP          20
#define ID_ADDBUTTON         30

static oRb

function Main()

   local oWnd, oAct, oMenu, oTabs, oGroups, oControls

   DEFINE WINDOW oWnd TITLE "Visual RibbonBar"

   @ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.12.1.1" OF oWnd SIZE 0, 0

   oAct:bOnEvent = { | cEvent, aParams | RibbonBarEvent( cEvent, aParams ) }

   oAct:Do( "AttachToWindow", oWnd:hWnd )

   oRb = oAct:Do( "AddRibbonBar", "fwh" )

   oMenu = oRb:Controls:Add( 2, 0, "Menu" )
   oMenu:Flags = xtpFlagRightAlign

   oTabs = oMenu:CommandBar:Controls:Add( 2, 0, "Tabs" )
   oTabs:CommandBar:Controls:Add( 1, ID_ADDTAB, "Add" )

   oGroups = oMenu:CommandBar:Controls:Add( 2, 0, "Groups" )
   oGroups:CommandBar:Controls:Add( 1, ID_ADDGROUP, "Add" )

   oControls = oMenu:CommandBar:Controls:Add( 2, 0, "Controls" )
   oControls:CommandBar:Controls:Add( 1, ID_ADDBUTTON, "Add Button" )

   ACTIVATE WINDOW oWnd

return nil

function RibbonBarEvent( cEvent, aParams )

   local oControl, oTab, oGroup, oItem 

   do case
      case cEvent == "Execute"
           
           oControl = aParams[ 1 ]
           
           do case
              case oControl:Id == ID_ADDTAB
                   oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) )
                   oControl:Id = oRb:TabCount
                   oControl:Selected = .T.

              case oControl:Id == ID_ADDGROUP
                   if oRb:TabCount > 0
                      oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                                             ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   

              case oControl:Id == ID_ADDBUTTON
                   if oRb:TabCount == 0
                      oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) ) 
                      oControl:Id = oRb:TabCount
                      oControl:Selected = .T.
                   endif
                   if oRb:SelectedTab:Groups:GroupCount == 0
                      oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                                             ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   
                   if oRb:SelectedTab:Groups:GroupCount > 0
                      oGroup = oRb:FindGroup( ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount )
                      oItem = oGroup:Add( xtpControlButton, 1, nil )
                      oItem:Caption = "Button " + AllTrim( Str( oGroup:Count ) )
                   endif   
                   
              otherwise
                   if ! Empty( oControl:Caption )
                      ControlInspect( oControl )     
                   endif   

           endcase        
   endcase
   
return nil     

function ControlInspect( oControl )

   local oDlg, cCaption := PadR( oControl:Caption, 30 )
   
   DEFINE DIALOG oDlg TITLE "Control Properties" SIZE 300, 300
   
   @ 0.9, 1 SAY "Caption:"
   
   @ 1,  4  GET cCaption VALID ( oControl:Caption := AllTrim( cCaption ), .T. )
   
   @ 1.9, 1 SAY "Width:"
   
   @ 2.2, 4 GET oControl:Width SIZE 25, 12

   @ 1.9, 12 SAY "Height:"
   
   @ 2.2, 12 GET oControl:Height SIZE 25, 12
   
   ACTIVATE DIALOG oDlg CENTERED
   
return nil            
 
regards, saludos

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

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Image
Image

Code: Select all

#include "FiveWin.ch"

#define xtpControlButton      1

#define xtpFlagRightAlign     1

#define xtpImageNormal        0
#define xtpImageDisabled      1
#define xtpImageHot           2
#define xtpImageChecked       3
#define xtpImagePressed       4

#define ID_ADDTAB            10
#define ID_ADDGROUP          20
#define ID_ADDBUTTON         30
#define ID_ADDIMAGE          40

static oIcons, oRb 

function Main()

   local oWnd, oAct, oMenu, oTabs, oGroups, oControls, oImages

   DEFINE WINDOW oWnd TITLE "Visual RibbonBar"

   @ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.12.1.1" OF oWnd SIZE 0, 0

   oAct:bOnEvent = { | cEvent, aParams | RibbonBarEvent( cEvent, aParams ) }

   oAct:Do( "AttachToWindow", oWnd:hWnd )

   oIcons = oAct:Do( "icons" )

   oRb = oAct:Do( "AddRibbonBar", "fwh" )

   oMenu = oRb:Controls:Add( 2, 0, "Menu" )
   oMenu:Flags = xtpFlagRightAlign

   oTabs = oMenu:CommandBar:Controls:Add( 2, 0, "Tabs" )
   oTabs:CommandBar:Controls:Add( 1, ID_ADDTAB, "Add" )

   oGroups = oMenu:CommandBar:Controls:Add( 2, 0, "Groups" )
   oGroups:CommandBar:Controls:Add( 1, ID_ADDGROUP, "Add" )

   oControls = oMenu:CommandBar:Controls:Add( 2, 0, "Controls" )
   oControls:CommandBar:Controls:Add( 1, ID_ADDBUTTON, "Add Button" )

   oImages = oMenu:CommandBar:Controls:Add( 2, 0, "Images" )
   oImages:CommandBar:Controls:Add( 1, ID_ADDIMAGE, "Load Image" )

   ACTIVATE WINDOW oWnd

return nil

function RibbonBarEvent( cEvent, aParams )

   local oControl, oTab, oGroup, oItem, cBmpFile 

   do case
      case cEvent == "Execute"
           
           oControl = aParams[ 1 ]
           
           do case
              case oControl:Id == ID_ADDTAB
                   oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) )
                   oControl:Id = oRb:TabCount
                   oControl:Selected = .T.

              case oControl:Id == ID_ADDGROUP
                   if oRb:TabCount > 0
                      oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                                             ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   

              case oControl:Id == ID_ADDBUTTON
                   if oRb:TabCount == 0
                      oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) ) 
                      oControl:Id = oRb:TabCount
                      oControl:Selected = .T.
                   endif
                   if oRb:SelectedTab:Groups:GroupCount == 0
                      oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                                             ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   
                   if oRb:SelectedTab:Groups:GroupCount > 0
                      oGroup = oRb:FindGroup( ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount )
                      oItem = oGroup:Add( xtpControlButton, 1, nil )
                      oItem:Caption = "Button " + AllTrim( Str( oGroup:Count ) )
                   endif   

              case oControl:Id = ID_ADDIMAGE
                   cBmpFile = cGetFile( "*.bmp", "Please select a BMP file" ) 
                   if File( cBmpFile )
                      MsgInfo( oIcons:Count + 1 )
                      oIcons:LoadBitmap( cBmpFile, oIcons:Count + 1, xtpImageNormal )
                   endif   
                   
              otherwise
                   if ! Empty( oControl:Caption )
                      ControlInspect( oControl )     
                   endif   

           endcase        
   endcase
   
return nil     

function ControlInspect( oControl )

   local oDlg, cCaption := PadR( oControl:Caption, 30 )
   
   DEFINE DIALOG oDlg TITLE "Control Properties" SIZE 300, 300
   
   @ 0.9, 1 SAY "Caption:"
   
   @ 1,  4  GET cCaption VALID ( oControl:Caption := AllTrim( cCaption ), .T. )
   
   @ 1.9, 1 SAY "Width:"
   
   @ 2.2, 4 GET oControl:Width SIZE 25, 12

   @ 1.9, 12 SAY "Height:"
   
   @ 2.2, 12 GET oControl:Height SIZE 25, 12

   @ 2.9, 1 SAY "Icon Id:"
   
   @ 3.4, 4 GET oControl:IconId SIZE 25, 12
   
   ACTIVATE DIALOG oDlg CENTERED
   
return nil            
 
regards, saludos

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

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Una Clase TActiveX modificada y ampliada es necesaria para estos ejemplos.

Esta Clase la incluiremos en FWH 9.04.

Posiblemente publiquemos ya una versión preliminar de FWH 9.04 con _, para que podais empezar a usarlos :-)
regards, saludos

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

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Podeis descargar una demo (EXE y OCX) desde aqui:
http://www.mediafire.com/?sharekey=414c ... 6e282a0ee8
regards, saludos

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

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Editando el texto del Tab y del Grupo:

Image

Podeis descargarlo y probarlo desde aqui:
http://www.mediafire.com/?sharekey=d045 ... 8114394287

Code: Select all

#include "FiveWin.ch"

#define xtpControlButton      1

#define xtpFlagRightAlign     1

#define xtpImageNormal        0
#define xtpImageDisabled      1
#define xtpImageHot           2
#define xtpImageChecked       3
#define xtpImagePressed       4

#define ID_ADDTAB            10
#define ID_ADDGROUP          20
#define ID_ADDBUTTON         30
#define ID_ADDIMAGE          40

static oIcons, oRb 

function Main()

   local oWnd, oAct, oMenu, oTabs, oGroups, oControls, oImages

   if ! IsActiveX( "Codejock.CommandBars.v13.0.0.Demo.ocx" )
      RegisterServer( "Codejock.CommandBars.v13.0.0.Demo.ocx" )
   endif   

   DEFINE WINDOW oWnd TITLE "Visual RibbonBar"

   @ 0, 0 ACTIVEX oAct PROGID "Codejock.CommandBarsFrame.13.0.0" OF oWnd SIZE 0, 0

   oAct:bOnEvent = { | cEvent, aParams | RibbonBarEvent( cEvent, aParams ) }

   oAct:Do( "AttachToWindow", oWnd:hWnd )

   oIcons = oAct:Do( "icons" )

   oRb = oAct:Do( "AddRibbonBar", "fwh" )

   oMenu = oRb:Controls:Add( 2, 0, "Menu" )
   oMenu:Flags = xtpFlagRightAlign

   oTabs = oMenu:CommandBar:Controls:Add( 2, 0, "Tabs" )
   oTabs:CommandBar:Controls:Add( 1, ID_ADDTAB, "Add" )

   oGroups = oMenu:CommandBar:Controls:Add( 2, 0, "Groups" )
   oGroups:CommandBar:Controls:Add( 1, ID_ADDGROUP, "Add" )

   oControls = oMenu:CommandBar:Controls:Add( 2, 0, "Controls" )
   oControls:CommandBar:Controls:Add( 1, ID_ADDBUTTON, "Add Button" )

   oImages = oMenu:CommandBar:Controls:Add( 2, 0, "Images" )
   oImages:CommandBar:Controls:Add( 1, ID_ADDIMAGE, "Load Image" )

   ACTIVATE WINDOW oWnd

return nil

function RibbonBarEvent( cEvent, aParams )

   local oControl, oTab, oGroup, oItem, cBmpFile 

   do case
      case cEvent == "Execute"
           
           oControl = aParams[ 1 ]
           
           do case
              case oControl:Id == ID_ADDTAB
                   oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) )
                   oControl:Id = oRb:TabCount
                   oControl:Selected = .T.

              case oControl:Id == ID_ADDGROUP
                   if oRb:TabCount > 0
                      oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                                             ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   

              case oControl:Id == ID_ADDBUTTON
                   if oRb:TabCount == 0
                      oControl = oRb:InsertTab( oRb:TabCount + 1, "Tab " + AllTrim( Str( oRb:TabCount + 1 ) ) ) 
                      oControl:Id = oRb:TabCount
                      oControl:Selected = .T.
                   endif
                   if oRb:SelectedTab:Groups:GroupCount == 0
                      oRb:SelectedTab:Groups:AddGroup( "Group " + AllTrim( Str( oRb:SelectedTab:Groups:GroupCount + 1 ) ),;
                                             ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount + 1 )
                   endif   
                   if oRb:SelectedTab:Groups:GroupCount > 0
                      oGroup = oRb:FindGroup( ( oRb:SelectedTab:Index * 10 ) + oRb:SelectedTab:Groups:GroupCount )
                      oItem = oGroup:Add( xtpControlButton, 1, nil )
                      oItem:Caption = "Button " + AllTrim( Str( oGroup:Count ) )
                   endif   

              case oControl:Id = ID_ADDIMAGE
                   cBmpFile = cGetFile( "*.bmp", "Please select a BMP file" ) 
                   if File( cBmpFile )
                      MsgInfo( oIcons:Count + 1 )
                      oIcons:LoadBitmap( cBmpFile, oIcons:Count + 1, xtpImageNormal )
                   endif   
                   
              otherwise
                   if ! Empty( oControl:Caption )
                      ControlInspect( oControl )     
                   endif   

           endcase        
   endcase
   
return nil     

function ControlInspect( oControl )

   local oDlg, cCaption := PadR( oControl:Caption, 30 )
   local cTabCaption := PadR( oRb:SelectedTab:Caption, 30 )
   local cGrpCaption := PadR( oControl:RibbonGroup:Caption, 30 )
   
   DEFINE DIALOG oDlg TITLE "Control Properties" SIZE 300, 300
   
   @ 0.9, 1 SAY "Caption:"
   
   @ 1,  4  GET cCaption VALID ( oControl:Caption := AllTrim( cCaption ), .T. )
   
   @ 1.9, 1 SAY "Width:"
   
   @ 2.2, 4 GET oControl:Width SIZE 25, 12

   @ 1.9, 12 SAY "Height:"
   
   @ 2.2, 12 GET oControl:Height SIZE 25, 12

   @ 2.9, 1 SAY "Icon Id:"
   
   @ 3.4, 4 GET oControl:IconId SIZE 25, 12

   @ 4.9, 1 SAY "Tab caption:"
   
   @ 5.6, 5.3 GET cTabCaption VALID ( oRb:SelectedTab:Caption := AllTrim( cTabCaption ), .T. ) SIZE 100, 12

   @ 5.7, 1 SAY "Group caption:"
   
   @ 6.6, 5.3 GET cGrpCaption VALID ( oControl:RibbonGroup:Caption := AllTrim( cGrpCaption ), oRb:RedrawBar(), .T. ) SIZE 100, 12

   @ 7, 10 BUTTON "Ok" ACTION oDlg:End()
   
   ACTIVATE DIALOG oDlg CENTERED
   
return nil            
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Cgallegoa »

Hola Antonio,

Ya encaramelados con Codejock, podrías darme alguna pista de cómo usar TASKPANEL de Codejock. Le doy por todos los lados, y aunque no me sale error no pinta nada. Tengo FWH 8.07

Un abrazo,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Carlos,

Ni sabia que existiese :-)

Como la usas ? Pon algunos ejemplos que podamos probar
regards, saludos

Antonio Linares
www.fivetechsoft.com
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Cgallegoa »

Antonio,

Code: Select all

#include "FiveWin.ch"

function Main()

   local oWnd
   local oTaskP, oGrps
   LOCAL oMenu

   MENU oMenu
   ENDMENU

   DEFINE WINDOW oWnd TITLE "FWH Support Codejock ActiveX" MENU oMenu // MDI

   oTaskP := TActiveX():New( oWnd, "Codejock.TaskPanel.12.1.1", 0, 0, 0, 0 )

    oGrps := oTaskP:Do( "Visisble",.T.)
    oGrps := oTaskP:Do( "Enable",.T.)
    oGrps := oTaskP:Do( "Expandable",.T.)
    oGrps := oTaskP:Do( "Groups")

      oItGr1 := oGrps:Add(0,"Uno")
       oItGr1:Caption := "Dificil"
       oItGr1:Special := .T.
         xxx := oItGr1:Items:Add(1,"Uno",1,1)
         oItGr1:Items:Add(1,"Uno",1,2)

MsgInfo(ValType(xxx))

       oItGr2 := oGrps:Add(1,"Dos")
       oItGr3 := oGrps:Add(2,"Tres")

   ACTIVATE WINDOW oWnd

return nil
 
Saludos,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Cgallegoa »

También he probado SKINFRAMEWORK, inclusive la combiné con RIBBONBAR, y funciona perfecto !!! en XP y en vista
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Cgallegoa »

Realmente Codejock es excepcional. El único problema es que su manual es super difícil de enterder para los que no manejamos Visual Basic.

Si nos dieras una buena guía de cómo manejar los objetos en esta OCX estaríamos hechos en cuanto a mejorar sensiblemente la presentación y diseño de nuestras aplicaciones, y, de esta forma, lograrías una excelente dupleta entra FiveWin y Codejock en beneficio de la comunidad fivewinera.

Saludos,

Carlos Gallego
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Carlos,

Yo ni siquiera he mirado el manual :-)

Desde Microsoft Word, abres VBA (Visual Basic for Applications) y tiene un inspector de classes. Y ahi puedes ir viendo datos, metodos y eventos. Es bastante intuitivo :-)
regards, saludos

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

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Antonio Linares »

Carlos,

Mira a ver si soporta este método:

oActiveX:Do( "AttachToWindow", oWnd:hWnd )
regards, saludos

Antonio Linares
www.fivetechsoft.com
Rossine
Posts: 343
Joined: Tue Oct 11, 2005 11:33 am

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Rossine »

Antonio,

Seria possível incluir estas mudanças activex na versão de 9.01 ?
Obrigado, Regards, Saludos

Rossine.

xHarbour comercial (xAcc) -> Testando harbour + bcc / msvc
fwh 9.05
Windows XP SP2
Cgallegoa
Posts: 335
Joined: Sun Oct 16, 2005 3:32 am
Location: Quito - Ecuador
Contact:

Re: Clase TActiveX mejorada y RibbonBar más fácil

Post by Cgallegoa »

Antonio,

Si soporta oActiveX:Do( "AttachToWindow", oWnd:hWnd ), pero igual no pinta nada :(

Vale la pena que veas el manual "SymbolReference.chm".

He revisado con VBA, pero igual, no encuentro por dónde hacerla funcionar, me quedó grande :oops:
Saludos,

Carlos Gallego

*** FWH-20.07, xHarbour 1.2.3 Build 20190603, Borland C++7.30, PellesC ***
Post Reply