Feb 142020
Antes que nada quiero aclarar que este control está basado el proyecto Firenze Label, adaptado a GDI+ con muchos agregados ya que el anterior depende de vbRichClient5.
Tienen muchas propiedades y eventos que más adelante voy a ir detallando, por el momento voy a subir el control con unos cuantos ejemplos y otros controles que acompañan.
Se pueden lograr cosas muy lindas con este control, sólo es cuestion de ir jugando con sus propiedades, se puede crear muchos controles a partir de este label es cuestión de poner un poco de imaginación. Aclaro que no actúa como un control programado, es un label no un botón por lo que está en el desarrollador dar la forma en que se repinta el label cuando se dispara el mouse Down y Up y demás eventos.
Algunas capturas de lo que se puede lograr con el LabePlus
-------------------------------------------------------------------------------------------------------
Descargar la versión 1.5.4, ultima actualización 21/12/2021
Excelente control Leandro. Gracias por crearlo. Con esto las aplicaciones tendrán una interfaz mas modernas.
Por qué manda error despues de crear el exe?
hola Paulo tengo un error con el PD_icons.RES al crear el manifest, pero nada que ver con LabelPlus, el archivo Res es únicamente para activar la compatibilidad con el DPI del sistema. en cuanto solucione ese problema resubo todos los ejemplos mas una actualizacion en camino.
Muchas gracias Leandro, te dejo el detalle técnico del error por si te es de utilidad.
=================
Iniciar generación de contexto de activación.
Parámetro de entrada:
Flags = 0
ProcessorArchitecture = Wow32
CultureFallBacks = es-ES;es;en-US;en
ManifestPath = C:\LabelPlus\Animate buttons\Proyecto1.exe
AssemblyDirectory = C:\LabelPlus\Animate buttons\
Application Config File =
—————–
INFORMACIÓN: analizando archivo de manifiesto C:\LabelPlus\Animate buttons\Proyecto1.exe.
INFORMACIÓN: la identidad de definición del manifiesto es VB Name,processorArchitecture=»X86″,type=»win32″,version=»7.1.0.631″.
INFORMACIÓN: referencia: Microsoft.Windows.Common-Controls,language=»*»,processorArchitecture=»X86″,publicKeyToken=»6595b64144ccf1df»,type=»win32″,version=»6.0.0.0″
ERROR: línea 37: error de sintaxis XML.
ERROR: error de generación de contexto de activación.
Finalizar generación de contexto de activación.
Saudações do Brasil. Muito interessante o componente, parabens.
Em runtime funciona, mas ao compilar dá o erro:
PT
“O aplicativo falhou ao iniciar porque a configuração lado a lado está incorreta, consulte o log de eventos do aplicativo ou use a ferramenta de linha de comando sxstrace.exe para obter mais detalhes.”
EN
«The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.»
Hola. Soy nueva en todo esto. He descargado el ejemplo de LABELPLUS y quizas sea una pregunta absurda pero no se como se puede hacer. En el ejemplo que simula la pantalla de AVG antivirus…. como se cambia el logo del antivirus AVG o como se cambia por ejemplo el icono del monitor de ordenador en el primer cuadro, donde pone equipo. Gracias – MARTA –
clic derecho, propiedades
Al pulsar el click derecho no sale propiedades y si voy al cuadro de propiedades de Visual Basic 6, no se que valor es el que hay que cambiar.
Excelente! Leandro, como podría adaptarse el efecto acrylic con el fondo de escritorio, para hacer un Widget, y obtener un efecto parecido al aero. Estuve viéndolo, pero no encontré la forma. Gracias
Hola Elihu no se si ya has visto el api SetWindowCompositionAttribute, con esta puedes crear ese efecto tal como lo hace windows, hay algunos ejemplos dando vuelta en la web, cuado la pruebes te encontraras con algunas contras ya que la mayoria de los controles se transparentan, no seria el caso para este LabelPlus que en un principio lo hice con esa intención.
ahora bien quizas ya conocias el api SetWindowCompositionAttribute y me preguntas si he intentado replicar el efecto, y la respuesta es si, pero me encontre que en windows 10 y quizas en 8 cambiaron unas cosas, antes podias llamar a la api GetDC y Stretchblt y si la ventana a la que querías aplicar el efecto tenia el estilo WS_EX_TRANSPARENT o creo WS_EX_LAYERED podías capturar el fondo/parte trasera de la ventana y asi crear el mismo efecto, por supuesto aplicar el blur por parte de gdi+ o con algún algoritmo echo para aplicar el efecto blur a una imagen. y ya por último pintarlo sobre la ventana. en fin ya mucho mas complicado pero se podia lograr otros efectos, la cuestion es que con windows 10 ya no se puede capturar. te recomiendo veas el api SetWindowCompositionAttribute y si estas en win7 DwmExtendFrameIntoClientArea
Si, de hecho pensé que si fuera posible, se podría personalizar mas el widget, y se podría manejar mejor propiedades como el color, nivel de transparencia, porcentaje de blur, nivel de sombra, etc. 🙂
Excelente trabajo Leandro .!!!!
me gustaria hablar unos minutos con vos.
Estas en Argentina ?
Saludos
Diego Ponce
Hola Diego perdon un poco tarde lei el comentario enviame un msg privado en el foro o un mensage desde el formulario de contacto.
Hi Leandro,
You’ve done an amazing VB6 control here. I would like to ask if this control can be freely used on a commercial VB6 application to achieve a modern UI design?
Desafortunadamente, la herramienta no es compatible con RTL.
Hi Leandro,
Thank you for the great work you do.
I live in Iran and thousands of miles away from you.
I have been familiar with Visual Basic since 1998, but after Visual Studio .NET, I did not take Visual Basic seriously anymore and focused more on VBA, because I thought VB6 was over. Now, after seeing your valuable work on VB6, I realized that I was wrong. I learned a lot from your work. I also started Basic for Android after visiting your site.
Thank you very much.
Hola, no se porque cuando el LabelPlus se pone en un formulario con un objeto para hacer la función Drag and Drop esta funcion queda deshabilitada, no se si hay algo en el objeto LabelPlus que desactiva la función en todo el formulario.
Alguna solución para el problema. Saludos
Hola Juan probé drag&dropp un ejemplo con un texto y todo bien, podrías subir algún ejemplo para ver bien donde esta el problema, porque no consigo replicarlo.
Hola Leandro, gracias por responder.
He hecho pruebas más concluyentes y no se porque es debido a que estoy en Win11 64 bits y VB6 32bits en este SO se tiene que ejecutar si o si en modo administrador.
Si no da error.
Cuando estoy en VB6 y ejecuto la aplicación el Drag&Drop no funciona (deduzco que como VB6 arranca en modo Admin), ahora bién si compilo la aplicación para obtener el ejecutable funciona correctamente siempre y cuando no ejecute la aplicación en modo Administrador si no pasa lo mismo.
¿Porque puede ser debido?
Saludos.
haaa ese es un problema de permisos nada que ver con el labelplus, una aplicación que corre como admin no puede recibir drag&drop de una que no corre como Admin, si lo probas compilado y correo con los privilegios normales, te fa a funcionar bien, pero en el ide no ya que lo ejecutas como Admin.
Saludos.
Muchas gracias Leandro Ascierto, buen trabajo el que haces. Saludos
Leandro Ascierto,me parece que no me has entendido o no me expliqué bién, no estoy haciendo Drag&Drop en el objeto ‘LabelPlus’.
En el mismo formulario tengo el objeto ‘Uclist’ que es el que recibe Drag&Drop también se ejecuta VB6 en modo admin y todo correcto deja arrastrar archivos etc..,
pero cuando pongo ‘LabelPlus’ en el formulario ya no deja hacer Drag&Drop en ‘Uclist’.
Saludos
Que raro, no logro replicarlo, tome el ejemplo de drag&drop del ucList, agregue un labelplus al formulario y todo funciona bien osea arrastro y suelto de un uclist a otro sin problemas, dame mas detalles o alguna forma que pueda replicarlo.
Hola Leandro Ascierto, donde te podria enviar el fichero ‘DragDrop.bas’ para que lo insertes en tú projecto.
si pásame un link para descargarlo, sube un ejemplo y vemos que pasa.
Hola Leandro Ascierto,
Aquí te envio el link para que te descargues los dos ejemplos, una carpeta esta el ‘Uclist’ sin el objeto ‘LabelPlus’ y funciona, la otra lo mismo pero agregando el objeto ‘LabelPlus’ en el formulario y no funciona.
Link de descarga: http://ul.to/29x8g0ga
Gracias.
Hola Juan, ahi chequee el ejemplo y sucede lo que me comentabas, no había notado que DragAcceptFiles funcionaba bien desde el ide, yo use casi el mismo codigo en el NeumoPlayer y tampoco funciona desde el ide pero es un error de VB, esto lo hacer no solo con el labelplus, sino con cualquier ventana windowless, fijate si agregas un usercontrol vacío y pones windowless = true fijate que tampoco te deja arrastrar, lo bueno es que esto es solo en el ide, una vez compilado ya funciona todo bien, no probe si compilado el usercontrol como un ocx haría lo mismo en el ide, pero bueno ya con esto me quedo tranquilo que no es algún código interno de labelplus sino un error o alguna medida de seguridad de vb.
Muchas gracias Leandro Ascierto por Tú tiempo y paciencia, y haberme aclarado la duda, eres un crack sigue así. Saludos
there is 3 problem maybe 1 and 2 are bugs?!! how can fix theme?
1- how can use picture and hotline in same time? i did try for show correct image and hot line but its draw half picture.
see this image :
https://i.postimg.cc/Gh7jjM7p/bug.png
2- how can show popup menu when right button clciked on some parent item without automatically expand,when i want rightclick on some parentnodes it will be expand automatically.
i used this trick but its not work good.
Private Sub navbar_Click(ByVal Item As Integer)
‘ ‘If navbar.NodeParentName(Item) = «» And navbar.NodeItemIndex(Item) = 3 Then or
If navbar.NodeItemIndex(Item) = 3 Then
If rightclickedonparent = True Then
navbar.ExpandedNode(Item) = False
‘MsgBox «right clicked»
End If
End If
End Sub
Private Sub navbar_MouseDown(ByVal Item As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton And navbar.NodeItemIndex(Item) = 3 Then rightclickedonparent = True Else rightclickedonparent = False
End Sub
3-how can detect badge clicked on ucnavbar or change over color on badge,it js a picture drawed on dc.
3-
Hello, point 1, the hotline is just a fine line to indicate a state, it is drawn internally at the end, therefore if it is higher than the image it will cover it, it is not intended for its purpose.
for point 2, you will have to reach into the ucNavBar and modify part of its code, otherwise it is not possible, I did not take this purpose into account when developing it.
for point 3 maybe with MouseMove or MouseMove you can through x,y get what part if you clicked
hi can see this image :
https://postimg.cc/hhtV4Gfz
when i wana compile my project with fast option compile this show error about user control line 1303 and line 495 in main.c visual c++.
how can fix that?
Hello, I have tried to replicate your error but I have succeeded. Are you using the vb6 compiler? If the error is where you mark the image, you can comment or delete the «WriteValue» function since it is not in use.
but I can’t understand why it has that error since everything is fine
ok i just commented that function and worked for now but i guess when i wana add more codes in my project maybe it will be happen again some times and i dont know why,that and yes i am use microsoft visual studio 6.its work for now and thanks for now 🙂
hi,i have a important question about labelplus,i saw some samples about show like as layered window using by a canvas layered class named «cCanvasLayeredWindow.cls» in menu samples but i need save as png that drawing on canvas as png,can u send a sample or edit that cCanvasLayeredWindow.cls to can support save as png too? , i asked about it in vbforum today too and waiting to can solve that.
update de code from cCanvasLayeredWindow.cls
https://pastebin.com/zx5ggnEG
then call cCLW.SaveAsPng App.Path & «\saved.png»
thanks,i am useing that layered class for my app but can u see this image:
https://www.vbforums.com/images/ieimages/2022/11/2.gif
i wanna use layered window and rotate image like that image but i dont know how can rdo that,
i am jst drawing on canvas and save as png but whats about rotate 2d or 3d ?
do you have any sample like that image to workd with layered and some effect?
i wann use for create splash screens or forms with special effect load or unload
Rotating an image in 3d with gdi is not highly recommended because it is very slow, for this it is better to use directDraw, but anyway I share this example of how to do it.
http://leandroascierto.com/foro/index.php?topic=320.msg1635#msg1635
i created this based on opengl :
this is last updated result
image link
video link
that was been one of my followed questions in vbforum too from some weeks ago
vbforum link here
my system is old but result was been fast and nice speed.
my problem now is my project need save png files on disks or load png to can show like as layered but if i wanna load png images from stream or binary data without need save on or load from disks how can do that in canvaslayered class?
i guess there is need some functions like as these:
-function getstream or function getbinarydata from canvasleyered
-function setstream or fuction bindarydata to canvaslayered
can add these functin in canvaslayered with a sample work
i did try for rotate my png form as layered window, about speed low i just tested this perspective class combined with layeredcanvas class with my form image size 321*571 like this:
Dim i As Long
Unload Form3
C.ThumbnailWidth = bg(0).Width: C.ThumbnailHeight = bg(0).Height
C.BorderSize = 0: C.ReflectionPercent = 0
C.LoadPictureFromFile App.Path & "\00.png": cCLW.Clear
For i = 0 To 360 Step 0
C.Angle = i: cCLW.Clear
C.DrawPerspective cCLW.hDC, bg(0).Left + 150, bg(0).Top + 150
cCLW.UpdateLayered hwnd, 255:doevnets
Next
it was been so slow for rotate effect how can show my form with contents like as layered with fast and smooth rotation?
edited images links :
https://postimg.cc/YhHGHG7B
or
https://i.postimg.cc/SNXWcCtR/25frame.gif
video link :
https://www.veed.io/view/5befd78f-b385-473e-8e0f-d570b97ad860?sharingWidget=true&panel=share
hi i have a layered window made by layeredwindowclass,now i show a form transparents by special color with some controls like as textboxes and etc,i wanna take a screen shot of my all designed and add to layered window,my problem is i need take screen shot when my layered window and my form controls when they are no need show to user like as invisible,i tested printwindow api too but npt worked,can help me for this ?
or maybe i need a new method for add picture from picturebox to labelplus and then i draw it on layered class with labelplus
no puedo descargarlo alguien sabe como descragarlo?
La descarga funciona correctamente, que error te marca? o muestra el porque no se pueda descargar?
thank you very much, be well
Hola Leandro, gracias nuevamente por compartir tu conocimiento y tiempo, te molesto porque NO he podido entender en LabelPlus1 como funciona la propiedad IconCharCode, ayúdame!
hola Edgardo, tienes que agregar alguna fuente que tenga iconos en la propiedad IconFont, puede ver que hay algunas fuentes de ese tipo (https://fontawesome.com/) en windows hay una llamada «Segoe MDL2 Assets» esa tiene mucho tipos de iconos el codigo del icono lo puedes la aplicacion de windows «Mapa de caracteres» ahi estan todos los iconos con sus codigos, en windows aparecen como U+E15E que es una llave de herramientas en la propiedad iconcharcode poner &HE15E remplazas la U+ por &H y eso es todo hacegurate que la propiedad IconOpacity este en 100, para que se visualice, por defecto esta en 0 (hoy me arrepiento de eso)
Hola leandro, maginifico control, me entra un duda, es posible mostrar el label de manera vertical, es decir rotar en 90 grados el label para que el texto se lea de abajo hacia arriba?? gracias