https://foro.gambas-es.org/viewtopic.php?f=5&t=2127
-----------------------------------
jsbsan
Sabado, 14 Enero 2012, 13:16

Programa Simple: Crea Una Propiedad De Una Clase
-----------------------------------
Os traigo, una pequeña utilidad.

Es un programa que cuando le doy el nombre y el tipo de propiedad de una clase, genera el código fuente de la definición de esa propiedad.


[URL=http://imageshack.us/photo/my-images/546/definepropiedad.png/][IMG]http://img546.imageshack.us/img546/6920/definepropiedad.th.png[/IMG]

Uploaded with [URL=http://imageshack.us]ImageShack.us


Este es el código fuente:
[code linenumbers=false syntax=gambas]
' Gambas class file

PUBLIC SUB _new()

END

PUBLIC SUB Form_Open()
ME.caption = "Genera Definicion de Propiedad"
END

PUBLIC SUB ButtonSalir_Click()

  ME.close

END

PUBLIC SUB ButtonCrearCodigo_Click()
DIM codigo AS String
codigo = "PROPERTY nombre AS tipo \n"
codigo &= "PRIVATE hnombre AS NEW tipo \n\n"

codigo &= "PRIVATE FUNCTION nombre_read() AS tipo \n"
codigo &= "  RETURN hnombre \n"
codigo &= "END  \n\n"
 
codigo &= "PRIVATE SUB nombre_write(Valor AS tipo)\n"
codigo &= "  hnombre = Valor \n" 
codigo &= "END\n"  

codigo = Replace(codigo, "nombre", TextBoxPropiedad.text)
codigo = Replace(codigo, "tipo", ComboBox1.text)

'Para distinguir en pone New en el tipo...
IF InStr(ComboBox1.text, "[]") = 0 THEN codigo = Replace(codigo, "NEW", "")

  TextArea1.text = codigo

END



PUBLIC SUB ButtonLimpia_Click()
TextBoxPropiedad.text = ""
TextArea1.text = ""
TextBoxPropiedad.setfocus
END

PUBLIC SUB ButtonCopia_Click()
Clipboard.Copy(TextArea1.text)
END
[/code]


-----------------------------------
Shell
Domingo, 15 Enero 2012, 10:33

Re: Programa Simple: Crea Una Propiedad De Una Clase
-----------------------------------
Julio:

Simple, pero interesante.
A veces con pequeños códigos se aprende mucho.

Cuando hago un programa. Acabo haciendo otro más simple para probar como funciona algo determinado del mismo.

La imagen es un poco pequeña.  B-)

Saludos.


-----------------------------------
Shell
Domingo, 15 Enero 2012, 10:45

Re: Programa Simple: Crea Una Propiedad De Una Clase
-----------------------------------
Con pequeños códigos pueden aprender los que comienzan. :-)

 [img]http://foro.gambas-es.org/files/images/768/ejemplocadenas.png[/img] 

Por muy simple que pueda parecernos un código puede interesar a los principiantes.
Esto es solo un ejemplo. ;-)

[code linenumbers=false syntax=gambas]
PUBLIC frase AS String

PUBLIC SUB Form_Open()

END

PUBLIC SUB btnFrase_Click()
  frase = InputBox("Introduce tu frase")
  txtPizarra.Text = frase 
END

PUBLIC SUB BtnSustituir_Click()
  DIM letrasustituir AS String
  DIM letra AS String
  
  letrasustituir = InputBox("¿ Que letra quieres sustituir ?")
  letra = InputBox("¿ Con que letra ?")
  frase = Replace$(frase, letrasustituir, letra)
  txtPizarra.Text = frase  
  
END


PUBLIC SUB BtnLetraLetra_Click()  
  DIM posicion AS Integer  
  
  txtPizarra.Text = ""
  FOR posicion = 1 TO Len(frase)
    txtPizarra.Text = txtPizarra.Text & Mid$(frase, posicion, 1)
    WAIT 0.1
  NEXT
  
END


PUBLIC SUB BtnMayusculas_Click()
  txtPizarra.Text = UCase$(frase)
END

PUBLIC SUB BtnMinusculas_Click()
  txtPizarra.Text = LCase$(frase)
END

PUBLIC SUB BtnRepetir_Click()
  DIM repeticiones AS Integer
  DIM palabra AS String
  
  palabra = InputBox("¿ Qué palabra quieres que se repita?")
  repeticiones = InputBox("¿ Cuantas veces ?")  
  txtPizarra.Text = String$(repeticiones, palabra)  
  frase = txtPizarra.Text

END
[/code]

Y asi, pues operaciones con archivos, componentes.Etc,etc.

Saludos.


-----------------------------------
jsbsan
Domingo, 15 Enero 2012, 11:05

Re: Programa Simple: Crea Una Propiedad De Una Clase
-----------------------------------
Shell:

[quote]Por muy simple que pueda parecernos un código puede interesar a los principiantes. [/quote]
Pues la verdad es que si, pequeñas funciones y procedimientos, te pueden facilitan mucho el dia a dia.

[quote]La imagen es un poco pequeña. B-) [/quote]

He cambiado el servidor donde estaba alojada la imagen, ahora se ve bien. 


Saludos


-----------------------------------
Shell
Domingo, 15 Enero 2012, 11:08

Re: Programa Simple: Crea Una Propiedad De Una Clase
-----------------------------------
Otro Ejemplo:

 [img]http://foro.gambas-es.org/files/images/768/operaarchivos.png[/img] 

Ejemplos que por muy basicos que nos puedan parecer.En el momento que los hace
para practicar te olvidas de ellos y luego ayudan a mas miembros de la comunidad.

Formulario principal:
[code linenumbers=false syntax=gambas]
PUBLIC SUB Form_Open()
  ME.Center()
  ME.Caption = "Ejemplo de instrucciones para manejo de ficheros"
END

PUBLIC SUB restaurar()  
  txtaSalida.Text = ""
  Variables.contenido = ""    
END

PUBLIC SUB BtnAccess_Click()
  restaurar()
  PractAccess.miaccess()
  txtaSalida.Text = Variables.contenido
END

PUBLIC SUB BtnDir_Click()
  restaurar()
  PractDir.midir()
  txtaSalida.Text = Variables.contenido  
END

PUBLIC SUB BtnEof_Click()
  DIM archivo AS String
    
  archivo = User.Home &/ "pruebaarchivo.txt"
  restaurar()
  PractEof.mieof(archivo)
  txtaSalida.Text = Variables.contenido
END


PUBLIC SUB BtnExist_Click()
  DIM archivo AS String
  
  archivo = User.Home &/ "pruebaarchivo.txt" 'Este archivo existe,llamara al Procedimiento anidado PractEof
  'archivo =User.home &/ "noexisto.txt"
  restaurar()
  PractExist.miexist(archivo)
  txtaSalida.Text = Variables.contenido  
END

PUBLIC SUB BtnIsDir_Click()
  DIM nombreCarpeta AS String
  
  'nombreCarpeta = user.home &/ "noexisto" 'Este directorio no existe
  nombreCarpeta = User.Home &/ "Prueba"    'Este directorio existe
  restaurar()
  PractIsDir.miIsDir(nombreCarpeta)
  txtaSalida.Text = Variables.contenido  
  
END

PUBLIC SUB BtnStat_Click()
  DIM nombre AS String
  
  nombre = User.Home &/ "Prueba/JuegosDOS"
  restaurar()
  PractStat.miStat(nombre)
  txtaSalida.Text = Variables.contenido
END

PUBLIC SUB BtnTemp_Click()

  restaurar()
  PractTemp.mitemp()
  txtaSalida.Text = Variables.contenido
  
END


PUBLIC SUB BtnOpenClose_Click()
  DIM nombrearchivo AS String
  
  nombrearchivo = User.Home &/ "pruebaarchivo.txt"
  restaurar()
  PractOpenClose.miopenclose(nombrearchivo)
  txtaSalida.Text = Variables.contenido 
END
[/code]

Los diferentes modulo para ver que hace cada instrucción:

[code linenumbers=false syntax=gambas]
PUBLIC SUB miaccess()
   DIM archivo AS String 
   
  'La instrucción acces determina si un fichero es accesible o no.
  'Parece similar a ¿Exist?
  
  archivo = User.Home &/ "pruebaarchivo.txt"  
  Variables.contenido = Variables.contenido & "El archivo " & archivo & " " & CompruebaSiNo(Access(archivo)) & "\n"
  
  archivo = User.Home &/ "dragon64.txt"
  Variables.contenido = Variables.contenido & "El archivo " & archivo & " " & CompruebaSiNo(Access(archivo)) & "\n"
    
END


PUBLIC FUNCTION CompruebaSiNo(sino AS Boolean) AS String
DIM probar AS String

  IF sino = TRUE THEN 
    probar = "es accesible"
  ELSE IF sino = FALSE THEN 
    probar = "no es accesible"
  ENDIF 
  RETURN probar
  
END
-------------------
PUBLIC SUB midir()
DIM directorio AS String
DIM fichero AS String

directorio = User.Home
FOR EACH fichero IN Dir(directorio, "*.*").Sort()
  Variables.contenido = Variables.contenido & fichero & "\n"
NEXT 

END
-------------------
PUBLIC SUB mieof(nomarchivo AS String) 'nombarchivo es el nombre del archivo
DIM hFile AS File         'Nombre del archivo
DIM linea AS String       'Cada linea

OPEN nomarchivo FOR READ AS #hFile  
WHILE NOT Eof(hFile)
  LINE INPUT #hFile, linea
  Variables.contenido = Variables.contenido & linea & "\n"
WEND 
CLOSE #hFile
END
----------------------
PUBLIC SUB miexist(nombarchivo AS String)
  IF Exist(nombarchivo) THEN
    Variables.contenido = "El fichero: " & nombarchivo & "  existe." & "\n"
    Variables.contenido = Variables.contenido & "El contenido es: " & "\n"
    PractEof.mieof(nombarchivo)
  ELSE 
    Variables.contenido = "El fichero: " & nombarchivo & " no existe."
  ENDIF 
END
------------------------
PUBLIC SUB miIsDir(directorio AS String)
  DIM existedirectorio AS Boolean
    
  existedirectorio = IsDir(directorio)
  IF existedirectorio = TRUE
    Variables.contenido = "El directorio existe"
  ELSE 
    Variables.contenido = "El directorio no existe"
  ENDIF  
  
END
---------------------------
PUBLIC SUB miopenclose(nomarchivo AS String)
  DIM longitudarchivo AS Integer
  DIM linea AS String
  DIM hFile AS File
  
  IF Exist(nomarchivo) THEN 
    OPEN nomarchivo FOR READ AS #hFile
    longitudarchivo = Lof(hFile)
    WHILE NOT Eof(hFile)
      LINE INPUT #hFile, linea
      Variables.contenido = Variables.contenido & linea & "\n"
    WEND 
    CLOSE #hFile
  ELSE 
    Variables.contenido = Variables.contenido & "El archivo: " & nomarchivo & " no existe"
  ENDIF 
END
-----------------------------
PUBLIC SUB miStat(informacion AS String)
    
    IF Exist(informacion) THEN 
      Variables.contenido = "Tamaño: " & Round(Stat(informacion).Size / 1024) & "K" & "\n"
      Variables.contenido = Variables.contenido & "Grupo: " & Stat(informacion).Group & "\n"
      Variables.contenido = Variables.contenido & "Ultimo acceso: " & Format$(Stat(informacion).LastAccess, "dd/mm/yy") & "\n"
      Variables.contenido = Variables.contenido & "Ultimo cambio: " & Format$(Stat(informacion).LastChange, "dd/mm/yy") & "\n"
      Variables.contenido = Variables.contenido & "Ultima modficiación: " & Format$(Stat(informacion).LastModified, "dd/mm/yy") & "\n"
      Variables.contenido = Variables.contenido & "Ruta: " & Stat(informacion).Path & "\n"
      Variables.contenido = Variables.contenido & "Fecha y hora de creación " & Format$(Stat(informacion).Time, "dd/mm/yy hh:nn:ss") & "\n"
      Variables.contenido = Variables.contenido & "Usuario: " & Stat(informacion).User & "\n"
    ELSE 
      Variables.contenido = "El archivo o carpeta no existe"
    ENDIF 
END
---------------------------
PUBLIC SUB mitemp()
  
  Variables.contenido = Temp$()
  
END
--------------------------
PUBLIC contenido AS String

[/code]

Podemos aprender con ejemplos simples.Como se va haciendo más grande el programa. :oops: 
Por cierrto, el modulo para probar Temp$. No salio bien al convertirlo en código. :???: 

Saludos.


