Home    Forum    Search    FAQ    Register    Log in


Post new topic  Reply to topic 
Page 1 of 1
 
 
Las Clases De GambasCAD
Author Message
Quote   Download Post  
Post 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
 
Last edited by tercoIDE on Tuesday, 05 May 2020, 02:43; edited 1 time in total 
tercoIDE - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Quote   Download Post  
Post 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 - ProfilePM 
Back to topPage bottom
Display posts from previous:    
 

Post new topic  Reply to topic  Page 1 of 1
 

Users browsing this topic: 0 Registered, 0 Hidden and 1 Guest
Registered Users: None


 
Permissions List
You cannot post new topics
You cannot reply to topics
You cannot edit your posts
You cannot delete your posts
You cannot vote in polls
You cannot attach files
You can download files
You cannot post calendar events



  

 

cron