Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Eleкtro

#8501
Cita de: Elsevi en  5 Julio 2013, 16:44 PMme puede servir este ? http://www.microsoft.com/es-es/download/details.aspx?id=30679

No vas muy mal encaminado, pero... OmarHack es el que sabe programar en C++ y te ha dado más alternativas de IDEs, si no tienes idea de programación y empiezas con una IDE tán gigantesca como VisualStudio quizás puedes acabar con trastornos y dolores de cabeza.


VisualStudio 2012 Express
http://www.microsoft.com/visualstudio/eng/downloads#d-2012-express

...O VisualStudio 2012 Ultimate:
[By Elektro H@cker] MEGA-PACK para iniciarse en .NET (VS2012 + Recursos + Tools)
(Si te bajas este, asegúrate de elegir todos los componentes de C++ en el instalador)

+ Tutorial de inicio
http://blogs.msdn.com/b/devschool/archive/2013/01/08/writing-your-first-c-program-using-visual-studio-2012.aspx

+ Tutorial "Hola mundo"
[youtube=640,360]http://www.youtube.com/watch?v=xoExJLVroZc[/youtube]
#8502
Cita de: Ikillnukes en  5 Julio 2013, 14:12 PMVale ya se a lo que te refieres, el problema es que si lo disableo no puedo cambiar el Backcolor... :silbar:

Eso es muy contradictorio, en tu snippet original se queda un fondo transparente... ¿ahora para que quieres modificar el color de fondo?.

Bueno, pues si no quieres desactivarlo vas a tener que usar APIS para ocultar el cursor de texto (caret) del control:

CitarYou'll need to use Win32 APIs. Here's what you could do in VB:
Código (vbnet) [Seleccionar]

'API declares
Private Declare Function HideCaret Lib "user32" _
(ByVal hwnd As IntPtr) As Integer
Private Declare Function ShowCaret Lib "user32" _
(ByVal hwnd As IntPtr) As Integer
'hide the caret in myTextBox
Call HideCaret(myTextBox.Handle)
'show the caret back..
Call ShowCaret(myTextBox.Handle)


and in C#

Código (csharp) [Seleccionar]
[DllImport("user32.dll", EntryPoint = "ShowCaret")]
public static extern long ShowCaret(IntPtr hwnd);
[DllImport("user32.dll", EntryPoint = "HideCaret")]
public static extern long HideCaret(IntPtr hwnd);


then make a call to

  HideCaret(richtextbox.Handle)

when ever you want to hide it.

EDITO: Lo he probado y parece que no funciona.

EDITO 2: Funciona, para hacerlo funcionar hay que llamar a la función dentro de varios eventos del Richtextbox (por ejemplo MouseHover).

Saludos
#8503
Cita de: Ikillnukes en  5 Julio 2013, 13:34 PMTás colao, necesitas poner un Public Shared Sub y no un Public Sub na más. >:D

No me he colado Ikillnukes, el shared no es obligatorio, eso depende de las necesidades. En el snippet original hay una Class para meter dos mini procedimientos, en mi snippet como ves no hay ninguna Class externa y los dos procedimientos están simplificados en sólo uno, si necesitas sharearla pues hazlo.

Si lo quieres llamar desde otra class:
Código (vbnet) [Seleccionar]
Form1.Add_Text_With_Color(Form1.RichTextBox1, "lo que sea", Color.AliceBlue)

Saludos
#8504
Cita de: Ikillnukes en  5 Julio 2013, 13:30 PMEntonces es por eso por lo que uso ReadOnly. :P

Eso no lo soluciona para nada, por algo te lo digo, el texto sigue seleccionado si no lo deseleccionas, pero bueno, si quieres tener la razón, te la doy.

Saludos
#8505
Cita de: Ikillnukes en  5 Julio 2013, 12:43 PM
Añadir difentes estilos a un "Label" (en realidad se usa un RichTextBox >:D)

Se puede mejorar muy mucho, para evitar todas las cosas que dije... aquí tienes:

Código (vbnet) [Seleccionar]
Add_Text_With_Color(RichTextBox1, "algo de texto con Arial al 12", RichTextBox1.ForeColor, New Font("Arial", 12, FontStyle.Bold))
Add_Text_With_Color(RichTextBox1, " ROOOJOOORL xD", Color.Red)
Add_Text_With_Color(RichTextBox1, Environment.NewLine & "nueva linea y algo de texto", Color.Black)


Código (vbnet) [Seleccionar]

   Public Sub Add_Text_With_Color(ByVal richTextBox As RichTextBox, _
                                         ByVal text As String, _
                                         ByVal color As Color, _
                                         Optional ByVal font As Font = Nothing)

       richTextBox.Enabled = False
       richTextBox.BorderStyle = BorderStyle.None
       richTextBox.ScrollBars = RichTextBoxScrollBars.None

       Dim index As Int32 = richTextBox.TextLength
       richTextBox.AppendText(text)
       richTextBox.SelectionStart = index
       richTextBox.SelectionLength = richTextBox.TextLength - index
       richTextBox.SelectionColor = color
       If font IsNot Nothing Then richTextBox.SelectionFont = font
     
   End Sub


Saludos
#8506
Cita de: EleKtro H@cker en  5 Julio 2013, 12:18 PM
Esa solución es una piltrafada, a menos que ...
y también que no se aprecién las "selecciones" cuando seleccionas una parte de texto.

Cita de: Ikillnukes en  5 Julio 2013, 12:37 PMPero si estamos imitando un Label pa que queremos seleccionar texto :laugh:

Vamos a ver, Ikillnukes, ¿Sabes lo que es un RichTextbox?, bueno, pues para empezar...no es una etiqueta.

Intenta por entender estas dos líneas de tu snippet:

Citar
Código (vbnet) [Seleccionar]
       rtb.SelectionStart = index
       rtb.SelectionLength = rtb.TextLength - index



Como ves se muestra la selección del texto.

EDITO: ¿Solución?, seleccionar "0" y con longitud "0", o seleccionar el límite del texto, o diréctamente desactivar el control.

Saludos
#8507
Cita de: Ikillnukes en  5 Julio 2013, 11:34 AMayer ya me dieron la solución

Esa solución es una piltrafada, a menos que sigas codeando el usercontrol para evitar que se muestre el cursor de texto y que no se le pueda clickar al RichTextBox, y también que no se aprecién las "selecciones" cuando seleccionas una parte de texto.

Saludos
#8508
V1.1

Cambios:

- Integrado soporte para usar teclas de acceso rápido (Hotkeys) para controlar Winamp, ya que mi prioridad es optimizar la velocidad de organización lo máximo posible.

- Nueva opción "Abrir en el explorador de windows" en el menú del listview.

- Añadido un botón para poder seleccionar una carpeta en el explorador de Windows para añadirla en el administrador de carpetas.

- Añadido avance de scroll progresivo en los trackbars, mantener pulsado la tecla "izquierda,derecha,arriba,abajo" para hacerlo funcionar.

- Optimizada la opción de mostrar descripciones o rutas completas para que también se aplique el cambio también al listview.

- Aparte del sonido de error, ahora si hubiera cualquier tipo de error con el archivo a copiar (si el archivo no existe, o la carpeta no se puede crear, o el archivo no se puede copiar) la linea del archivo se vuelve de color roja para identificarla velózmente.

- Añadida opción de customización para el color de las líneas de las listviews.

- La aplicación ya no es Multi-Instancia por motivos de "seguridad" (prevención de errores).

- Prevención de errores añadida para que no se pueda eliminar un directorio del administrador de directorios cuando ese directorio está en la cola del monitor.

- He limpiado referencias sin usar en el proyecto.

- Optimización de los recursos de imágen para que pesen menos tamaño, ahora pesan en total 4 kb menos (lo sé, es aun pasada! ...todo hay que decirlo)

- Otros cambios menores y optimizaciones en el código que ya no recuerdo...sinó los diría por estúpidos que fuesen :P


Bugs corregidos:
- Bug muy grave al intentar escribir una ruta en el administrador de carpetas.
#8509
[ComboBoxTooltip] Show tooltip when text exceeds ComboBox width

(Muestra un tooltip cuando el tamaño del Item supera el tamaño del ComboBox.)



Código (vbnet) [Seleccionar]
    Dim LastSelectedItem As Int32 = -1

    Private Sub ComboBoxTooltip_DropdownItemSelected(sender As Object, e As ComboBoxTooltip.DropdownItemSelectedEventArgs) _
    Handles ComboBoxTooltip1.DropdownItemSelected

        Dim SelectedItem As Int32 = e.SelectedItem

        If SelectedItem <> LastSelectedItem Then
            ToolTip1.Hide(sender)
            LastSelectedItem = -1
        End If

        If SelectedItem < 0 OrElse e.Scrolled Then
            ToolTip1.Hide(sender)
            LastSelectedItem = -1
        Else
            If sender.Items(e.SelectedItem).Length > CInt(sender.CreateGraphics.MeasureString(0, sender.Font).Width) + 8 Then
                LastSelectedItem = SelectedItem
                ToolTip1.Show(sender.Items(SelectedItem).ToString(), sender, e.Bounds.Location)
            End If
        End If

    End Sub


Es necesario este usercontrol:

Código (csharp) [Seleccionar]
using System;
using System.Drawing;
using System.Windows.Forms;
using System.Runtime.InteropServices;

public class ComboBoxTooltip : ComboBox
{
    private DropdownWindow mDropdown;
    public delegate void DropdownItemSelectedEventHandler(object sender, DropdownItemSelectedEventArgs e);
    public event DropdownItemSelectedEventHandler DropdownItemSelected;

    protected override void OnDropDown(EventArgs e)
    {
        // Install wrapper
        base.OnDropDown(e);
        // Retrieve handle to dropdown list
        COMBOBOXINFO info = new COMBOBOXINFO();
        info.cbSize = Marshal.SizeOf(info);
        SendMessageCb(this.Handle, 0x164, IntPtr.Zero, out info);
        mDropdown = new DropdownWindow(this);
        mDropdown.AssignHandle(info.hwndList);
    }
    protected override void OnDropDownClosed(EventArgs e)
    {
        // Remove wrapper
        mDropdown.ReleaseHandle();
        mDropdown = null;
        base.OnDropDownClosed(e);
        OnSelect(-1, Rectangle.Empty, true);
    }
    internal void OnSelect(int item, Rectangle pos, bool scroll)
    {
        if (this.DropdownItemSelected != null)
        {
            pos = this.RectangleToClient(pos);
            DropdownItemSelected(this, new DropdownItemSelectedEventArgs(item, pos, scroll));
        }
    }
    // Event handler arguments
    public class DropdownItemSelectedEventArgs : EventArgs
    {
        private int mItem;
        private Rectangle mPos;
        private bool mScroll;
        public DropdownItemSelectedEventArgs(int item, Rectangle pos, bool scroll) { mItem = item; mPos = pos; mScroll = scroll; }
        public int SelectedItem { get { return mItem; } }
        public Rectangle Bounds { get { return mPos; } }
        public bool Scrolled { get { return mScroll; } }
    }

    // Wrapper for combobox dropdown list
    private class DropdownWindow : NativeWindow
    {
        private ComboBoxTooltip mParent;
        private int mItem;
        public DropdownWindow(ComboBoxTooltip parent)
        {
            mParent = parent;
            mItem = -1;
        }
        protected override void WndProc(ref Message m)
        {
            // All we're getting here is WM_MOUSEMOVE, ask list for current selection for LB_GETCURSEL
            Console.WriteLine(m.ToString());
            base.WndProc(ref m);
            if (m.Msg == 0x200)
            {
                int item = (int)SendMessage(this.Handle, 0x188, IntPtr.Zero, IntPtr.Zero);
                if (item != mItem)
                {
                    mItem = item;
                    OnSelect(false);
                }
            }
            if (m.Msg == 0x115)
            {
                // List scrolled, item position would change
                OnSelect(true);
            }
        }
        private void OnSelect(bool scroll)
        {
            RECT rc = new RECT();
            SendMessageRc(this.Handle, 0x198, (IntPtr)mItem, out rc);
            MapWindowPoints(this.Handle, IntPtr.Zero, ref rc, 2);
            mParent.OnSelect(mItem, Rectangle.FromLTRB(rc.Left, rc.Top, rc.Right, rc.Bottom), scroll);
        }
    }
    // P/Invoke declarations
    private struct COMBOBOXINFO
    {
        public Int32 cbSize;
        public RECT rcItem;
        public RECT rcButton;
        public int buttonState;
        public IntPtr hwndCombo;
        public IntPtr hwndEdit;
        public IntPtr hwndList;
    }
    [StructLayout(LayoutKind.Sequential)]
    private struct RECT
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;
    }
    [DllImport("user32.dll", EntryPoint = "SendMessageW", CharSet = CharSet.Unicode)]
    private static extern IntPtr SendMessageCb(IntPtr hWnd, int msg, IntPtr wp, out COMBOBOXINFO lp);
    [DllImport("user32.dll", EntryPoint = "SendMessageW", CharSet = CharSet.Unicode)]
    private static extern IntPtr SendMessageRc(IntPtr hWnd, int msg, IntPtr wp, out RECT lp);
    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);
    [DllImport("user32.dll")]
    private static extern int MapWindowPoints(IntPtr hWndFrom, IntPtr hWndTo, [In, Out] ref RECT rc, int points);
}
#8510
Modifica el color de un Bitmap

Código (vbnet) [Seleccionar]
#Region " Fill Bitmap Color "

   ' [ Fill Bitmap Color Function ]
   '
   ' Examples :
   '
   ' IMPORTANT: use ARGB colors as the parameter.
   ' PictureBox1.BackgroundImage = Fill_Bitmap_Color(bmp, Color.FromArgb(255, 255, 255, 255), Color.Red)

   Private Function Fill_Bitmap_Color(ByVal Image As Bitmap, ByVal FromColor As Color, ByVal ToColor As Color)

       Dim bmp As New Bitmap(Image)

       Dim x As Integer = 0, y As Integer = 0

       While x < bmp.Width
           y = 0
           While y < bmp.Height
               If Image.GetPixel(x, y) = FromColor Then bmp.SetPixel(x, y, ToColor)
               Math.Max(Threading.Interlocked.Increment(y), y - 1)
           End While
           Math.Max(Threading.Interlocked.Increment(x), x - 1)
       End While

       Return bmp

   End Function

#End Region







Mueve el slider de un "GTrackBar" de forma progresiva al mantener presionada una tecla de dirección.

Se necesita el control extendido GTrackBar: http://www.codeproject.com/Articles/35104/gTrackBar-A-Custom-TrackBar-UserControl-VB-NET

Código (vbnet) [Seleccionar]
' By Elektro H@cker
#Region " [GTrackBar] Progressive Scroll "

   Dim TrackBar_SmallChange As Int32 = 5
   Dim TrackBar_LargeChange As Int32 = 10

   ' GTrackBar [KeyDown]
   Private Sub GTrackBar_KeyDown(sender As Object, e As KeyEventArgs) Handles GTrackBar1.KeyDown

       sender.ChangeSmall = 0
       sender.ChangeLarge = 0

       Select Case e.KeyCode
           Case Keys.Left, Keys.Right, Keys.Up, Keys.Down
               MakeScroll_TrackBar(sender, e.KeyCode)
       End Select

   End Sub

   ' GTrackBar [KeyUp]
   Private Sub GTrackBar_KeyUp(sender As Object, e As KeyEventArgs) Handles GTrackBar1.KeyUp
       ' Set the values on KeyUp event because the Trackbar Scroll event.
       sender.ChangeSmall = TrackBar_SmallChange
       sender.ChangeLarge = TrackBar_LargeChange
   End Sub

   ' MakeScroll TrackBar
   Private Sub MakeScroll_TrackBar(ByVal GTrackBar As gTrackBar.gTrackBar, key As Keys)

       Select Case key
           Case Keys.Left
               GTrackBar.Value -= TrackBar_SmallChange
           Case Keys.Right
               GTrackBar.Value += TrackBar_SmallChange
           Case Keys.Up
               GTrackBar.Value += TrackBar_LargeChange
           Case Keys.Down
               GTrackBar.Value -= TrackBar_LargeChange
       End Select

   End Sub

#End Region


...Lo mismo pero si tenemos múltiples GTrackbars:

Código (vbnet) [Seleccionar]
' By Elektro H@cker
#Region " [GTrackBar] Progressive Scroll MultiTrackbars "

   Dim TrackBar1_SmallChange As Int32 = 2
   Dim TrackBar1_LargeChange As Int32 = 5

   Dim TrackBar2_SmallChange As Int32 = 5
   Dim TrackBar2_LargeChange As Int32 = 10

   ' GTrackBar [KeyDown]
   Private Sub GTrackBars_KeyDown(sender As Object, e As KeyEventArgs) Handles GTrackBar1.KeyDown, GTrackBar2.KeyDown

       sender.ChangeSmall = 0
       sender.ChangeLarge = 0

       Select Case e.KeyCode
           Case Keys.Left, Keys.Right, Keys.Up, Keys.Down
               MakeScroll_TrackBar(sender, e.KeyCode)
       End Select

   End Sub

   ' GTrackBar [KeyUp]
   Private Sub GTrackBars_KeyUp(sender As Object, e As KeyEventArgs) Handles GTrackBar1.KeyUp, GTrackBar2.KeyUp

       ' Set the values on KeyUp event because the Trackbar Scroll event.

       Select Case sender.Name
           Case "GTrackBar1"
               sender.ChangeSmall = TrackBar1_SmallChange
               sender.ChangeLarge = TrackBar1_LargeChange
           Case "GTrackBar_2"
               sender.ChangeSmall = TrackBar2_SmallChange
               sender.ChangeLarge = TrackBar2_LargeChange
       End Select

   End Sub

   ' MakeScroll TrackBar
   Private Sub MakeScroll_TrackBar(ByVal GTrackBar As gTrackBar.gTrackBar, key As Keys)

       Dim SmallChange As Int32 = 0, Largechange As Int32 = 0

       Select Case GTrackBar.Name
           Case "GTrackBar1"
               SmallChange = TrackBar1_SmallChange
               Largechange = TrackBar1_LargeChange
           Case "GTrackBar2"
               SmallChange = TrackBar2_SmallChange
               Largechange = TrackBar2_LargeChange
       End Select

       Select Case key
           Case Keys.Left
               GTrackBar.Value -= SmallChange
           Case Keys.Right
               GTrackBar.Value += SmallChange
           Case Keys.Up
               GTrackBar.Value += Largechange
           Case Keys.Down
               GTrackBar.Value -= Largechange
       End Select

   End Sub

#End Region