{"id":186,"date":"2011-07-10T20:58:09","date_gmt":"2011-07-10T23:58:09","guid":{"rendered":"http:\/\/leandroascierto.com\/blog\/?p=186"},"modified":"2011-08-24T02:40:34","modified_gmt":"2011-08-24T05:40:34","slug":"clsimagecontrols","status":"publish","type":"post","link":"https:\/\/leandroascierto.com\/blog\/clsimagecontrols\/","title":{"rendered":"ClsImageControls"},"content":{"rendered":"<p style=\"text-align: justify;\">M\u00f3dulo clase para agregar im\u00e1genes en controles OptionButton, CheckBox, CommandButton y Frame cuando se encuentran los Temas de Windows corriendo en la aplicaci\u00f3n (Manifest), esta clase la hab\u00eda creado hace un tiempo atr\u00e1s, la cual est\u00e1 publicada en\u00a0<a href=\"http:\/\/www.recursosvisualbasic.com.ar\/htm\/ocx-componentes-activex-dll\/217-modulo-de-clase-cimage-button.htm\">Recursos Visual Basic<\/a>\u00a0donde la clase pod\u00eda poner varios iconos para cada estado del bot\u00f3n (MousOver, MouseDown y deshabilitado). En esta versi\u00f3n se quit\u00f3 dicha propiedad ya que no lo considero muy \u00fatil, tambi\u00e9n elimin\u00e9 otra propiedad la cual si no estaban los Themes habilitados pon\u00eda una imagen de todas formas, una de las ventajas de esta versi\u00f3n es que no se necesita una clase para cada control, ya que con una podemos cubrir todos los controles del formulario o la aplicaci\u00f3n, otra es que se puede poner cualquier tipo de imagen\u00a0 (PNG, JPG, BMP e ICO) y la lectura de las im\u00e1genes en varias formas.<\/p>\n<p>Detalle de sus funciones:<\/p>\n<ul style=\"text-align: justify;\">\n<li><em>SetImageFromHandle<\/em>:\u00a0 Agrega la im\u00e1gen desde su handle (Bitmap o Icono).<\/li>\n<li><em>SetGdiPlusImagen<\/em>: Agrega la im\u00e1gen desde un hBitmap de GDI+.<\/li>\n<li><em>LoadImageFromFile<\/em>: Carga una im\u00e1gen desde un archivo.<\/li>\n<li><em>LoadImageFromRes<\/em>: Carga una im\u00e1gen desde el archivo de recurso.<\/li>\n<li><em>LoadImageFromStream<\/em>: Carga una im\u00e1gen desde un array de bits.<\/li>\n<li><em>SetMargins<\/em>: Indica los m\u00e1rgenes de la im\u00e1gen con respecto al control (Left, Top, Right, Bottom).<\/li>\n<li><em>Align<\/em>: Propiedad para poner u obtener la alineaci\u00f3n de la im\u00e1gen con respecto al control (Icon_Left, Icon_Right, Icon_Top, Icon_Bottom, Icon_Bottom, Icon_Center).<\/li>\n<li><em>RemoveImage<\/em>: Remueve la im\u00e1gen del control.<\/li>\n<\/ul>\n<p style=\"text-align: justify;\">La f\u00f3rmula principal de dicho m\u00f3dulo es asociar un ImageList (API) con un \u00edcono al control utilizando SendMessage con el mensaje\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb775975(v=vs.85).aspx\">BCM_SETIMAGELIST<\/a>\u00a0y la estructura<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/bb775953(v=vs.85).aspx\">BUTTON_IMAGELIST<\/a>\u00a0el resto del c\u00f3digo solo trata de formar las im\u00e1genes en objetos Iconos.<\/p>\n<p>Nota: Cuando prueben el proyecto si est\u00e1n en el IDE seguramente no van a ver ning\u00fan icono, ya que no funciona si no est\u00e1 compilado (excepto que tengan el VB6 con Manifest) as\u00ed que s\u00f3lo van a ver su funcionamiento cuando corran el ejecutable (recalco para los que no est\u00e1n al tanto, la clase s\u00f3lo funciona si se utilizan los temas de Windows, para m\u00e1s informaci\u00f3n ver\u00a0<a href=\"http:\/\/www.recursosvisualbasic.com.ar\/htm\/trucos-codigofuente-visual-basic\/148-estilo-xp-manifest.htm\">este link<\/a>).<\/p>\n<p align=\"center\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/www.leandroascierto.com\/blog\/imagenes\/ClsImageControls.png\" alt=\"Iconos en botones\" width=\"392\" height=\"556\" \/><\/p>\n<p align=\"center\"><a href=\"https:\/\/leandroascierto.com\/blog\/descarga.php?url=ClsImageControls.zip\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter\" title=\"Descargar\" src=\"https:\/\/leandroascierto.com\/blog\/descarga.php?file=ClsImageControls.zip\" alt=\"\" width=\"280\" height=\"61\" \/><\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>M\u00f3dulo clase para agregar im\u00e1genes en controles OptionButton, CheckBox, CommandButton y Frame cuando se encuentran los Temas de Windows corriendo en la aplicaci\u00f3n (Manifest), esta clase la hab\u00eda creado hace un tiempo atr\u00e1s, la cual est\u00e1 publicada en\u00a0Recursos Visual Basic\u00a0donde la clase pod\u00eda poner varios iconos para cada estado del bot\u00f3n (MousOver, MouseDown y deshabilitado). <a href='https:\/\/leandroascierto.com\/blog\/clsimagecontrols\/' class='excerpt-more'>[&#8230;]<\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[33,36,35,120,37],"class_list":["post-186","post","type-post","status-publish","format-standard","hentry","category-modulos","tag-button","tag-checkbox","tag-gdi","tag-modulos","tag-option","category-29-id","post-seq-1","post-parity-odd","meta-position-corners","fix"],"_links":{"self":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts\/186","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/comments?post=186"}],"version-history":[{"count":5,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts\/186\/revisions"}],"predecessor-version":[{"id":292,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/posts\/186\/revisions\/292"}],"wp:attachment":[{"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/media?parent=186"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/categories?post=186"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/leandroascierto.com\/blog\/wp-json\/wp\/v2\/tags?post=186"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}