|
4741
|
Programación / .NET (C#, VB.NET, ASP) / Re: Pagina que hereda clase
|
en: 27 Septiembre 2015, 10:56 am
|
Explica con más detalle el tipo de modelo que pretendes diseñar. Yo entendí, probablemente mal, que necesitas esta estructura, donde la herencia múltiple no es necesaria: Public Class UserCtrl : Inherits System.Web.UI.UserControl End Class Public Class PaginaBase : Inherits System.Web.UI.Page Public Sub New() End Sub End Class Public NotInheritable Class Inciso3 : Inherits PaginaBase End Class
Muestra un ejemplo más extenso como el de arriba, ya que no queda claro donde ves necesario aplicar una herencia múltiple.
Tomando el ejemplo de arriba, si el problema es que necesitas heredar UserCtrl y PaginaBase en una misma class, entonces una alternativa sería crear una instancia de ambas classes en el constructor de otra class. Obviamente esto no te permitiria reemplazar, añadir y/o anular miembros ya que no existe una herencia, pero tampoco se si necesitas hacer eso. Public NotInheritable Class Multi Public ReadOnly Property UserCtrl As UserCtrl Get Return Me.userCtrlB End Get End Property Private userCtrlB As UserCtrl Public ReadOnly Property PaginaBase As PaginaBase Get Return Me.paginaBaseB End Get End Property Private paginaBaseB As PaginaBase Public Sub New() Me.userCtrlB = New UserCtrl Me.paginaBaseB = New PaginaBase End Sub End Class
De todas formas, una herencia múltiple la podrías simular implementando múltiples interfaces, pero esto requiere un mayor trabajo. Sabiendo esto: https://msdn.microsoft.com/en-us/library/system.web.ui.page%28v=vs.110%29.aspx System.Web.UI.Page: Inherits TemplateControl Implements IHttpHandler
https://msdn.microsoft.com/en-us/library/system.web.ui.templatecontrol%28v=vs.110%29.aspx System.Web.UI.TemplateControl Inherits Control Implements INamingContainer, IFilterResolutionService
https://msdn.microsoft.com/en-us/library/system.web.ui.control%28v=vs.110%29.aspx System.Web.UI.Control Implements IComponent, IDisposable, IParserAccessor, IUrlResolutionService, IDataBindingsAccessor, IControlBuilderAccessor, IControlDesignerAccessor, IExpressionsAccessorPodemos empezar por llevar a cabo algo como esto: Public Class TestClass Inherits Otraclass Implements System.IDisposable, System.ComponentModel.IComponent, System.Web.IHttpHandler, System.Web.UI.IControlBuilderAccessor, System.Web.UI.IControlDesignerAccessor, System.Web.UI.IDataBindingsAccessor, System.Web.UI.IExpressionsAccessor, System.Web.UI.IFilterResolutionService, System.Web.UI.INamingContainer, System.Web.UI.IParserAccessor, System.Web.UI.IUrlResolutionService Public Event Disposed(sender As Object, e As EventArgs) Implements IComponent.Disposed Public Property Site As ISite Implements IComponent.Site Public ReadOnly Property DataBindings As Web.UI.DataBindingCollection Implements Web.UI.IDataBindingsAccessor.DataBindings Get End Get End Property Public ReadOnly Property HasDataBindings As Boolean Implements Web.UI.IDataBindingsAccessor.HasDataBindings Get End Get End Property Public ReadOnly Property ControlBuilder As Web.UI.ControlBuilder Implements Web.UI.IControlBuilderAccessor.ControlBuilder Get End Get End Property Public ReadOnly Property UserData As IDictionary Implements Web.UI.IControlDesignerAccessor.UserData Get End Get End Property Public ReadOnly Property Expressions As Web.UI.ExpressionBindingCollection Implements Web.UI.IExpressionsAccessor.Expressions Get End Get End Property Public ReadOnly Property HasExpressions As Boolean Implements Web.UI.IExpressionsAccessor.HasExpressions Get End Get End Property Public Sub New() End Sub Public ReadOnly Property IsReusable As Boolean Implements Web.IHttpHandler.IsReusable Get End Get End Property Public Sub ProcessRequest(context As Web.HttpContext) Implements Web.IHttpHandler.ProcessRequest End Sub Public Function CompareFilters(filter1 As String, filter2 As String) As Integer Implements Web.UI.IFilterResolutionService.CompareFilters End Function Public Function EvaluateFilter(filterName As String) As Boolean Implements Web.UI.IFilterResolutionService.EvaluateFilter End Function Public Sub AddParsedSubObject(obj As Object) Implements Web.UI.IParserAccessor.AddParsedSubObject End Sub Public Function ResolveClientUrl(relativeUrl As String) As String Implements Web.UI.IUrlResolutionService.ResolveClientUrl End Function Public Function GetDesignModeState() As IDictionary Implements Web.UI.IControlDesignerAccessor.GetDesignModeState End Function Public Sub SetDesignModeState(data As IDictionary) Implements Web.UI.IControlDesignerAccessor.SetDesignModeState End Sub Public Sub SetOwnerControl(owner As Web.UI.Control) Implements Web.UI.IControlDesignerAccessor.SetOwnerControl End Sub #Region "IDisposable Support" Private disposedValue As Boolean ' To detect redundant calls ' IDisposable Protected Overridable Sub Dispose(disposing As Boolean) If Not Me.disposedValue Then If disposing Then ' TODO: dispose managed state (managed objects). End If ' TODO: free unmanaged resources (unmanaged objects) and override Finalize() below. ' TODO: set large fields to null. End If Me.disposedValue = True End Sub ' TODO: override Finalize() only if Dispose(ByVal disposing As Boolean) above has code to free unmanaged resources. 'Protected Overrides Sub Finalize() ' ' Do not change this code. Put cleanup code in Dispose(ByVal disposing As Boolean) above. ' Dispose(False) ' MyBase.Finalize() 'End Sub ' This code added by Visual Basic to correctly implement the disposable pattern. Public Sub Dispose() Implements IDisposable.Dispose ' Do not change this code. Put cleanup code in Dispose(disposing As Boolean) above. Dispose(True) GC.SuppressFinalize(Me) End Sub #End Region End Class
Saludos
|
|
|
4744
|
Programación / .NET (C#, VB.NET, ASP) / Re: Cuenta regresiva a partir de una fecha (VB.Net)
|
en: 26 Septiembre 2015, 19:48 pm
|
Por si sirve de algo, he vuelto a refactorizar el código fuente para que se entienda mejor, ahora solo expongo UN solo evento al que podemos suscribirnos para obtener el tiempo transcurrido, el tiempo restante, y el tiempo límite o meta. El ejemplo de arriba también lo he modificado, más simple que esto es imposible ya: Public NotInheritable Class Form1 : Inherits Form Private WithEvents countdown As New TimeMeasurer With {.UpdateInterval = 100} Private Shadows Sub Load() Handles MyBase.Load ' Medir el lapso de 1 mes desde la fecha y hora actual. Me.countdown.Start(DateTime.Now, DateTime.Now.AddMonths(1)) End Sub Private Sub Countdown_TimeUpdated(ByVal sender As Object, ByVal e As TimeMeasurer.TimeUpdatedEventArgs) _ Handles countDown.TimeUpdated Me.lblCountDown.Text = String.Format("Days:{0:00} Hours:{1:00} Minutes:{2:00} Seconds:{3:00}", e.Remaining.Days, e.Remaining.Hours, e.Remaining.Minutes, e.Remaining.Seconds) End Sub End Class
Basicamente el código fuente que compartí encapsula todos los miembros necesarios para resolver el problema que tienes de una forma amistosa orientada a eventos xD. De todas formas si aun sigues sin saber cómo utilizarlo a pesar del ejemplo, o si por algún motivo prefieres no usar mi solución entonces ahí tienes la alternativa de @Lekim, aunque os aconsejo a los dos que cambieis los hábitos que están siguiendo ya que son perjudiciales para el aprendizaje, por ejemplo no es necesario la aplicación de operaciones aritméticas para calcular manualmente las horas, dias, minutos y demás, pueden usar las propiedades que expone un objeto TimeSpan o un objeto Date cómo mencioné al principìo!, con eso lo resolverían TODO sin complicarse.
@Lekim, con tu permiso, te muestro como podrías simplificar para mejorar el código que compartiste: Public Class Form1 Dim culture As CultureInfo = CultureInfo.GetCultureInfo("es-ES") Dim fechaLimite As Date = Date.ParseExact("01/10/2015 00:00:00", "dd/MM/yyyy hh:mm:ss", culture, DateTimeStyles.None) Private Sub Form1_Shown() Handles MyBase.Shown Timer1.Enabled = True End Sub Private Sub Timer1_Tick() Handles Timer1.Tick Dim dateDiff As TimeSpan = fechaLimite.Subtract(Date.Now) Dim dateFormat As String = "dddd dd, MMMM, yyyy" Dim sb As New StringBuilder With sb .AppendFormat("Fecha Actual: {0}", Date.Today.ToString(dateFormat, culture)) .AppendLine() .AppendFormat("Fecha Límite: {0}", fechaLimite.ToString(dateFormat, culture)) .AppendLine() .AppendFormat("Quedan: {0}", String.Format("{0:0}d. {1:00}h. {2:00}m. {3:00}s.", dateDiff.TotalDays, dateDiff.Hours, dateDiff.Minutes, dateDiff.Seconds)) End With Me.Label1.Text = sb.ToString End Sub End Class
 También te recomiendo activar las declaraciones " Option" cuando programes bajo VB.Net, verias las decenas de fallos que cometiste en aquél código sin darte cuenta, sobre todo de casting. Otra recomendación que les hago, eviten CUALQUIER uso de los miembros expuestos en el namespace Microsoft.VisualBasic, cómo por ejemplo DateDiff, DateAdd, FormatDateTime, Len, Mid, etc, evitenlo todo sin excepción, todo eso es morralla rescatada de VisualBasic 6 para familiarizar a los que migran a VB.Net, aunque es puro código .Net pero no tan optimizado, así que deberían usar los equivalentes del resto de la librería de classes de .Net. Saludos!
|
|
|
4746
|
Foros Generales / Foro Libre / Re: La NASA prepara un "anuncio mayor" sobre Marte
|
en: 26 Septiembre 2015, 12:45 pm
|
Lo mismo va anunciar que se han gastado millones de Euros en ese planeta para nada tirado a la basura, habiendo planeta mucho mas interesante que Marte y con mas posibilidades de encontrar algún tipo de vida. jajajajjaja Un comentario muy acertado. Curioso que elijan el mismo día del evento cósmico de la luna de sangre para publicar la "noticia", y la llamo "noticia" entre comillas por que no existe transparencia alguna cuando se trata de NASA, tal vez la "noticia" consista en un bulo amarillista como por ejemplo que todavía no conocen la existencia de extraterrestres inteligentes ni tampoco mantienen contacto con ellos (falso) pero que han encontrado evidencias de vida microscópica, blah blah blah, quien sabe. Yo pienso que este será el único interés de cualquier noticia que publique NASA si se han tomado la molestia de avisar con tiempo y todo para captar la atención y así ganar mayor espectación:  Noticia con propósito oculto ...ya sea recaudar fondos/donaciones pa construir un nuevo Rover, publicar un nuevo "concurso" marciano, o explotar un material nuevo descubierto en Marte, o lo que sea. No crean que van a hacernos una revelación importante sobre la vida alienígena o el Universo, ya no a estas alturas de su política de secretismo que es la misma que la de EEUU. A ver si me equivoco, quien sabe. Saludos
|
|
|
4747
|
Foros Generales / Dudas Generales / Re: URGENTE alguien podría facilitarme una pagina o un programa para rastrear móvil
|
en: 25 Septiembre 2015, 16:39 pm
|
A menos que contrates los servicios de detectives privados o cómo ya han mencionado instales tu mismo una app de rastreo en el dispositivo objetivo... ➢ http://www.detectivetelefonico.com/Los servicios que ofrecemos son los siguientes:
Historial De Movimientos (Especial para comprobar sospechas de infidelidad) Detalle De Mensajes De Texto (Muy comprometedor) Celular Espía (Extraordinario para estar monitoreando en tiempo presente un numero) Rastreo De llamadas y Números (Excelente para comprobar quién realizó alguna llamada, ya sea por extorsión, amenaza o broma) Localización y Ubicación De Equipos (Muy bueno para localizar equipos perdidos o ubicar personas extraviadas, desaparecidas, secuestradas o morosas).
Saludos
|
|
|
4748
|
Programación / Programación General / Re: visualización gráfica de la ia de lps engine
|
en: 25 Septiembre 2015, 14:14 pm
|
Está genial, ¿pero cual es la supuesta finalidad del post?. Solo hiciste una introducción referente a una funcionalidad de una app propia, publicando un video del mismo...
El spam no está permitido, intenta publicar aunque sea una unidad de código la próxima vez... algo que sea relevante con la temática del sub foro.
Saludos!
|
|
|
4749
|
Foros Generales / Foro Libre / Re: ¿Son las suites ofimáticas absurdamente grandes?
|
en: 24 Septiembre 2015, 21:07 pm
|
No entiendo de que están hablando ¿del espacio que ocupa en el disco? cualquier usuario debe tener al menos dos discos de 1 o 2 TB, ¿cuánto ocupa alguna suite? (particularmente solo uso excel y si es que no tengo otra opción), ¿así que cual sería el problema? antes los discos eran muy chicos, hoy el espacio de las suites ni importa. Además veo que muchos ocupan discos con peliculas musica etc y nadie se queja.
La gran capacidad actual de espacio disponible no es razón ni excusa para que las compañias de software lo llenasen de cosas innecesarias (cómo ya hacen). A algunas personas les es indiferente ...mientras sigan teniendo espacio suficiente para sus cosas, pero otros preferimos tener cierto control sobre lo que tenemos almacenado, de ahí que hayan versiones reducidas no oficiales de Windows, Office, o simplemente de un video con múltiples pistas de audio en varios idiomas, por poner algunos ejemplos. Saludos!
|
|
|
|
|
|
|