Buscar en el Blog

lunes, 11 de julio de 2016

PowerBuilder: Ocultar campos en Powerbuilder por condicion.

En nuestras aplicaciones a veces necesitamos ocultar algunos campos según la opción que nosotros escojamos. Esta funcionalidad se puede realizar mediante código, pero también podemos hacerlo a traves de algunas propiedades y con menos código. Por ejemplo, según sea la selección del documento Boleta o Factura. Si es Boleta, no debe aparecer el subtotal ni el igv. De caso contrario, si es factura, si debe aparecer.




Aquí les mostraré los pases que se deben seguir.
  1. Debesmos estar en el objeto datawindow.
  2. Seleccionar el campo u objeto a  condicionar.
  3. Presionar el boton que esta al lado derecho de la propiedad visible.
  4. En la ventana de expresiones colocar la condicion. Por ejemplo en mi caso. 
if( tipodocumento =2,1,0) 

Si tipodocumento es dos, entonces que sea visible Caso contrario esta invisble.
Tipodocumento es el campo por el cual yo realizo la condicion. Si es Factura que se muestre, de caso contrario, si es Boleta  que oculte.





miércoles, 29 de junio de 2016

Error: "Valor de tiempo de espera caducado. " .NET

“Valor de tiempo de espera caducado. El período de tiempo de espera expiró antes de obtener una conexión del grupo. Esto puede suceder porque todas las conexiones de la agrupación estaban en uso y se alcanzó el máximo tamaño del grupo.
Descripción: Excepción no controlada al ejecutar la solicitud Web actual. Revise el seguimiento de la pila para obtener más información acerca del error y dónde se originó en el código.

Detalles de la excepción: System.InvalidOperationException: Valor de tiempo de espera caducado. El período de tiempo de espera expiró antes de obtener una conexión del grupo. Esto puede suceder porque todas las conexiones de la agrupación estaban en uso y se alcanzó el máximo tamaño del grupo”
Es un problema relacionado con el numero de conexiones administradas, para solventarlo podemos añadir a la cadena de conexión el siguiente valor: 
Max Pool Size=10024
Con lo cual la cadena de conexion quedaria asi.
 <connectionStrings>
    <add name="DatabaseConnectionString" connectionString="Data Source=.;Min Pool Size=0;Max Pool Size=10024;Pooling=true;Initial Catalog=basededatos;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

viernes, 1 de abril de 2016

martes, 1 de marzo de 2016

Game Programming Using Qt


Game Programming Using Qt
Programacion de Juegos Usando Qt
Witold Wysota
Lorenz Hass

Idioma: Ingles
Páginas: 512

Programacion de juegos usando  Qt y Qt Quick


domingo, 28 de febrero de 2016

Estructura de Datos y Algoritmos en C ++


Estructura de Datos y Algoritmos en C ++
Data Structure and Algorithms in C++
Second Edition
Michael T. Goodrich
Roberto Tamassia
David Mount

Idioma: Ingles
Páginas: 738

domingo, 21 de febrero de 2016

Qt | Cambiar el fondo de un boton cuanto se hace click sobre este.





Vamos a ver como cambiamos de color de fondo de un boton cuando presionamos sobre este. Cuando se suelte el mouse, el boton retoma su color por defecto.


Para esto haremos uso de setStyleSheet para darle la aparencia que deseamos y dentro de las comillas, antes de indicar el formato colocamos QPushButton:pressed para indicar que cambie de color cuando el boton esté presionado.

this->setStyleSheet(" QPushButton:pressed {background-color: blue;yellow}");

Esta instrucción se puede colocar en el constructor de la clase y eso seria todo.



 Si desean tener la misma aparecian del boton de la imagen, pueden hacerlo con el siguiente codigo.


this->setStyleSheet("QPushButton {background-color: green;border-style: outset;border-width: 2px;border-radius: 10px;font: bold 14px;min-width: 4em; padding: 6px;} QPushButton:pressed {background-color: yellow;}");

jueves, 18 de febrero de 2016

Qt | Colocar un fondo a un mdiArea



Para insertar un fondo a un mdiArea es muy sencillo. Usaremos solo dos lineas de código.

QImage img("ruta del fondo/archivo.jpg");
ui->mdiArea->setBackground(img);
 
Si estamos usando un archivo de recursos, la primera linea cambiaria un poco:
 
QImage img(":/prefijo/archivojpg"); 


Qt | Posicionar una ventana hija dentro de un mdiArea



Si deseamos centrar una ventana que está dentro de un mdiArea, debemos hacer referencia al contenedor de la ventana.
frmComanda.parentWidget()->setGeometry(x,y,alto,ancho);

frmComanda es la ventana hija, muentras que con la instruccion parenWidget hago referencia al mdiArea. Con el método setGeometry() posicionamos la ventana. Este método recibe 4 parametros:
Posicion X, poscion Y, alto de la ventana(en este caso el alto de frmComanda), ancho de la ventana.

Entonces se podria posicionar la ventana de la siguiente manera:


ui->mdiArea->addSubWindow(&frmComanda,Qt::FramelessWindowHint);
frmComanda.parentWidget()->setGeometry((ui->mdiArea->width()- 700)*0.5,
(ui->mdiArea->height()- 600)*0.5,700,600);
frmComanda.show();


 

El libro está protegido y no se puede modificar | Desproteger libro de excel


Para desproteger un libro de excel, haremos uso de una macro.
Presionamos ALT+F11 para entrar al editor de Aplicaciones de Visual Basic.


Ingresamos a cualquier hoja y agregamos el siguiente código.
Sub DesprotegerLibro()

If MsgBox("Realmente desea desproteger el libro actual?", _

vbCritical + vbYesNo + vbDefaultButton2, "DesprotegerLibro") = vbYes Then

Dim i As Integer, j As Integer, k As Integer

Dim l As Integer, m As Integer, n As Integer

On Error Resume Next

For i = 65 To 66: For j = 65 To 66: For k = 65 To 66

For l = 65 To 66: For m = 65 To 66: For i1 = 65 To 66

For i2 = 65 To 66: For i3 = 65 To 66: For i4 = 65 To 66

For i5 = 65 To 66: For i6 = 65 To 66: For n = 32 To 126

ActiveWorkbook.Unprotect Chr(i) & Chr(j) & Chr(k) & Chr(l) & Chr(m) & _

Chr(i1) & Chr(i2) & Chr(i3) & Chr(i4) & Chr(i5) & Chr(i6) & Chr(n)

If ActiveWorkbook.ProtectStructure = False And ActiveWorkbook.ProtectWindows = False Then

MsgBox "El libro está ahora desprotegido", vbInformation + vbOKOnly, "DesprotegerLibro"

Exit Sub

End If

Next: Next: Next: Next: Next: Next

Next: Next: Next: Next: Next: Next

End If

End Sub





Después de ejecutar la macro y aceptar el mensaje nos aparecerá otra ventana
indicando que el libro ha sido deshabilitado.
 
Finalemente el libro quedó desprotegido.