RenderTransform excede tamaño del contenedor (Render Transforma exceed container size)

Deja un comentario

Cuando estaba utilizando la clase  ScaleTransform para realizar un zoom sobre un control tenia el problema que el control al que hacia zoom sobresalia al tamaño del contenedor.

Ejemplo:

2018-05-26_23-55-28

2018-05-26_23-57-13

Realizando multiples investigaciones encontre la solucion a este problema :

Utilizar un grid como contenedor del control al que se le hara el zoom , declarando una fila y una columna con Height y Width en auto.

Codigo de ejemplo XAML:

2018-05-27_00-16-48

CodeBehind:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace zoom_user_control
{
    ///

    /// Interaction logic for UserControlToZoom.xaml
    /// 

    public partial class UserControlToZoom : UserControl
    {
        public UserControlToZoom()
        {
            InitializeComponent();
        }

        private void UserControl_MouseWheel(object sender, MouseWheelEventArgs e)
        {
            var delta = (e.Delta / 2000d).ToMultipleOf(0.05d);
            this.MediaElementZoom = Math.Round(this.MediaElementZoom + delta, 2);
        }

        ///

        /// Gets or sets the media element zoom.
        /// 

        ///

        /// Gets or sets the media element zoom.
        /// 

        public double MediaElementZoom
        {
            get
            {
                var m = this.lbl;
                if (m == null) return 1d;

                var transform = m.RenderTransform as ScaleTransform;
                if (transform == null)
                    return 1d;

                return transform.ScaleX == null ? 1d : transform.ScaleX;
            }
            set
            {
                var m = this.lbl;
                if (m == null) return;

                var transform = m.RenderTransform as ScaleTransform;
                if (transform == null)
                {
                    transform = new ScaleTransform(1, 1);

                    m.RenderTransformOrigin = new Point(0.5, 0.5);
                    m.RenderTransform = transform;
                }

                transform.ScaleX = value;
                transform.ScaleY = value;

                if (transform.ScaleX  5)
                {
                    transform.ScaleX = 5;
                    transform.ScaleY = 5;
                }
            }
        }
    }
}

Extentions:


using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;

namespace zoom_user_control
{
    public static class Extentions
    {
        [MethodImpl(MethodImplOptions.AggressiveInlining)]
        public static double ToMultipleOf(this double value, double multiple)
        {
            var factor = Convert.ToInt32(value / multiple);
            return factor * multiple;
        }
    }
}

Si les sirvio , no olviden comentar 🙂

 

Link de Referencia

Obtener estatus de activacion de windows desde Powershell (PowerShell Get windows activation status)

Deja un comentario

En este post dejare el codigo en PowerShell para obtener el estatus de la activacion de Windows.


    $wpa = Get-WmiObject -class SoftwareLicensingProduct | Where-Object {$_.LicenseStatus -eq "1"}
    $InfoResult = @();
    $obj = New-Object –TypeName PSObject

    Write-Host $wpa

    if ($wpa)
    {
        foreach($item in $wpa) 
        {
         $itemDetails =
         @{            
                Date         = $(Get-Date -Format "yyyy-MM-dd HH:mm:ss.fff")           
                Node         =    $(Get-Content env:computername) 
                Status       = ActivationStatus($item.LicenseStatus);
          }    

            $InfoResult += New-Object PSObject -Property $itemDetails ;           
        }
    } 
    else 
    {
        $status = "Unlicensed"

        $itemDetails =
         @{            
                Date         = $(Get-Date -Format "yyyy-MM-dd HH:mm:ss.fff")           
                Node         =   $(Get-Content env:computername) 
                Status       =  $status;
          }    

            $InfoResult += New-Object PSObject -Property $itemDetails ;            
    }

   
   foreach($item in $InfoResult)
   {
            Write-Host " ";
            Write-Host "Fecha       : " $item.Date;
            Write-Host "Nodo        : " $item.Node;
            Write-Host "Estatus     : " $item.Status;
            Write-Host " ";
   }

La salida sera la siguiente:

Fecha : 2017-08-21 15:55:58.541
Nodo : MiPC
Estatus : Licensed

Si le sirvió no olviden comentar.

Saludos.

Obtener espacio disponible en el disco duro Powershell (Get Free Space in HardDisk PowerShell)

Deja un comentario

En este post dejare el codigo en PowerShell para obtener el espacio disponible del disco duro por particion.


$partitions= Get-WmiObject -Class Win32_LogicalDisk -Filter 'DriveType = 3' |Select-Object PSComputerName, Caption,@{N='Capacity_GB'; E={[math]::Round(($_.Size / 1GB), 2)}},@{N='FreeSpace_GB'; E={[math]::Round(($_.FreeSpace / 1GB), 2)}},@{N='PercentUsed'; E={[math]::Round(((($_.Size - $_.FreeSpace) / $_.Size) * 100), 2) }},@{N='PercentFree'; E={[math]::Round((($_.FreeSpace / $_.Size) * 100), 2) }}

foreach($z in $partitions)
{  
    Write-Host "Particion         : $($z.Caption)" ;    
    Write-Host "Capacidad Total   : $($z.Capacity_GB)  GB" ;    
    Write-Host "Espacio Libre     : $($z.FreeSpace_GB) GB" ;    
    Write-Host "Porcentaje Usado  : $($z.PercentUsed)  %" ;    
    Write-Host "Porcentaje Libre  : $($z.PercentFree)  %" ;   
    Write-Host "";   
}


La salida es la siguiente:

Particion : C:
Capacidad Total : 368.1 GB
Espacio Libre : 123.73 GB
Porcentaje Usado : 66.39 %
Porcentaje Libre : 33.61 %

Particion : E:
Capacidad Total : 97.14 GB
Espacio Libre : 19.71 GB
Porcentaje Usado : 79.71 %
Porcentaje Libre : 20.29 %

Si le sirvió no olviden comentar.

Saludos.

Obtener Software Instalado Powershell (Get software installed Powershell)

Deja un comentario

En este post dejare el codigo en PowerShell para obtener la lista de software instalado la pc donde se ejecute.


 $computer = $env:COMPUTERNAME;
	
		$LMkeys = "Software\Microsoft\Windows\CurrentVersion\Uninstall","SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall"
		$LMtype = [Microsoft.Win32.RegistryHive]::LocalMachine
		$CUkeys = "Software\Microsoft\Windows\CurrentVersion\Uninstall"
		$CUtype = [Microsoft.Win32.RegistryHive]::CurrentUser	
		
			$MasterKeys = @()
			$CURegKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($CUtype,$computer)
			$LMRegKey = [Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey($LMtype,$computer)
			ForEach($Key in $LMkeys)
			{
				$RegKey = $LMRegKey.OpenSubkey($key)
				If($RegKey -ne $null)
				{
					ForEach($subName in $RegKey.getsubkeynames())
					{
						foreach($sub in $RegKey.opensubkey($subName))
						{
							$MasterKeys += (New-Object PSObject -Property @{
							"ComputerName" = $Computer
							"Name" = $sub.getvalue("displayname")
							"SystemComponent" = $sub.getvalue("systemcomponent")
							"ParentKeyName" = $sub.getvalue("parentkeyname")
							"Version" = $sub.getvalue("DisplayVersion")
							"UninstallCommand" = $sub.getvalue("UninstallString")
							})
						}
					}
				}
			}
			ForEach($Key in $CUKeys)
			{
				$RegKey = $CURegKey.OpenSubkey($Key)
				If($RegKey -ne $null)
				{
					ForEach($subName in $RegKey.getsubkeynames())
					{
						foreach($sub in $RegKey.opensubkey($subName))
						{
							$MasterKeys += (New-Object PSObject -Property @{
							"ComputerName" = $Computer
							"Name" = $sub.getvalue("displayname")
							"SystemComponent" = $sub.getvalue("systemcomponent")
							"ParentKeyName" = $sub.getvalue("parentkeyname")
							"Version" = $sub.getvalue("DisplayVersion")
							"UninstallCommand" = $sub.getvalue("UninstallString")
							})
						}
					}
				}
			}
			$MasterKeys = ($MasterKeys | Where-Object {$_.Name -ne $Null -AND $_.SystemComponent -ne "1" -AND $_.ParentKeyName -eq $Null} 
| Select-Object Name,Version,ComputerName,UninstallCommand | Sort-Object Name)
        
            $MasterKeys

#    si la linea de abajo se descomenta exporta el resultado anterior a un archivo CSV
#    $MasterKeys | Export-Csv 'Ruta_DelArchivo.csv';

Si le sirvió no olviden comentar.

Saludos.

The project type is not supported by this installation

2 comentarios

Cuando trataba de abrir un proyecto en visual Studio 2010 de MVC3 me marcaba aparecía un cuadro de dialogo.

1

Me decía que el proyecto no se podía cargar. Revisando Visual Studio me apareció el siguiente error:

Error: The project file MiProyecto.csproj’ cannot be opened.

The project type is not supported by this installation.

Así que verificando, me di cuenta que no tenía instalada la extensión para crear proyectos en MVC3, con lo cual la tuve que descargar de la siguiente página:

http://www.microsoft.com/es-mx/download/details.aspx?id=4211

Lo instalamos :

2

y listo podemos abrir nuestro proyecto como si nada hubiese pasado.

Si les sirvio no olviden comentar.

Crear vista parcial y llamarla desde JQuery y MVC3

2 comentarios

En este post les explicare como crear una vista parcial y asi mismo realizar la llamada a la vista parcial desde Jquery en MV3, pero primero, ¿Que es una vista parcial?.

Una vista parcial o Partial View es un fragmento de codigo el cual podemos llamar desde cualquier parte de nuestra aplicacion la logica es parecida a utilizar User control, en donde podemos separar parte de la aplicacion en diversas secciones para poder reutilizarlas conforme las vallamos ocupando.

bueno manos a la obra:

Abrimos el poderoso Visual Studio y creamos una aplicacion ASP.Net MVC3 y le damos un nombre.

vp1

Despues escogemos una plantilla, en este caso yo utilizare la plantilla vacia.

vp2

Creamos un controlador con su respectivo ActionResult y posteriormente pasamos a agregar la vista para este ActionResult.

el codigo de nuestra vista debera tener el formato siguiente :

<html>
<head>
<title>
</title>
</head>
<body>
<h3>Esta es una aplicacion con vistas parciales</h3>
</body>
</html>

Ahora añadiremos el script de jquery el cual pueden descargarlo de Aqui

en este caso descargue la version mas actual que es la 1.10.2,la agregamos a la carpeta Scripts de nuestro proyecto.

vp3

Agregamos a nuestra vista la referencia del Script :

  <script src="@Url.Content("~/Scripts/JQuery/jquery-1.10.2.js")" type="text/javascript"></script>

Dentro del body creare un pequeño boton que llamara a la funcion que a su vez llamara a la vista parcial.

 <div> 

<br />
<input type="button" id="miBton" value="Click para llamar a la vista parcial :)" onclick="fnClick()" /></div>

<div id="pvistaParcial">
</div>
</div>

La funcion llamada fnClick tendra el siguiente codigo

 
      function fnClick() {

             var id = "parametros de la funcion";
           
             $.ajax(
                  {
                      type: 'POST',
                      data: "{'id':" + "'" + id + "'}", //datos o parametros enviados al servidor
                      dataType: 'html', //el tipo de dato que nos regresara el servidor en este caso regresa html
                      url: '@Url.Action("vistaParcial", "Home")',
                      //URL del action result que cargara la vista parcial
                      success: function (result) {
                      // si la funcion se ejecuta lanzara un alert
                          alert('Success');
                          //cuando se ejecuta bien la funcion agregara al div vistaParcial el contenido
                          //que recibio del servidor
                          $("#pvistaParcial").html(result);
                      },

                      error: function (error) {
                      // si hay un error lanzara el mensaje de error
                          alert('Fail');
                      }
                  });

         }

para mas informacion sobre ajax pueden consultar Aqui

ahora pasamos al controlador , creamos un nuevo ActionResult que nos regrese una vista parcial como en el ejemplo:


 [HttpPost]
        [HttpPost]
        public ActionResult vistaParcial(string id)
        {
            return PartialView("vistaParcial");
        }

damos click derecho al nombre del ActionResult y escogemos la opcion Agregar Vista, seleccionamos el check Crear como vista parcial:

vp4

El codigo de nuestra vista parcial sera parecido a este :


 @{
    ViewBag.Title = "vistaParcial";
}

<h2> esta es una vista parcial vistaParcial</h2>

Guardamos y ejecutamos la aplicacion. Damos click en el boton y el resultado sera el siguiente :

vp5

Espero les sirva, de ser asi no olviden comentar 🙂

dejo el codigo fuente de ejemplo en este LINK

El JOB fallo, el propietario () del JOB no tiene acceso al servidor ( the job failed. the owner () of job does not have server access )

Deja un comentario

Buen dia, en este post presentare como dar solucion al error the job failed. the owner () of job does not have server access (el job fallo , el propietario del job no tiene acceso al servidor).

En ocaciones al crear un job, a este se le asigna un usuario con los permisos necesarios para que lo ejecute, cuando eliminamos usuarios muchas veces no nos percatamos de que otros objetos podemos estar afectando, esto fue lo que me sucedio a mi, cree un job con un usuario SQL.

una se las soluciones mas faciles es eliminar el jop y volverlo a crear pero aqui les dejo la solucion de como asignar un nuevo usuario a un Job para poder ejecutarlo.

Primero revisamos los jobs que tenemos asi como a los usuarios que tienen los permisos para ejecutarlos. si el job que buscamos no se encuentra, esto quiere decir que ha sido eliminado por lo que tenemos que revisar si no existe el usuario.


SELECT
    sv.name AS [Name],
    sv.job_id AS [JobID],
    l.name AS UserName
FROM
    msdb.dbo.sysjobs_view AS sv
    INNER JOIN [master].[sys].[syslogins] l ON sv.owner_sid = l.sid
    ORDER BY
    sv.[Name] ASC

Para asignar un usuario a un job vamos a la seccion donde se encuentran los jobs.

jobs

Seleccionamos el job al que queremos asignarle un nuevo usuario propietario, damos click derecho y elegimos propiedades.

job2

Nos aparecera la pantalla de configuracion del job

En la pestaña General podemos observar la etiqueta OWNER , si el contenido de la caja de texto esta vacio quiere decir que no hay usuario asignado para este JOB.

jobs3

damos clik en el boton con los tres puntos el cual nos abrira una ventana para realizar la busqueda del usuario.

job4

Seleccionamos el usuario, podemos ponerlo manualmente o buscarlo dando click en el boton Browse, lo seleccionamos, damos aceptar y con esto ya debemos tener asignado un usuario para nuestro job,
por ultimo volvemos a ejecutar el JOB y vemos como lo ejecuta correctamente.

Espero les halla servido este post 🙂

Les dejo los links de referencia.

Si les sirvió no olviden comentar.

http://www.mssqltips.com/sqlservertip/1273/sql-server-agent-job-ownership/
http://johnsterrett.com/2011/04/14/changing-sql-server-job-owners-against-the-sql-server-enterprise/

Obtener numero de filas afectadas en una consulta SQLServer con @@RowCount

Deja un comentario

Hola en este post explicare como obtener el numero de registros que nos arroja una consulta en SQLServer sin utilizar
la funcion count(*).

Muchas veces requerimos esta informacion para por ejemplo.

  • Mostrar el numero de registros afectados
  • Realizar paginaciones en algunos controles por ejemplo grids
  • etc.

para ello yo utilize la la variable @@RowCount, la cual tiene diferentes usos pero para este ejemplo me su funcionalidad sera darme los registros tras realizar una consulta a una tabla.

para poder usar esta funcion la sintaxis es la siguiente:


DECLARE @numeroRegistros AS INT

-- Evitamos que se devuelva el mensaje que muestra el recuento 
-- del número de filas afectadas por una instrucción 
-- como parte del conjunto de resultados. 

SET NOCOUNT ON 

SELECT * FROM [TU_TABLA]
-- realizamos la consulta a la tabla deseada

SET @numeroRegistros 
-- asignamos el valor de las filas afectadas a la variable declarada anteriormente

SET NOCOUNT OFF
-- le decimos que muestre los mensajes nuevamente

SELECT @numeroRegistros 
-- mostramos los registros

Espero les halla servido este post, cualquier duda o inquietud estoy a sus ordenes.

links de referencia:

SQL SERVER – Effect of SET NOCOUNT on @@ROWCOUNT


http://technet.microsoft.com/es-es/library/ms189837.aspx
http://technet.microsoft.com/es-es/library/ms187316.aspx

Mi primera aplicación en WPF

Deja un comentario

Hola a todos , en este post les enseñare a como crear una nuestra primera aplicacion wpf desde 0.

Abrimos Visual Studio, en este caso utilizare Visual Studio 2010.

wpf1

En la parte superior izquiera, encontraremos el menu el cual daremos click en Archivo -> Nuevo y seleccionamos la opcion Nuevo Proyecto.

wpf2

Nos abrira una ventana emergente donde deberemos escoger el tipo de proyecto, en este caso escogemos Aplicacion WPF (WPF Aplication para versiones en ingles),elegimos el framework(para este ejemplo usare el .Net Framework 4.0) , le damos un nombre a nuestro proyecto y le damos aceptar.

wpf3

y asi nos abrira la pantalla de trabajo para poder crear aplicaciones en WPF.

wpf4

Espero les halla servido.

Saludos.

Navicat MySQL (Tutorial Parte 2)

5 comentarios

En la primera parte vimos como conectarnos a un servidor de MySQL , en esta segunda parte del tutorial veremos como utilizar algunas funcionalidades de Navicat.

Una vez que nos hallamos conectado a nuestro servidor, podemos visualizar las bases de datos a las cuales tenemos acceso, para poder utilizar una damos doble click sobre el nombre de la base de datos,al realizar esta acción el icono de la base de datos cambiara de color gris a verde y nos mostrara todas las tablas que contiene esta misma.

imagen5

Relizando consultas

para realizar consultas sobre la base de datos tenemos varias opciones, podemos crear un archivo en blanco para poder realizar nuestras querys, para ello en el menu superior debemos dar click en el boton Query.

imagen6

El cual nos habilitara una serie de opciones ,entre ellas habilitara el boton New Query que nos permitira crear un nuevo archivo donde podremos realizar nuestras consultas.

imagen7

cuando demos click en el boton new query nos habilitara mas opciones para poder trabajar en el editor de consultas entre ellas el Query Editor , donde podremos usar la sintaxis para crear objetos en nuestra base de datos como son tablas, vistas , procedimientos almacenados, etc. y hacer nuestras consultas insert, selects, deletes, updates.

imagen8

El Query Editor cuanta con un muy buen Intelligense el cual nos autocompleta la sintaxis.

imagen9

Las opciones que nos ofrece el menu del query editor son las siguientes:

Run : Esta opcion nos permite ejecutar las sentencias SQL en el Query Editor, si no seleccionamos la consulta que deseemos ejecutar, esta opcion ejecutara todas las consultas del Query Editor.

Stop : Este boton nos permitira para o cancelar las consultas que estemos realizando a la base de datos, es decir , si realizas un select sobre una tabla , y esta tabla tiene miles de registros, al dar click en stop cancelas la ejecucion de la consulta.

Explain : Este boton te muestra de manera detallada el tipo de consulta que ejecutaste, es decir si es una consulta de seleccion (select), te muestra si es una consulta simple o multitabla, el nombre de la tabla sobre la que realizaste el select , los tipos de datos de las columnas, el numero de filas, entre otras.

New : Borra el contenido del Query Editor para que podamos realizar nuevas consultas.

Load : Carga un archivo guardado al Query Editor.

Save : Guarda el contenido del Query Editor en un archivo .SQL

Save As : Guarda el contenido del Query Editor al formato que el usuario desee (.SQL,.txt,.DocX,etc.)

Beautiful SQL : Le da un formato a la consulta seleccionada

Export : Esta opcion nos permite exportar los resultados de una consulta a un archivo en formato doc, html, xml, txt, JSON, etc.

Espero les guste este tutorial, y nos veremos en la tercera edición.

si les gusto o les sirvió no olviden comentar,
cualquier duda o inquietud estoy a su disposición.

Older Entries