Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Las Clases De GambasCAD
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Las Clases De GambasCAD 
 
Hilo para ir exponiendo problemas y necesidades.
Las clases de gambasCADE son tanto las entidades del dibujo como las herramientas de modificación. Como pueden tanto invocarse desde el botón dedicado como por comando (próximamente) , ademas de agruparse convenientemente en familias, me parece que nos quedamos cortos con "gender"
' gambas class file

' Entity maintained by Terco  
' V2   La version de la clase
Public gender As String = ("doslineas")
Public Const DrawingOrder As Integer = 1        ' 1 = draws first
 


pero viendo la expansion que va teniendo me parece que con "gender" nos quedamos cortos
Public Const BELONGS As String = "gambasCADE" ' permitiria buscarla entre todas las clases de gambas y argegarla a la lista de comandos automaticamente
Public Const NAME As String = "doslineas"
Public nickname As String = ("doslineas") ' unico traducible, el nombre del comando a escribir para usar esta clase
Public Const SURNAME As String = "lineas" ' esta entidad debera ser agrupada junto a otras en un solo boton
Public Const UseWith As String = "clsElementBuilder"  ' esta clase no puede ser asignada a clsJob, debe utilizarse a traves de la clase clsElementBuilder
 

 




===================
"Los IF son mas rápidos" - autor anónimo
 
última edición por tercoIDE el Martes, 05 May 2020, 02:43; editado 1 vez 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
Este codigo lee todas las clases que tiene cargadas gambas, y podria servir para ordenarlas por familia basandose en la carpeta donde  estan. Pero falla en algo:
si nos las invocamos primero, no estan en el listado. Alguien saba como podriamos obligar a gambas a leer todas nuestras clases antes que las hayamos usado?

(el codigo sirve para cualquier programa)


    Dim cadaClase As Class
    Dim simbolo As String
    Dim o As Object
    Dim nuestra As Boolean
    
    
    For Each cadaClase In Classes
         ' cargamos un objeto con la clase
        o = Class.Load(cadaClase.Name)
       nuestra = False                                                      ' presuponemos que no es nuestra
        For Each simbolo In cadaClase.Symbols
          
            If simbolo = "BELONGS" Then                                     ' La clase nos puede pertenecer pertenece
                If Object.GetProperty(o, simbolo) = "gambasCAD&E" Then
                    Print cadaClase.Name
                    nuestra = True                                          ' es nuestra!!
                Else
                    Break                                                   ' no tiene sentido seguir revisando
                Endif
            Endif
        Next
        
        If nuestra Then
            For Each simbolo In cadaClase.Symbols
                If simbolo = "NAME" Then Print "Nombre:" & Object.GetProperty(o, simbolo)
                If simbolo = "FAMILY" Then Print "Familia:" & Object.GetProperty(o, simbolo)
            Next
            
        Endif

        o = Null
        
        
    Next

 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
tercoIDE escribió:  
Este codigo lee todas las clases que tiene cargadas gambas, y podria servir para ordenarlas por familia basandose en la carpeta donde  estan. Pero falla en algo:
si nos las invocamos primero, no estan en el listado. Alguien saba como podriamos obligar a gambas a leer todas nuestras clases antes que las hayamos usado?

En principio podría hacerse listando los archivos .class y luego leyendo en su interior para buscar algo en particular.
Una vez que se tiene la lista y el contrnido buscado se plasma en un archivo de texto interno en el directorio raíz del programa por ejemplo.
Luego se lee este archivo al estilo gb.settings y listo.
Esta claro que esto se hace antes de "compilar" el .gambas luego cuando se usa el programa compilado ya no tiene sentido volver a correr dicho código.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
tincho escribió:  

En principio podría hacerse listando los archivos .class y luego leyendo en su interior para buscar algo en particular.
Una vez que se tiene la lista y el contrnido buscado se plasma en un archivo de texto interno en el directorio raíz del programa por ejemplo.
Luego se lee este archivo al estilo gb.settings y listo.
Esta claro que esto se hace antes de "compilar" el .gambas luego cuando se usa el programa compilado ya no tiene sentido volver a correr dicho código.
Saludos.


Claro, pero si distribuimos el ejecutable esto no va a ser posible.

Me parece que deberian estar en settings:

[Entities]
1=clsLine
2=clsLosa

[Tools]
1=clsFileLoadSave
2=clsMove


Luego leemos los settings, cargamos las clases y leemos nombre y familia para ubicarlas correctamente en las barras de herrmientas.
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
tercoIDE escribió:  
..Claro, pero si distribuimos el ejecutable esto no va a ser posible...

No, cuando distribuis el ejecutable ete ya incluira la información, y como justamente es un ejecutable nunca agregaras o quitaras clases.
Olvidate de settings, no es viable porque no va dentro del ejecutable sino que es un archivo externo.
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
de todas formas, me parece que las clases deberian llevar el nombre con que se las invoca desde la linea de comnados

asi de simple

ya sabemos que Line.Class es una clase, no hace falta ponerle clsLine.Class

y mas si esta en el directorio Entities.....

"keep it simple and stupid"
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
tercoIDE escribió:  
de todas formas, me parece que las clases deberian llevar el nombre con que se las invoca desde la linea de comnados
asi de simple
ya sabemos que Line.Class es una clase, no hace falta ponerle clsLine.Class
y mas si esta en el directorio Entities.....
"keep it simple and stupid"

ok, si estoy de acuerdo como te decía antes, pero hay que tener en cuenta que cuando nombras una clase en gambas que interfiere con una del ide como copy por ejemplo creo que ahí hay problemas.
Le damos para adelante. voy a hacer una lista de clases y lo que hacen cada una y pongo acá la lista con el nombre actual y el que tendría que ir ¿Te parece?
Saludos.
 



 
tincho - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
tincho escribió:  
tercoIDE escribió:  
de todas formas, me parece que las clases deberian llevar el nombre con que se las invoca desde la linea de comnados
asi de simple
ya sabemos que Line.Class es una clase, no hace falta ponerle clsLine.Class
y mas si esta en el directorio Entities.....
"keep it simple and stupid"

ok, si estoy de acuerdo como te decía antes, pero hay que tener en cuenta que cuando nombras una clase en gambas que interfiere con una del ide como copy por ejemplo creo que ahí hay problemas.
Le damos para adelante. voy a hacer una lista de clases y lo que hacen cada una y pongo acá la lista con el nombre actual y el que tendría que ir ¿Te parece?
Saludos.


es verdad, sigamos con el cls
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Las Clases De GambasCADE 
 
tercoIDE escribió:  


es verdad, sigamos con el cls


o mejor "cad" que es mas elocuente

cadLine.Class es menos redundante que clsLine.Class , y nos evita los conflictos con las clases nativas...

ademas, y como sugirio Julio, deberiamos hacer heredar todo lo comun, pero eso tiene dos inconvenientes: nos agrega un Me. a todo y nos acomoda las clases en el IDE abajo de la clase padre, eso para 10 clases esta OK pero para 200 no esta tan bien

como alternativa a este problema se me ocurrio pedirle a Benoit que ponga una Opcion en la configuracion de IDE de que no haga esto
 




===================
"Los IF son mas rápidos" - autor anónimo
 
tercoIDE - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron