Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Hacer Que Se Expanda Contenido De Fmain.
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Hacer Que Se Expanda Contenido De Fmain. 
 
Estoy reutilizando codigo de una aplicacion llamada base de datos.

Me abri el codigo y me los estudie un poco ya que de raiz no sabria programarlo me monte una buena faena con el sqlite browser ya que hace el programa uso de base de datos local y no sabia que se podia editar el contenido de las tablas clickeando en aplicaciones en el IDE gambas pero logre descubrirlo.

Bueno he logrado hacer que el programa funcione me falta traducirlo en los comentarios.
No logro entender ciertas cosas y no se si es fallo del codigo o de la parte grafica.Pero tengo un pequeño problema.

Quiero que el contenido del Fmain se expanda al maximizar la ventana o redimensionarla por eso le meti un control Hbox y active la propriedad Fill en el Fmain y le active evento expand en Hbox pero me expande solo una imagen que tengo en Fmain y no el contenido de la columnview y botones.

Otra cosa alguien sabe como podria alinear el contenido de las celdas de la base de datos por ejemplo a "center" o bien ponerle espacio - porque algunas celdas se me colan a otras.

Os dejo imagen y código.
Con Hbox
 2019_08_08_171653_1280x1024_scrot
Sin Hbox
 2019_08_08_172254_1280x1024_scrot

' gambas class file

Private conexion As Connection
Private clave As String
Private campos As New String[7]
Private consultaTabla As Result

Public Sub _new()
  'Inicializamos la clave, que posteriormente
  'será usada para conocer el número de fila
  'en el que se encuentra el cliente que necesitemos
  clave = "0"
  'Inicializamos los campos
  campos[0] = "id"
  campos[1] = "Nome"
  campos[2] = "Apelido"
  campos[3] = "Idade"
  campos[4] = "NIF"
  campos[5] = "Ano"
  campos[6] = "Fone"
End

Public Sub Form_Open()
  'Introducimos los datos de la cabecera de nuestra tabla
  'cvClientes es el objeto de tipo ColumnView que hemos añadido
  'al form
  cvClientes.Clear()
  'Especificamos el numero de columnas de la tabla
  cvClientes.Columns.Count = 7
  cvClientes.Columns[0].Text = campos[0]
  cvClientes.Columns[1].Text = campos[1]
  cvClientes.Columns[2].Text = campos[2]
  cvClientes.Columns[3].Text = campos[3]
  cvClientes.Columns[4].Text = campos[4]
  cvClientes.Columns[5].Text = campos[5]
  cvClientes.Columns[6].Text = campos[6]
  
  'Comprobamos si tenemos conexión a la base de datos
  If AbrirConexion() Then Return
  'En cuyo caso almacenamos sus valores en la variable
  'de tipo Result consultaTabla
  consultaTabla = conexion.Exec("select * from Clientes")
  'Hemos seleccionado todos los elementos de la base Clientes y
  'almacenado en la variable consultaTabla
  'Si hay elementos en la base los mostramos en la tabla
  If consultaTabla.Available Then MostrarRegistros()
End

Public Function AbrirConexion() As Boolean
  'Esta funcion devuelve False si la conexion se lleva a cabo
  'correctamente
  'Si ya hay una conexion salimos de la funcion
  If conexion <> Null Then Return False
  'En caso contrario, instanciamos un objeto del tipo Connection y creamos la conexión
  conexion = New Connection
  conexion.Type = "sqlite3"
  conexion.Host = "/home/joao/gambices/basedado/BaseDatosClientes"
  conexion.Name = "Clientes"
  Try conexion.Open()
  If Error Then
    Message.Error("Error al conectar a la base de datos")
    conexion = Null
    Return True
  Endif
  Return False
End

Public Sub CerrarConexion()
  'Aquí cerramos la conexión en caso de que así se requiera
  'Si la conexion esta cerrada, se sale del método, y si no lo esta
  'se cierra
  If conexion = Null Then Return
  conexion.Close()
  conexion = Null
End

Public Sub MostrarRegistros()
  'Aqui se van a volcar todos los valores de la base de datos en
  'nuestra tabla. Previamente tenemos los valores volcados
  'en la variable consultaTabla, que es del tipo Result  
  Do While consultaTabla.Available
    'Aqui recogemos el valor de la clave, que en nuestra base
    'de datos es el registro correspondiente a id.
    clave = consultaTabla["id"]
    'Debemos primeramente añadir la nueva fila en la tabla. Para ello
    'se utiliza el método Add.
    cvClientes.Add(clave, clave)
    'El primer elemento de la nueva fila es id
    'A esa fila se accede utilizando la referencia "clave"
    'Como ya hemos indicado que tenemos 6 columnas, podemos
    'ir indicando la posición dentro de esa fila
    cvClientes[clave][1] = consultaTabla[campos[1]]
    cvClientes[clave][2] = consultaTabla[campos[2]]
    cvClientes[clave][3] = consultaTabla[campos[3]]
    cvClientes[clave][4] = consultaTabla[campos[4]]
    cvClientes[clave][5] = consultaTabla[campos[5]]
    cvClientes[clave][6] = consultaTabla[campos[6]]
    consultaTabla.moveNext()
  Loop
  CerrarConexion()
  
End


Public Sub btnNuevo_Click()

  'Para introducir un nuevo elemento vamos a utilizar otra
  'ventana, que debe ser llamada desde este método
  'y que cuando se cierre vuelva aquí
  'Comprobamos primero si la conexión es posible
  If AbrirConexion() Then Return
  'En cuyo caso llamamos a la nueva ventana y le enviamos
  'las variables que necesite para operar
  FData.RunNew(conexion, clave)
  'Cuando se cierre la nueva ventana el programa vuelve a este
  'punto, por lo que debemos cerrar la operación
  CerrarConexion()
  'Y llamar a la rutina Form_Open para que muestre el nuevo
  'cliente en nuestra tabla (recordemos que dentro de esa rutina se
  'llama al metodo MostrarClientes)
  Form_Open()

End



Public Sub btnModificar_Click()
  'Cuando el botón modificar es pulsado hay que
  'hacer comprobaciones
  'Necesitamos también de una variable Result para
  'ser pasada a la nueva ventana
  Dim consultaTablaModificar As Result
  If cvClientes.Current = Null Then Return
  If cvClientes.Current.Selected = False Then
    Message.Info("Debe seleccionar algun cliente")
    Return
  Endif
  If AbrirConexion() Then Return
  consultaTablaModificar = conexion.Edit("Clientes", "id=&1", cvClientes.Current.key)
  'Ya tenemos la variable con el Cliente de la base de datos que corresponde, así
  'que podemos proceder a llamar a la nueva ventana enviando las variables
  FData.RunEdit(consultaTablaModificar)
  'Cuando se cierre la nueva ventana el programa seguirá su ejecución por aquí
  'Ahora debemos actualizar nuestra tabla y cerrar la conexion
  cvClientes.Current[0] = consultaTablaModificar[campos[0]]
  cvClientes.Current[1] = consultaTablaModificar[campos[1]]
  cvClientes.Current[2] = consultaTablaModificar[campos[2]]
  cvClientes.Current[3] = consultaTablaModificar[campos[3]]
  cvClientes.Current[4] = consultaTablaModificar[campos[4]]
  cvClientes.Current[5] = consultaTablaModificar[campos[5]]
  cvClientes.Current[6] = consultaTablaModificar[campos[6]]
  CerrarConexion()

End

Public Sub btnBorrar_Click()

  'Cuando el botón borrar es pulsado
  'hay que hacer una serie de comprobaciones
  'La primera es comprobar si existe el cliente
  If cvClientes.Current = Null Then Return
  'Después si hay alguno pulsado
  If cvClientes.Current.Selected = False Then
    Message.Info("Debe seleccionar algun cliente")
    Return
  Endif
  'Comprobamos si hay conexión (recordar que si devuelve True indica
  'que no hay conexión)
  If AbrirConexion() Then Return
  If Message.Question("Borrar Cliente", "si", "no") = 2 Then
    CerrarConexion()
    Return
  Endif
  Try conexion.Exec("delete from Clientes where id=&1", cvClientes.Key)  
  If Error Then Message.Error("Imposible eliminar el Cliente")
  CerrarConexion()
  cvClientes.Current.Delete()
  clave = Str((Val(clave)) - 1)

End

Public Sub btnSalir_Click()

  Me.Close()

End



Public Sub VBox1_MouseDown()

  

End
 


' gambas class file

Private conexion As Connection
Private clave As String
Private modificando As Boolean
Private consultaTablaModificar As Result

Public Sub RunNew(DataConexion As Connection, DataClave As String)
  'Este método recibe las variables conexion y clave de
  'la ventana principal
  modificando = False
  'Estas variables son almacenadas para ser usadas si el
  'cliente clica Aceptar
  conexion = DataConexion
  clave = DataClave
  'La nueva Clave debe incrementarse en uno, asi que
  clave = Str((Val(clave)) + 1)
  'Esta ventana estará activa mientras no sea cerrada
  Me.ShowModal()
  
End

Public Sub RunEdit(DataConsultaTablaModificar As Result)
  
  consultaTablaModificar = DataConsultaTablaModificar
  modificando = True
  txtNombre.Text = consultaTablaModificar["Nome"]
  txtApellido1.Text = consultaTablaModificar["Apelido"]
  txtApellido2.Text = consultaTablaModificar["Idade"]
  txtNIF.Text = consultaTablaModificar["NIF"]
  txtLetra.Text = consultaTablaModificar["Ano"]
  txtFone.Text = consultaTablaModificar["Fone"]
  Me.ShowModal()
  
End

Public Sub btnAceptar_Click()

  If modificando Then
  consultaTablaModificar["Nome"] = txtNombre.Text
  consultaTablaModificar["Apelido"] = txtApellido1.Text
  consultaTablaModificar["Idade"] = txtApellido2.Text
  consultaTablaModificar["NIF"] = txtNIF.Text
  consultaTablaModificar["Ano"] = txtLetra.Text
  consultaTablaModificar["Fone"] = txtFone.Text
  consultaTablaModificar.Update()
  Else
    Try conexion.Exec("insert into Clientes values (&1,&2,&3,&4,&5,&6,&7)", clave, txtNombre.Text, txtApellido1.Text, txtApellido2.Text, txtNIF.Text, txtLetra.Text, txtFone.Text)
  Endif
Me.Close()
End

Public Sub btnCancelar_Click()

  Me.Close()

End
 

 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Citar:
active la propriedad Fill en el Fmain

Fill lo que hace es que todos los controles tengan el mismo tamaño que el contenedor. Normalmente sólo se usa en los formularios o paneles que tengan sólo un control dentro.
Subir así el código es complejo y muy difícil de encontrar lo que quieres... sobre todo porque el tema de la redimensión y ubicación de los controles no viene en el código.
Sube un proyecto donde ocurra eso que dices y te podremos ayudar.

Saludos
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Aqui te dejo el programa en el source type. (Le quite el container Hbox para que no diera problema)

Enlace

Tiene en atencion que el path esta en

conexion.Host = "/home/joao/gambices/basedado/BaseDatosClientes"

Tendras que editarlo creo yo o te dara error de coneccion.

El programa lo baje de aqui → http://geekenformacion.blogspot.com...a-clientes.html

Lo estube alterando para ponerle una opcion más en la base de datos, tengo la idea de seguir estudiandolo y intentar poner otras cosas pero eso ya no se si podre hacerlo.

Muchas gracias.
 



 
última edición por portaro el Jueves, 08 Agosto 2019, 21:50; editado 1 vez 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Aquí tienes lo que creo que querías.
Cosas que le he hecho:

Fmain: Autoresize=False, Expand=true, Margin=true (esto no es necesario, pero queda bonito), Arrangement=Vertical

cvClientes: Autoresize=False, Expand=true

Botones: He creado un hbox y los he metido dentro. El hbox tiene la propiedad spacing=true

PictureBox1: Expand=true

Espero que te sirva.

Saludos

basesdadosmega-0.0.4.tar.gz
Descripción:  
Descargar
Nombre del archivo: basesdadosmega-0.0.4.tar.gz
Tamaño: 25.49 KB
Descargado: 34 veces
basesdadosmega-0.0.4.tar.gz
Descripción:  
Descargar
Nombre del archivo: basesdadosmega-0.0.4.tar.gz
Tamaño: 25.49 KB
Descargado: 34 veces
basesdadosmega-0.0.4.tar.gz
Descripción:  
Descargar
Nombre del archivo: basesdadosmega-0.0.4.tar.gz
Tamaño: 25.49 KB
Descargado: 34 veces

 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
shordi escribió: [Ver mensaje]
Aquí tienes lo que creo que querías.
Cosas que le he hecho:

Fmain: Autoresize=False, Expand=true, Margin=true (esto no es necesario, pero queda bonito), Arrangement=Vertical

cvClientes: Autoresize=False, Expand=true

Botones: He creado un hbox y los he metido dentro. El hbox tiene la propiedad spacing=true

PictureBox1: Expand=true

Espero que te sirva.

Saludos


Muchas gracias amigo.
Veo que era tema de opciones de propiedad he intentado varias cosas alli en esas opciones y no logre nada.

Gracias por tu tiempo.
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Bueno pues os pongo aqui el resultado final que el amigo Shordi me ayudo a conseguir , lo he subido a la farm de Gambas.


obsru1aqzfho

Tiene un pequeño problema ya que la imagen logo que sale bien al rodar el programa en el IDE de gambas al hacer el paquete de instalacion y instalar en sistema no sale. No se si teneis alguna sugerencia.

Dejo el source y por si interesa los paquetes de instalacion para Ubuntu.

Paquetes

Source

Gracias a todos.
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Gracias por compartir. Le echaré un vistazo.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Cuando se genera el paquete de instalación todo el contenido de la carpeta del proyecto se incluye en el ejecutable... excepto la carpeta .hidden
Has ubicado la imagen en la carpeta .hidden, por tanto cuando se ejecuta en otra máquina que no es la tuya o en un path distinto al de desarrollo símplemente no existe.
Cambia la imagen a la carpeta raíz del proyecto y seleccionala en la propiedad .picture del picturebox y arreglado.

Saludos.
 




===================
No podemos regresar
 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
shordi escribió: [Ver mensaje]
Cuando se genera el paquete de instalación todo el contenido de la carpeta del proyecto se incluye en el ejecutable... excepto la carpeta .hidden
Has ubicado la imagen en la carpeta .hidden, por tanto cuando se ejecuta en otra máquina que no es la tuya o en un path distinto al de desarrollo símplemente no existe.
Cambia la imagen a la carpeta raíz del proyecto y seleccionala en la propiedad .picture del picturebox y arreglado.

Saludos.


Hoye que uno no se acuesta sin aprender nada nuevo cada dia, eso no o sabia yo aún. Gracias por el truco del almendruco desconocia totalmente eso. Siempre sabeis cosas que yo ni idea tengo de donde lo aprendistes. Magnifico amigo luego que pueda lo corregire y  intentare sustituir el programa por el corregido en el farm de gambas.

 
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Hacer Que Se Expanda Contenido De Fmain. 
 
Acabo de corregirlo en la farm de Gambas.

Opte por dejar un paquete sin la imagen saliendo con el vendor mega por si alguien lo quiere sin la imagen alla en el farm de gambas.
 



 
portaro - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Hacer Que El Textarea Cambie Cada Dia Su C... vikobak General 8 Miercoles, 16 Junio 2010, 22:11 Ver último mensaje
vikobak
No hay nuevos mensajes Mostrar Contenido De Ejecucion cyberx0x General 2 Viernes, 01 Julio 2011, 15:26 Ver último mensaje
cyberx0x
No hay nuevos mensajes Acceder A Las Propiedades De Controles Fma... honovan General 4 Sabado, 19 Agosto 2017, 16:24 Ver último mensaje
honovan
No hay nuevos mensajes TableView Y Hacer Que Una Celda No Muestre... tincho Aplicaciones/Fragmentos de Código 9 Jueves, 25 Octobre 2018, 21:09 Ver último mensaje
tincho
 

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