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, 22: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
 




===================
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
Mostrar mensajes anteriores:    
 
Ocultar¡Este tema fue útil?

 

Elegir valoración:                       

Media de valoración Valoración mínima Valoración máxima Número de valoraciones
0.00 0 0 0
 
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, 23:11 Ver último mensaje
vikobak
No hay nuevos mensajes Guardar El Contenido De Un DrawingArea guadafan General 5 Jueves, 31 Julio 2014, 11:36 Ver último mensaje
vuott
No hay nuevos mensajes Acceder A Las Propiedades De Controles Fma... honovan General 4 Sabado, 19 Agosto 2017, 17: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, 22: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 0 invitados
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
No puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron