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 - seba123neo

#1531
.NET (C#, VB.NET, ASP) / Re: Bloc de Notas V2.0
25 Agosto 2010, 04:42 AM
hay miles de ejemplos de como hace Geshi o el "Highlighting" ..aca por ejemplo:

    
Syntax Highlighting in Rich TextBox Control - Part 1


aca te paso un ejemplo facil, con palabras claves...

Código (vbnet) [Seleccionar]
Imports System.Text.RegularExpressions

Public Class Form1

   Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       Dim vPalabraClave As New Regex("\b(Dim|As|New|Integer|For Each|Next|In)\b")

       Dim vSeleccion As Integer = RichTextBox1.SelectionStart

       RichTextBox1.SelectAll()
       RichTextBox1.SelectionColor = Color.Black
       RichTextBox1.SelectionStart = vSeleccion

       For Each vCoincide As Match In vPalabraClave.Matches(RichTextBox1.Text)
           RichTextBox1.Select(vCoincide.Index, vCoincide.Length)
           RichTextBox1.SelectionColor = Color.Blue
           RichTextBox1.SelectionStart = vSeleccion
           RichTextBox1.SelectionColor = Color.Black
       Next
   End Sub
End Class


mi opinion es, que si queres seguir con un proyecto, ya sea este o otro, no vallas publicando cada cambio que hagas, sino que esperes a que este tenga varias funciones mas, sino vas a terminar en la version 132 en pocos dias, fijate mas por el lado de tipo Notepad ++, no te pido que sea igual, pero podes sacar ideas de funciones y demas...

saludos.
#1532
o tambien guardar en algun lado los items que no podes seleccionar y cuando el usuario los seleccione simplemente no haces nada...

aca te paso un ejemplo que se me ocurrio, el ejemplo principal pinta los items de diferentes colores, en este ejemplo pinte los deshabilitados de color gris...probalo y me contas.


En un Modulo (bas)


Código (vb) [Seleccionar]
Option Explicit

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Type DRAWITEMSTRUCT
    CtlType As Long
    CtlID As Long
    itemID As Long
    itemAction As Long
    itemState As Long
    hwndItem As Long
    hdc As Long
    rcItem As RECT
    itemData As Long
End Type

Private Type CWPSTRUCT
    lParam As Long
    wParam As Long
    message As Long
    hWnd As Long
End Type

Private Type CREATESTRUCT
    lpCreateParams As Long
    hInstance As Long
    hMenu As Long
    hWndParent As Long
    cy As Long
    cx As Long
    y As Long
    x As Long
    style As Long
    lpszName As Long
    lpszClass As Long
    ExStyle As Long
End Type

Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function SetBkColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
Private Declare Function SetTextColor Lib "gdi32" (ByVal hdc As Long, ByVal crColor As Long) As Long
Private Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal lpString As String, ByVal nCount As Long) As Long
Private Declare Function GetSysColor Lib "user32" (ByVal nIndex As Long) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hWnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function FillRect Lib "user32" (ByVal hdc As Long, lpRect As RECT, ByVal hBrush As Long) As Long
Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
Private Declare Function CallNextHookEx Lib "user32" (ByVal hHook As Long, ByVal ncode As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function CreateSolidBrush Lib "gdi32" (ByVal crColor As Long) As Long

Private Const WH_CALLWNDPROC = 4
Private Const CBS_OWNERDRAWVARIABLE = &H20&
Private Const CB_GETLBTEXT = &H148
Private Const COLOR_HIGHLIGHT = 13
Private Const COLOR_HIGHLIGHTTEXT = 14
Private Const COLOR_WINDOW = 5
Private Const COLOR_WINDOWTEXT = 8
Private Const GWL_WNDPROC = (-4)
Private Const GWL_STYLE = (-16)
Private Const ODS_SELECTED = &H1
Private Const ODT_COMBOBOX = 3
Private Const WM_CREATE = &H1
Private Const WM_DRAWITEM = &H2B

Private lPrevWndProc As Long
Private lHook As Long
Private lSubCombo As Long

Sub Main()
    lHook = SetWindowsHookEx(WH_CALLWNDPROC, AddressOf HookApp, App.hInstance, App.ThreadID)
    Form1.Show
    Call UnhookWindowsHookEx(lHook)
End Sub

Public Sub SubClassForm(ByVal hWnd As Long)
    lPrevWndProc = SetWindowLong(hWnd, GWL_WNDPROC, AddressOf SubClassedForm)
End Sub

Public Sub RemoveSubClassing(ByVal hWnd As Long)
    Call SetWindowLong(hWnd, GWL_WNDPROC, lPrevWndProc)
End Sub

Public Function SubClassedForm(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim tItem As DRAWITEMSTRUCT
    Dim sItem As String
    Dim lBackBrush As Long
   
    If Msg = WM_DRAWITEM Then
        Call CopyMemory(tItem, ByVal lParam, Len(tItem))
        If tItem.CtlType = ODT_COMBOBOX Then
            sItem = Space(255)
            Call SendMessage(tItem.hwndItem, CB_GETLBTEXT, tItem.itemID, ByVal sItem)
            sItem = Left(sItem, InStr(sItem, Chr(0)) - 1)
            If (tItem.itemState And ODS_SELECTED) Then
                lBackBrush = CreateSolidBrush(GetSysColor(COLOR_HIGHLIGHT))
                Call SetBkColor(tItem.hdc, GetSysColor(COLOR_HIGHLIGHT))
                Call SetTextColor(tItem.hdc, GetSysColor(COLOR_HIGHLIGHTTEXT))
            Else
                lBackBrush = CreateSolidBrush(GetSysColor(COLOR_WINDOW))
                Call SetBkColor(tItem.hdc, GetSysColor(COLOR_WINDOW))
                Call SetTextColor(tItem.hdc, tItem.itemData)
            End If
            FillRect tItem.hdc, tItem.rcItem, lBackBrush
            TextOut tItem.hdc, tItem.rcItem.Left, tItem.rcItem.Top, ByVal sItem, Len(sItem)
            SubClassedForm = 0
            Exit Function
        End If
    End If
    SubClassedForm = CallWindowProc(lPrevWndProc, hWnd, Msg, wParam, lParam)
End Function

Private Function HookApp(ByVal lHookID As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim tCWP As CWPSTRUCT
    Dim sClass As String
   
    Call CopyMemory(tCWP, ByVal lParam, Len(tCWP))
    If tCWP.message = WM_CREATE Then
        sClass = Space(128)
        Call GetClassName(tCWP.hWnd, ByVal sClass, 128)
        sClass = Left(sClass, InStr(sClass, Chr(0)) - 1)
        If sClass = "ComboLBox" Then
            lSubCombo = SetWindowLong(tCWP.hWnd, GWL_WNDPROC, AddressOf SubComboCreate)
        End If
    End If
    HookApp = CallNextHookEx(lHook, lHookID, wParam, ByVal lParam)
End Function

Private Function SubComboCreate(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    Dim tCreate As CREATESTRUCT
   
    If Msg = WM_CREATE Then
        Call CopyMemory(tCreate, ByVal lParam, Len(tCreate))
        tCreate.style = tCreate.style Or CBS_OWNERDRAWVARIABLE
        Call CopyMemory(ByVal lParam, tCreate, Len(tCreate))
        Call SetWindowLong(hWnd, GWL_STYLE, tCreate.style)
        Call SetWindowLong(hWnd, GWL_WNDPROC, lSubCombo)
    End If
    SubComboCreate = CallWindowProc(lSubCombo, hWnd, Msg, wParam, lParam)
End Function


En el Formulario, con un combobox llamado Combo1

Código (vb) [Seleccionar]
Option Explicit

Dim vIndiceAnterior As Long

Private Sub Combo1_Change()
    Call Combo1_Click
End Sub

Private Sub Combo1_Click()
    Select Case Combo1.ListIndex
        Case 2, 4, 6
            MsgBox "Item Deshabilitado"
            Combo1.ListIndex = vIndiceAnterior
        Case Else
            Me.Caption = "Item Seleccionado"
            vIndiceAnterior = Combo1.ListIndex
    End Select
End Sub

Private Sub Form_Load()

    With Combo1
        .AddItem ("Item Normal 1")
        .itemData(.NewIndex) = vbBlack
        .AddItem ("Item Normal 2")
        .itemData(.NewIndex) = vbBlack
        .AddItem ("Item Deshabilitado 1")
        .itemData(.NewIndex) = &HE0E0E0
        .AddItem ("Item Normal 3")
        .itemData(.NewIndex) = vbBlack
        .AddItem ("Item Deshabilitado 3")
        .itemData(.NewIndex) = &HE0E0E0
        .AddItem ("Item Normal 4")
        .itemData(.NewIndex) = vbBlack
        .AddItem ("Item Deshabilitado 3")
        .itemData(.NewIndex) = &HE0E0E0
        .ListIndex = 0
       
        vIndiceAnterior = .ListIndex
    End With
   
    Call SubClassForm(Me.hWnd)
End Sub

Private Sub Form_Unload(Cancel As Integer)
    Call RemoveSubClassing(Me.hWnd)
End Sub


saludos.
#1533
es torneo en serio , o es para saber cual tiene la pc mas rapida ?  :xD
#1534
Cita de: Sr.Blanco en 20 Agosto 2010, 19:24 PM

CitarfrmPrincipal = 0, -2, 837, 755, , 22, 26, 544, 480, C
frmMensajes = -11, -5, 703, 662, C, 64, 107, 581, 561, C
Module1 = 184, 184, 820, 697, C


ese codigo no es el codigo fuente del programa, es del archivo .vbw que guarda informacion sobre el las ventanas y demas en el IDE...no es el codigo fuente del programa.




acabo de pegar el codigo que pusiste y no me tira ningun error...me imagino que tenes un control winsock llamado ws con el indice en 0, y un listview llamado Lv en el formulario ?

saludos.
#1535
como te dijeron, no hay que hacer nada extra para detectar lo que el lector de codigo de barras lee, simplemente al leer te trae el texto leido...nada mas.

saludos.
#1536
usa KeyDown...

Código (vbnet) [Seleccionar]
    Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        If e.KeyValue = Keys.F1 Then
            MsgBox("F1")
        End If
    End Sub


saludos.
#1537
la mas facil, desconectar el cable del router o meden que tengas  :xD, no necesitas programar nada...

haber proba esto...

Cerrar la conexión a internet con el shell

saludos.

#1538
al Select Case le falta el Case...y ese codigo es raro que ande , le faltan los 2 puntos para poder escribir todo en una sola linea..quedaria asi:

Código (vbnet) [Seleccionar]
        Select Case TextBox1.Text
            Case 0 : TextBox1.Text = "ClAve"
            Case 1 : TextBox1.Text = "clave"
            Case 2 : TextBox1.Text = "clave"
            Case 3 : TextBox1.Text = "clave"
            Case 4 : TextBox1.Text = "clave"
            Case 5 : TextBox1.Text = "clave"
        End Select


aparte el codigo se podria simplificar, hay opciones que son siempre iguales:

Código (vbnet) [Seleccionar]
        Select Case TextBox1.Text
            Case 0 : TextBox1.Text = "ClAve"
            Case 1, 2, 3, 4, 5 : TextBox1.Text = "clave"
        End Select


el codigo para el boton salir lo lleva en el en evento click me imagino, pero lo que esta medio raro ahi es porque le asiga un valor al textbox despues de cerrarlo XD..

saludos.

#1540
Hola, Leandro..por lo que veo no habria problema, pero bueno viste al parecer no hay que hacerlo, mira esta cita:

CitarNo implemente una propiedad como variable pública solamente por evitar el costo de una llamada de función. Internamente, Visual Basic implementará de todos modos las variables públicas de los módulos de clase como parejas de procedimientos de propiedad, ya que esto es lo requerido por la biblioteca de tipos.

saludos.