Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: aldiazo en 28 de Mayo 2015, 16:43

Título: Visual Basic personalizar msgBox texto opcione vbYesNoCancel vbAbortRetryIgnore
Publicado por: aldiazo en 28 de Mayo 2015, 16:43
Necesito saber si se puede cambiar el YES/NO  en un msgbox? (Personalización de un msgbox)
Título: Re:manejo de msgbox
Publicado por: Ogramar en 28 de Mayo 2015, 17:48
Hola en el curso http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61 tienes varios ejemplos.

No siempre un msgbox tiene que llevar yesno, puede no llevarlo o no llevarlo. Tienes muchas opciones incluso puedes personalizar. Algunas opciones son:

vbOkOnly    
vbOkCancel    
vbAbortRetryIgnore    
vbYesNoCancel    
vbYesNo    
vbRetryCancel    
vbCritical    
vbQuestion    
vbExclamation    
vbInformation

Salu2
Título: Re:Visual Basic opciones para msgBox vbYesNoCancel vbAbortRetryIgnore vbQuestion
Publicado por: aldiazo en 28 de Mayo 2015, 22:49
si eso lo entiendo, lo que no se,  es si hay alguna manera de cambiar lo que dicen los botones en el msgbox..

ej:

en vez de "YES", que diva "INV" y en vez de "NO" que diga "COM"

gracias por su ayuda
Título: Re:Visual Basic opciones para msgBox vbYesNoCancel vbAbortRetryIgnore vbQuestion
Publicado por: Ogramar en 29 de Mayo 2015, 08:42
Hola, los msgbox vienen preparados para funcionar con mensajes predeterminados y modificarlos supondría entrar en cuestiones de bajo nivel para modificar el api.

En lugar de esto lo que se suele hacer es crear una clase que cree lo que podríamos llamar un equivalente a msgbox pero personalizado con los textos que se quieran.

Para hacer esto puede usarse algo como esto.

Ir al menú proyecto y seleccionar Añadir clase (Add class)

Pegar este código:

Código: [Seleccionar]
Public Class CustomMsgBox
Inherits System.Windows.Forms.Form
Friend WithEvents btn As New Windows.Forms.Button
Friend WithEvents rtb As New Windows.Forms.RichTextBox

Public Sub New()
Me.SuspendLayout()
Me.ControlBox = False
Me.StartPosition = FormStartPosition.CenterScreen
Dim aPoint As Point
Me.Width = 450
Me.Height = My.Computer.Screen.WorkingArea.Height
aPoint.X = 5
aPoint.Y = 5
rtb.Location = aPoint
rtb.Width = Me.Width - 20
rtb.Height = Me.Height - 120
rtb.ScrollBars = RichTextBoxScrollBars.Both
Me.Controls.Add(rtb)
btn.Width = 50
btn.Height = 20
aPoint.X = (Me.Width \ 2) - (btn.Width \ 2)
aPoint.Y = Me.Height - 100
btn.Location = aPoint
btn.Text = "OK"
Me.Controls.Add(btn)
Me.ResumeLayout(False)
End Sub

Private Sub btn_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btn.Click

Me.Close()

End Sub

Public Overrides Property Text() As String
Get
If Me.rtb Is Nothing Then
Return ""
Else
Return Me.rtb.Text
End If
End Get
Set(ByVal value As String)
Me.rtb.Text = value
End Set
End Property

End Class

Como código para probarlo añadir un botón en un formulario y hacer esta prueba:

Código: [Seleccionar]
Option Strict On
Imports System.Environment

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim cMsgBox As New CustomMsgBox
cMsgBox.Text = "Mostrando 1000 lineas...."
For index As Integer = 1 To 1000
cMsgBox.Text &= "Esta es la linea " & index.ToString & NewLine
Next
cMsgBox.Show()

'Comparación con un msgbox normal.
'No se mostrarán todas las líneas.>>
Dim outputString As String = "Mostrando 1000 líneas...."
For index As Integer = 1 To 1000
outputString &= "Esta es la linea " & index.ToString & NewLine
Next
MessageBox.Show(outputString)
End Sub

End Class

El código puede requerir pequeñas modificaciones según la versión de Visual Basic que se utilice y puede modificarse para adaptarse a lo que se pretenda.

Salu2!