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

#3771
Una cosa que ayer no recordé para comentarte, la forma mas eficiente de llevar a cabo la colorización de la sintaxis sería utilizando el motor Roslyn de Microsoft (puedes encontrar las librerías en GitHub, y la SDK de Visual Studio), es el mismo mecanimsmo que usa visual Studio para ello, pero no hace relativamente mucho que es open-source y no existe demasiada documentación al respecto, aunque si que hay algunos buenos ejemplos, pero es un sistema muy tedioso de pulir para implementarlo en una app con este tipo de finalidad que le quieres dar.

Otra cosa con respecto a lo que ha sugerido @Slava, un Richtextbox es un control muy pesado, y si a eso le sumamos metodologías de iteración del texto cada vez que el usuario pulse una tecla (o con un Timer, me da igual), en términos de rendmiento el resultado será una completa catástrofe irritante. Si vas a intentarlo así, entonces debes interactuar lo más mínimo con el texto/control, lo que hay que hacer es llevar a cabo una evaluación de la palabra actual por separado, en un tipo personalizado, con el texto actual, su longitud actual, si coincide con algún keyword conocido o no, etc, y mientras tanto ignorar el texto del control y todo lo demás mientras el usuario no borre o añada ninguna letra. Espero haberme explicado más o menos bien!




Bueno, al final me he animado a construir un estilo para VisualBasic.Net en Scintilla, voy a compartirlo contigo :)

No está del todo completo y no es perfecto, existen unos pequeños conflictos ...esto último debido a las limitaciones del control, pero asumiendo esos pequeños conflictos creo que podemos dar este estilo como un estilo válido y bonito, que me lo he currado, coño! xD.

El diseño del editor de Visual Studio es el que más me gusta, así que no he querido reinventar la rueda y lo he coloreado de forma similar...

Unas imágenes del resultado:





Código (vbnet) [Seleccionar]
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Sets a VisualBasic.Net dark lexer style on the specified <see cref="Scintilla"/> editor.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="editor">
   ''' The source <see cref="Scintilla"/> editor.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   Public Shared Sub SetVbNetDarkStyle(ByVal editor As Scintilla)

       Dim backColor As Color = Color.FromArgb(255, 30, 30, 30)
       Dim selectionColor As Color = Color.FromArgb(255, 38, 79, 120)

       Dim keywords As String =
<a>
debug
release
addhandler
addressof
aggregate
alias
and
andalso
ansi
as
assembly
auto
binary
boolean
byref
byte
byval
call
case
catch
cbool
cbyte
cchar
cdate
cdbl
cdec
char
cint
class
clng
cobj
compare
const
continue
csbyte
cshort
csng
cstr
ctype
cuint
culng
cushort
custom
date
decimal
declare
default
delegate
dim
directcast
distinct
do
double
each
else
elseif
end
endif
enum
equals
erase
error
event
exit
explicit
false
finally
for
friend
from
function
get
gettype
getxmlnamespace
global
gosub
goto
group
handles
if
implements
imports
in
inherits
integer
interface
into
is
isfalse
isnot
istrue
join
key
let
lib
like
long
loop
me
mid
mod
module
mustinherit
mustoverride
my
mybase
myclass
namespace
narrowing
new
next
not
nothing
notinheritable
notoverridable
object
of
off
on
operator
option
optional
or
order
orelse
overloads
overridable
overrides
paramarray
partial
preserve
private
property
protected
public
raiseevent
readonly
redim
rem
removehandler
resume
return
sbyte
select
set
shadows
shared
short
single
skip
static
step
stop
strict
string
structure
sub
synclock
take
text
then
throw
to
true
try
trycast
typeof
uinteger
ulong
unicode
until
ushort
using
variant
wend
when
where
while
widening
with
withevents
writeonly
xor
</a>.Value

       Dim typenames As String =
<a>
array
backgroundworker
bitmap
button
checkbox
checkedlistbox
colordialog
combobox
component
contextmenustrip
control
datagridview
dataset
datetime
datetimepicker
dictionary
directorysearcher
errorprovider
eventlog
exception
fileinfo
filesystemwatcher
flowlayoutpanel
form
graphics
groupbox
helpprovider
hscrollbar
iappdomainsetup
iasyncresult
ibindablecomponent
ibuttoncontrol
icloneable
icollectdatta
icollection
icolumnmapping
icolumnmappingcollection
icommandexecutor
icomparable
icomparer
icomponent
icomponenteditorpagesite
icontainercontrol
iconvertible
icurrencymanagerprovider
icustomformatter
idataadapter
idatagridcolumnstyleeditingnotificationservice
idatagrideditingservice
idatagridvieweditingcell
idatagridvieweditingcontrol
idataobject
idataparameter
idataparametercollection
idatareader
idatarecord
idbcommand
idbconnection
idbdataadapter
idbdataparameter
idbtransaction
idevicecontext
idictionary
idictionaryenumerator
idisposable
idroptarget
ienumerable
ienumerator
iequalitycomparer
iequatable
ifeaturesupport
ifilereaderservice
iformatprovider
iformattable
iformatter
igroupping
ihashcodeprovider
ilist
ilookup
image
imagelist
imessagefilter
inotifypropertychanged
int16
int32
int64
iobservable
iobserver
iorderedenumerable
iorderedqueryable
iqueryable
iqueryprovider
iserializable
iserviceprovider
iset
istructuralcomparable
istructuralequatable
itablemapping
itablemappingcollection
iwin32window
iwindowtarget
label
linklabel
list
listbox
listview
maskedtextbox
menustrip
messagequeue
monthcalendar
nativewindow
notifyicon
numericupdown
openfiledialog
panel
pen
performancecounter
picturebox
point
pointf
printdialog
printdocument
process
progressbar
propertygrid
radiobutton
readonlycollection
rectangle
rectanglef
regex
richtextbox
savefiledialog
serialport
servicecontroller
size
sizef
solidbrush
splitcontainer
statusstrip
system
tabcontrol
tablelayoutpanel
textbox
timer
toolstrip
toolstripcontainer
tooltip
trackbar
type
uint16
uint32
uint64
vscrollbar
webbrowser
</a>.Value

       Dim literals As String =
<a>
!
#
%
@
&amp;
i
d
f
l
r
s
ui
ul
us
</a>.Value

       Dim other As String = "_" ' line-break.

       ' Reset the styles.
       editor.StyleResetDefault()
       editor.StyleClearAll()
       ' editor.Styles(Style.[Default]).Font = "Consolas"
       ' editor.Styles(Style.[Default]).Size = 10

       ' Set the Vb.Net lexer.
       editor.Lexer = Lexer.Vb

       ' Set folding properties.
       With editor
           .SetProperty("fold", "1")
           .SetProperty("fold.compact", "1")
           .SetProperty("fold.html", "1")
       End With

       ' Set the margin for fold markers.
       With editor
           .Margins(2).Type = MarginType.Symbol
           .Margins(2).Mask = Marker.MaskFolders
           .Margins(2).Sensitive = True
           .Margins(2).Width = 20
       End With

       ' Reset folder markers.
       For i As Integer = Marker.FolderEnd To Marker.FolderOpen
           editor.Markers(i).SetForeColor(SystemColors.ControlLightLight)
           editor.Markers(i).SetBackColor(SystemColors.ControlDark)
       Next

       ' Set the style of the folder markers.
       With editor
           .Markers(Marker.Folder).Symbol = MarkerSymbol.BoxPlus
           .Markers(Marker.Folder).SetBackColor(SystemColors.ControlText)
           .Markers(Marker.FolderOpen).Symbol = MarkerSymbol.BoxMinus
           .Markers(Marker.FolderEnd).Symbol = MarkerSymbol.BoxPlusConnected
           .Markers(Marker.FolderEnd).SetBackColor(SystemColors.ControlText)
           .Markers(Marker.FolderMidTail).Symbol = MarkerSymbol.TCorner
           .Markers(Marker.FolderOpenMid).Symbol = MarkerSymbol.BoxMinusConnected
           .Markers(Marker.FolderSub).Symbol = MarkerSymbol.VLine
           .Markers(Marker.FolderTail).Symbol = MarkerSymbol.LCorner
       End With

       ' Enable automatic folding
       editor.AutomaticFold = (AutomaticFold.Show Or AutomaticFold.Click Or AutomaticFold.Change)

       ' Disable whitespaces visibility.
       editor.ViewWhitespace = WhitespaceMode.Invisible

       ' Set the selection color.
       editor.SetSelectionBackColor(True, selectionColor)

       ' Set the style of the Vb.Net language.
       With editor
           .Styles(Style.Default).BackColor = backColor

           .Styles(Style.Vb.Asm).BackColor = backColor
           .Styles(Style.Vb.Asm).ForeColor = Color.FromArgb(255, 181, 206, 168)
           .Styles(Style.Vb.Asm).Bold = True
           .Styles(Style.Vb.Asm).Italic = False
           .Styles(Style.Vb.Asm).Underline = False

           .Styles(Style.Vb.BinNumber).BackColor = backColor
           .Styles(Style.Vb.BinNumber).ForeColor = Color.FromArgb(255, 181, 206, 168)
           .Styles(Style.Vb.BinNumber).Bold = False
           .Styles(Style.Vb.BinNumber).Italic = False
           .Styles(Style.Vb.BinNumber).Underline = False

           .Styles(Style.Vb.Comment).BackColor = backColor
           .Styles(Style.Vb.Comment).ForeColor = Color.FromArgb(255, 87, 159, 56)
           .Styles(Style.Vb.Comment).Bold = False
           .Styles(Style.Vb.Comment).Italic = False
           .Styles(Style.Vb.Comment).Underline = False

           .Styles(Style.Vb.CommentBlock).BackColor = backColor
           .Styles(Style.Vb.CommentBlock).ForeColor = Color.FromArgb(255, 87, 159, 56)
           .Styles(Style.Vb.CommentBlock).Bold = False
           .Styles(Style.Vb.CommentBlock).Italic = False
           .Styles(Style.Vb.CommentBlock).Underline = False

           .Styles(Style.Vb.Constant).BackColor = backColor
           .Styles(Style.Vb.Constant).ForeColor = Color.MediumOrchid
           .Styles(Style.Vb.Constant).Bold = False
           .Styles(Style.Vb.Constant).Italic = False
           .Styles(Style.Vb.Constant).Underline = False

           .Styles(Style.Vb.Date).BackColor = backColor
           .Styles(Style.Vb.Date).ForeColor = Color.MediumOrchid
           .Styles(Style.Vb.Date).Bold = False
           .Styles(Style.Vb.Date).Italic = False
           .Styles(Style.Vb.Date).Underline = False

           .Styles(Style.Vb.Default).BackColor = backColor
           .Styles(Style.Vb.Default).ForeColor = Color.LightGray
           .Styles(Style.Vb.Default).Bold = False
           .Styles(Style.Vb.Default).Italic = False
           .Styles(Style.Vb.Default).Underline = False

           .Styles(Style.Vb.DocBlock).BackColor = backColor
           .Styles(Style.Vb.DocBlock).ForeColor = Color.FromArgb(255, 87, 159, 56)
           .Styles(Style.Vb.DocBlock).Bold = False
           .Styles(Style.Vb.DocBlock).Italic = False
           .Styles(Style.Vb.DocBlock).Underline = False

           .Styles(Style.Vb.DocKeyword).BackColor = backColor
           .Styles(Style.Vb.DocKeyword).ForeColor = Color.FromArgb(255, 100, 150, 215)
           .Styles(Style.Vb.DocKeyword).Bold = False
           .Styles(Style.Vb.DocKeyword).Italic = False
           .Styles(Style.Vb.DocKeyword).Underline = False

           .Styles(Style.Vb.DocLine).BackColor = backColor
           .Styles(Style.Vb.DocLine).ForeColor = Color.FromArgb(255, 87, 159, 56)
           .Styles(Style.Vb.DocLine).Bold = False
           .Styles(Style.Vb.DocLine).Italic = False
           .Styles(Style.Vb.DocLine).Underline = False

           .Styles(Style.Vb.Error).BackColor = backColor
           .Styles(Style.Vb.Error).ForeColor = Color.IndianRed
           .Styles(Style.Vb.Error).Bold = True
           .Styles(Style.Vb.Error).Italic = False
           .Styles(Style.Vb.Error).Underline = False

           .Styles(Style.Vb.HexNumber).BackColor = backColor
           .Styles(Style.Vb.HexNumber).ForeColor = Color.FromArgb(255, 181, 206, 168)
           .Styles(Style.Vb.HexNumber).Bold = False
           .Styles(Style.Vb.HexNumber).Italic = False
           .Styles(Style.Vb.HexNumber).Underline = False

           .Styles(Style.Vb.Identifier).BackColor = backColor
           .Styles(Style.Vb.Identifier).ForeColor = Color.Gainsboro
           .Styles(Style.Vb.Identifier).Bold = False
           .Styles(Style.Vb.Identifier).Italic = False
           .Styles(Style.Vb.Identifier).Underline = False

           .Styles(Style.Vb.Keyword).BackColor = backColor
           .Styles(Style.Vb.Keyword).ForeColor = Color.FromArgb(255, 100, 150, 215)
           .Styles(Style.Vb.Keyword).Bold = False
           .Styles(Style.Vb.Keyword).Italic = False
           .Styles(Style.Vb.Keyword).Underline = False

           .Styles(Style.Vb.Keyword2).BackColor = backColor
           .Styles(Style.Vb.Keyword2).ForeColor = Color.FromArgb(255, 62, 201, 174)
           .Styles(Style.Vb.Keyword2).Bold = False
           .Styles(Style.Vb.Keyword2).Italic = False
           .Styles(Style.Vb.Keyword2).Underline = False

           .Styles(Style.Vb.Keyword3).BackColor = backColor
           .Styles(Style.Vb.Keyword3).ForeColor = Color.FromArgb(255, 181, 206, 168)
           .Styles(Style.Vb.Keyword3).Bold = False
           .Styles(Style.Vb.Keyword3).Italic = False
           .Styles(Style.Vb.Keyword3).Underline = False

           .Styles(Style.Vb.Keyword4).BackColor = backColor
           .Styles(Style.Vb.Keyword4).ForeColor = Color.IndianRed
           .Styles(Style.Vb.Keyword4).Bold = False
           .Styles(Style.Vb.Keyword4).Italic = False
           .Styles(Style.Vb.Keyword4).Underline = False

           .Styles(Style.Vb.Label).BackColor = backColor
           .Styles(Style.Vb.Label).ForeColor = Color.FromArgb(255, 100, 150, 215)
           .Styles(Style.Vb.Label).Bold = False
           .Styles(Style.Vb.Label).Italic = False
           .Styles(Style.Vb.Label).Underline = False

           .Styles(Style.Vb.Number).BackColor = backColor
           .Styles(Style.Vb.Number).ForeColor = Color.FromArgb(255, 181, 206, 168)
           .Styles(Style.Vb.Number).Bold = False
           .Styles(Style.Vb.Number).Italic = False
           .Styles(Style.Vb.Number).Underline = False

           .Styles(Style.Vb.Operator).BackColor = backColor
           ' .Styles(Style.Vb.Operator).ForeColor = Color.DarkKhaki
           ' .Styles(Style.Vb.Operator).ForeColor = Color.DarkCyan
           ' .Styles(Style.Vb.Operator).ForeColor = Color.Honeydew
           ' .Styles(Style.Vb.Operator).ForeColor = Color.LightSteelBlue
           .Styles(Style.Vb.Operator).ForeColor = Color.LightSlateGray
           .Styles(Style.Vb.Operator).Bold = True
           .Styles(Style.Vb.Operator).Italic = False
           .Styles(Style.Vb.Operator).Underline = False

           .Styles(Style.Vb.Preprocessor).BackColor = backColor
           ' .Styles(Style.Vb.Preprocessor).ForeColor = Color.HotPink
           .Styles(Style.Vb.Preprocessor).ForeColor = Color.LightSlateGray
           .Styles(Style.Vb.Preprocessor).Bold = False
           .Styles(Style.Vb.Preprocessor).Italic = False
           .Styles(Style.Vb.Preprocessor).Underline = False

           .Styles(Style.Vb.String).BackColor = backColor
           .Styles(Style.Vb.String).ForeColor = Color.FromArgb(255, 214, 157, 133)
           .Styles(Style.Vb.String).Bold = False
           .Styles(Style.Vb.String).Italic = False
           .Styles(Style.Vb.String).Underline = False

           .Styles(Style.Vb.StringEol).BackColor = backColor
           .Styles(Style.Vb.StringEol).ForeColor = Color.Gainsboro
           .Styles(Style.Vb.StringEol).FillLine = True
           .Styles(Style.Vb.StringEol).Bold = False
           .Styles(Style.Vb.StringEol).Italic = False
           .Styles(Style.Vb.StringEol).Underline = False

       End With

       ' Set the Vb.Net keywords.
       editor.SetKeywords(0, keywords)
       editor.SetKeywords(1, typenames)
       editor.SetKeywords(2, literals)
       editor.SetKeywords(3, other)

   End Sub


Código (vbnet) [Seleccionar]
   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Sets a VisualBasic.Net light lexer style on the specified <see cref="Scintilla"/> editor.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="editor">
   ''' The source <see cref="Scintilla"/> editor.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   Public Shared Sub SetVbNetLightStyle(ByVal editor As Scintilla)

       Dim backColor As Color = Color.WhiteSmoke
       Dim selectionColor As Color = Color.FromArgb(255, 38, 79, 120)

       Dim keywords As String =
<a>
debug
release
addhandler
addressof
aggregate
alias
and
andalso
ansi
as
assembly
auto
binary
boolean
byref
byte
byval
call
case
catch
cbool
cbyte
cchar
cdate
cdbl
cdec
char
cint
class
clng
cobj
compare
const
continue
csbyte
cshort
csng
cstr
ctype
cuint
culng
cushort
custom
date
decimal
declare
default
delegate
dim
directcast
distinct
do
double
each
else
elseif
end
endif
enum
equals
erase
error
event
exit
explicit
false
finally
for
friend
from
function
get
gettype
getxmlnamespace
global
gosub
goto
group
handles
if
implements
imports
in
inherits
integer
interface
into
is
isfalse
isnot
istrue
join
key
let
lib
like
long
loop
me
mid
mod
module
mustinherit
mustoverride
my
mybase
myclass
namespace
narrowing
new
next
not
nothing
notinheritable
notoverridable
object
of
off
on
operator
option
optional
or
order
orelse
overloads
overridable
overrides
paramarray
partial
preserve
private
property
protected
public
raiseevent
readonly
redim
rem
removehandler
resume
return
sbyte
select
set
shadows
shared
short
single
skip
static
step
stop
strict
string
structure
sub
synclock
take
text
then
throw
to
true
try
trycast
typeof
uinteger
ulong
unicode
until
ushort
using
variant
wend
when
where
while
widening
with
withevents
writeonly
xor
</a>.Value

       Dim typenames As String =
<a>
array
backgroundworker
bitmap
button
checkbox
checkedlistbox
colordialog
combobox
component
contextmenustrip
control
datagridview
dataset
datetime
datetimepicker
dictionary
directorysearcher
errorprovider
eventlog
exception
fileinfo
filesystemwatcher
flowlayoutpanel
form
graphics
groupbox
helpprovider
hscrollbar
iappdomainsetup
iasyncresult
ibindablecomponent
ibuttoncontrol
icloneable
icollectdatta
icollection
icolumnmapping
icolumnmappingcollection
icommandexecutor
icomparable
icomparer
icomponent
icomponenteditorpagesite
icontainercontrol
iconvertible
icurrencymanagerprovider
icustomformatter
idataadapter
idatagridcolumnstyleeditingnotificationservice
idatagrideditingservice
idatagridvieweditingcell
idatagridvieweditingcontrol
idataobject
idataparameter
idataparametercollection
idatareader
idatarecord
idbcommand
idbconnection
idbdataadapter
idbdataparameter
idbtransaction
idevicecontext
idictionary
idictionaryenumerator
idisposable
idroptarget
ienumerable
ienumerator
iequalitycomparer
iequatable
ifeaturesupport
ifilereaderservice
iformatprovider
iformattable
iformatter
igroupping
ihashcodeprovider
ilist
ilookup
image
imagelist
imessagefilter
inotifypropertychanged
int16
int32
int64
iobservable
iobserver
iorderedenumerable
iorderedqueryable
iqueryable
iqueryprovider
iserializable
iserviceprovider
iset
istructuralcomparable
istructuralequatable
itablemapping
itablemappingcollection
iwin32window
iwindowtarget
label
linklabel
list
listbox
listview
maskedtextbox
menustrip
messagequeue
monthcalendar
nativewindow
notifyicon
numericupdown
openfiledialog
panel
pen
performancecounter
picturebox
point
pointf
printdialog
printdocument
process
progressbar
propertygrid
radiobutton
readonlycollection
rectangle
rectanglef
regex
richtextbox
savefiledialog
serialport
servicecontroller
size
sizef
solidbrush
splitcontainer
statusstrip
system
tabcontrol
tablelayoutpanel
textbox
timer
toolstrip
toolstripcontainer
tooltip
trackbar
type
uint16
uint32
uint64
vscrollbar
webbrowser
</a>.Value

       Dim literals As String =
<a>
!
#
%
@
&amp;
i
d
f
l
r
s
ui
ul
us
</a>.Value

       Dim other As String = "_" ' line-break.

       ' Reset the styles.
       editor.StyleResetDefault()
       editor.StyleClearAll()
       ' editor.Styles(Style.[Default]).Font = "Consolas"
       ' editor.Styles(Style.[Default]).Size = 10

       ' Set the Vb.Net lexer.
       editor.Lexer = Lexer.Vb

       ' Set folding properties.
       With editor
           .SetProperty("fold", "1")
           .SetProperty("fold.compact", "1")
           .SetProperty("fold.html", "1")
       End With

       ' Set the margin for fold markers.
       With editor
           .Margins(2).Type = MarginType.Symbol
           .Margins(2).Mask = Marker.MaskFolders
           .Margins(2).Sensitive = True
           .Margins(2).Width = 20
       End With

       ' Reset folder markers.
       For i As Integer = Marker.FolderEnd To Marker.FolderOpen
           editor.Markers(i).SetForeColor(SystemColors.ControlLightLight)
           editor.Markers(i).SetBackColor(SystemColors.ControlDark)
       Next

       ' Set the style of the folder markers.
       With editor
           .Markers(Marker.Folder).Symbol = MarkerSymbol.BoxPlus
           .Markers(Marker.Folder).SetBackColor(SystemColors.ControlText)
           .Markers(Marker.FolderOpen).Symbol = MarkerSymbol.BoxMinus
           .Markers(Marker.FolderEnd).Symbol = MarkerSymbol.BoxPlusConnected
           .Markers(Marker.FolderEnd).SetBackColor(SystemColors.ControlText)
           .Markers(Marker.FolderMidTail).Symbol = MarkerSymbol.TCorner
           .Markers(Marker.FolderOpenMid).Symbol = MarkerSymbol.BoxMinusConnected
           .Markers(Marker.FolderSub).Symbol = MarkerSymbol.VLine
           .Markers(Marker.FolderTail).Symbol = MarkerSymbol.LCorner
       End With

       ' Enable automatic folding
       editor.AutomaticFold = (AutomaticFold.Show Or AutomaticFold.Click Or AutomaticFold.Change)

       ' Disable whitespaces visibility.
       editor.ViewWhitespace = WhitespaceMode.Invisible

       ' Set the selection color.
       '  editor.SetSelectionBackColor(True, selectionColor)

       ' Set the style of the Vb.Net language.
       With editor
           .Styles(Style.Default).BackColor = backColor

           .Styles(Style.Vb.Asm).BackColor = backColor
           .Styles(Style.Vb.Asm).ForeColor = Color.OrangeRed
           .Styles(Style.Vb.Asm).Bold = True
           .Styles(Style.Vb.Asm).Italic = False
           .Styles(Style.Vb.Asm).Underline = False

           .Styles(Style.Vb.BinNumber).BackColor = backColor
           .Styles(Style.Vb.BinNumber).ForeColor = Color.OrangeRed
           .Styles(Style.Vb.BinNumber).Bold = False
           .Styles(Style.Vb.BinNumber).Italic = False
           .Styles(Style.Vb.BinNumber).Underline = False

           .Styles(Style.Vb.Comment).BackColor = backColor
           .Styles(Style.Vb.Comment).ForeColor = Color.Green
           .Styles(Style.Vb.Comment).Bold = False
           .Styles(Style.Vb.Comment).Italic = False
           .Styles(Style.Vb.Comment).Underline = False

           .Styles(Style.Vb.CommentBlock).BackColor = backColor
           .Styles(Style.Vb.CommentBlock).ForeColor = Color.Green
           .Styles(Style.Vb.CommentBlock).Bold = False
           .Styles(Style.Vb.CommentBlock).Italic = False
           .Styles(Style.Vb.CommentBlock).Underline = False

           .Styles(Style.Vb.Constant).BackColor = backColor
           .Styles(Style.Vb.Constant).ForeColor = Color.DarkMagenta
           .Styles(Style.Vb.Constant).Bold = False
           .Styles(Style.Vb.Constant).Italic = False
           .Styles(Style.Vb.Constant).Underline = False

           .Styles(Style.Vb.Date).BackColor = backColor
           .Styles(Style.Vb.Date).ForeColor = Color.DarkMagenta
           .Styles(Style.Vb.Date).Bold = False
           .Styles(Style.Vb.Date).Italic = False
           .Styles(Style.Vb.Date).Underline = False

           .Styles(Style.Vb.Default).BackColor = backColor
           .Styles(Style.Vb.Default).ForeColor = Color.Black
           .Styles(Style.Vb.Default).Bold = False
           .Styles(Style.Vb.Default).Italic = False
           .Styles(Style.Vb.Default).Underline = False

           .Styles(Style.Vb.DocBlock).BackColor = backColor
           .Styles(Style.Vb.DocBlock).ForeColor = Color.Green
           .Styles(Style.Vb.DocBlock).Bold = False
           .Styles(Style.Vb.DocBlock).Italic = False
           .Styles(Style.Vb.DocBlock).Underline = False

           .Styles(Style.Vb.DocKeyword).BackColor = backColor
           .Styles(Style.Vb.DocKeyword).ForeColor = Color.FromArgb(255, 64, 47, 241)
           .Styles(Style.Vb.DocKeyword).Bold = False
           .Styles(Style.Vb.DocKeyword).Italic = False
           .Styles(Style.Vb.DocKeyword).Underline = False

           .Styles(Style.Vb.DocLine).BackColor = backColor
           .Styles(Style.Vb.DocLine).ForeColor = Color.Green
           .Styles(Style.Vb.DocLine).Bold = False
           .Styles(Style.Vb.DocLine).Italic = False
           .Styles(Style.Vb.DocLine).Underline = False

           .Styles(Style.Vb.Error).BackColor = backColor
           .Styles(Style.Vb.Error).ForeColor = Color.OrangeRed
           .Styles(Style.Vb.Error).Bold = True
           .Styles(Style.Vb.Error).Italic = False
           .Styles(Style.Vb.Error).Underline = False

           .Styles(Style.Vb.HexNumber).BackColor = backColor
           .Styles(Style.Vb.HexNumber).ForeColor = Color.OrangeRed
           .Styles(Style.Vb.HexNumber).Bold = False
           .Styles(Style.Vb.HexNumber).Italic = False
           .Styles(Style.Vb.HexNumber).Underline = False

           .Styles(Style.Vb.Identifier).BackColor = backColor
           .Styles(Style.Vb.Identifier).ForeColor = Color.Black
           .Styles(Style.Vb.Identifier).Bold = False
           .Styles(Style.Vb.Identifier).Italic = False
           .Styles(Style.Vb.Identifier).Underline = False

           .Styles(Style.Vb.Keyword).BackColor = backColor
           .Styles(Style.Vb.Keyword).ForeColor = Color.FromArgb(255, 72, 64, 213)
           .Styles(Style.Vb.Keyword).Bold = False
           .Styles(Style.Vb.Keyword).Italic = False
           .Styles(Style.Vb.Keyword).Underline = False

           .Styles(Style.Vb.Keyword2).BackColor = backColor
           .Styles(Style.Vb.Keyword2).ForeColor = Color.DarkCyan
           .Styles(Style.Vb.Keyword2).Bold = False
           .Styles(Style.Vb.Keyword2).Italic = False
           .Styles(Style.Vb.Keyword2).Underline = False

           .Styles(Style.Vb.Keyword3).BackColor = backColor
           .Styles(Style.Vb.Keyword3).ForeColor = Color.OrangeRed
           .Styles(Style.Vb.Keyword3).Bold = False
           .Styles(Style.Vb.Keyword3).Italic = False
           .Styles(Style.Vb.Keyword3).Underline = False

           .Styles(Style.Vb.Keyword4).BackColor = backColor
           .Styles(Style.Vb.Keyword4).ForeColor = Color.DarkRed
           .Styles(Style.Vb.Keyword4).Bold = False
           .Styles(Style.Vb.Keyword4).Italic = False
           .Styles(Style.Vb.Keyword4).Underline = False

           .Styles(Style.Vb.Label).BackColor = backColor
           .Styles(Style.Vb.Label).ForeColor = Color.FromArgb(255, 72, 64, 213)
           .Styles(Style.Vb.Label).Bold = False
           .Styles(Style.Vb.Label).Italic = False
           .Styles(Style.Vb.Label).Underline = False

           .Styles(Style.Vb.Number).BackColor = backColor
           .Styles(Style.Vb.Number).ForeColor = Color.OrangeRed
           .Styles(Style.Vb.Number).Bold = False
           .Styles(Style.Vb.Number).Italic = False
           .Styles(Style.Vb.Number).Underline = False

           .Styles(Style.Vb.Operator).BackColor = backColor
           ' .Styles(Style.Vb.Operator).ForeColor = Color.DarkKhaki
           ' .Styles(Style.Vb.Operator).ForeColor = Color.DarkCyan
           ' .Styles(Style.Vb.Operator).ForeColor = Color.Honeydew
           ' .Styles(Style.Vb.Operator).ForeColor = Color.LightSteelBlue
           .Styles(Style.Vb.Operator).ForeColor = Color.Gray
           .Styles(Style.Vb.Operator).Bold = True
           .Styles(Style.Vb.Operator).Italic = False
           .Styles(Style.Vb.Operator).Underline = False

           .Styles(Style.Vb.Preprocessor).BackColor = backColor
           ' .Styles(Style.Vb.Preprocessor).ForeColor = Color.HotPink
           .Styles(Style.Vb.Preprocessor).ForeColor = Color.Gray
           .Styles(Style.Vb.Preprocessor).Bold = False
           .Styles(Style.Vb.Preprocessor).Italic = False
           .Styles(Style.Vb.Preprocessor).Underline = False

           .Styles(Style.Vb.String).BackColor = backColor
           .Styles(Style.Vb.String).ForeColor = Color.Brown
           .Styles(Style.Vb.String).Bold = False
           .Styles(Style.Vb.String).Italic = False
           .Styles(Style.Vb.String).Underline = False

           .Styles(Style.Vb.StringEol).BackColor = backColor
           .Styles(Style.Vb.StringEol).ForeColor = Color.Black
           .Styles(Style.Vb.StringEol).FillLine = True
           .Styles(Style.Vb.StringEol).Bold = False
           .Styles(Style.Vb.StringEol).Italic = False
           .Styles(Style.Vb.StringEol).Underline = False

       End With

       ' Set the Vb.Net keywords.
       editor.SetKeywords(0, keywords)
       editor.SetKeywords(1, typenames)
       editor.SetKeywords(2, literals)
       editor.SetKeywords(3, other)

   End Sub

#3772
Desarrollar el algoritmo léxico por ti mismo sería una locura que llevaría demasiado tiempo, en mi opinión haces muy bien en preguntar por una librería ya desarrollada, puesto que existen algunas con años de experiencia en ese tema, muy, muy veteranas, como el wrapper de Scintilla para .Net:

En mi opinión no hay nada mejor, eso si, la plantilla de colores de "X" lenguaje es responsabilidad tuya constuirla a tu gusto... aquí tienes algunos ejemplos:

Otra opción sería FastcoloredTextBox, es lo que yo usaba antes de conocer Scintilla, y sinceramente ...es bueno, no hay que construir plantillas, pero el comportamiento y el acabado del control deja mucho que desear.

Y si solamente quieres colorear un código de una manera eficiente pero sin un control de usuario por medio, entonces puedes utilizar la librería ColorCode:

...Aunque el string resultante de ColorCode está en Html, así que no te vendría nada mal este genial control, Html Renderer:

saludos!

#3773
1. ¿Una aplicación en modo Release también se compila y se inicia correctamente dentro de Visual Studio?.

2. ¿Bajo que versión de .Net Framework estás compilando las aplicaciones que no se inician fuera de Visual Studio?.

3. ¿Has probado con otra versión de .Net Framework?, ¿ocurre lo mismo?.

4. ¿Qué versión de Windows, y de Visual Studio usas?, ¿y qué lenguaje y tecnología de interfaz de usuario (WinForms, WPF, etc)? ( esta pregunta no es relevante, pero cualquier dato adicional podría ayudar. )

5. ¿Has probado algo tan simple como iniciar la app en modo Administrador? (click derecho sobre el executable -> Ejecutar como Adminisrador).

6. ¿Has probado a iniciar la misma aplicación desde un nuevo perfil de usuario en Windows?, ¿ocurre lo mismo?.

7. ¿Has probado a iniciar la aplicación desactivando primero el JIT-debugger de Visual Studio?:
Cita de: https://msdn.microsoft.com/en-us/library/5hs4b7a6%28VS.80%29.aspx

8. ¿Has analizado los registros de fallos de aplicaciones en el Visor de Eventos de Widnows?, hazlo, y comenta si aparece algún error relacionado con el inicio de la app que no te funciona fuera de Visual Studio.

Estos serían los pasos a seguir :

  • Iniciar los servicios del visor de eventos si los tuvieses desactivados por algún motivo.
  • Abrir el visor de eventos.
  • Limpiar todos los repositorios de registros anteriores para facilitar el rastreo de fallos de tu app.
  • Iniciar tu app.
  • Localizar el registro de la excepción de tu app en el visor de eventos, y comentarnos la información de depuración del mismo.

Info:

9. ¿Has probado a desinstalar (no reinstalar) Visual Studio para poder iniciar la aplicación?. (esto podría tener una relación con la pegunta nº4, y en ese caso, ¿has probado instalando una versión actualizada de Visual Studio?)

10. Si todo lo anterior falla o da unos resultados de diagnostico inseguros, prueba a realizar una comprobación de errores sobre el sistema de archivos de Windows, con el siguiente comando en la consola:
SFC.exe /SCANNOW




Son bastantes más cosas las que puedes probar, te formulé al rededor de 10 preguntas para no hacer esto demasiado largo, tómate tu tiempo e intenta probarlo y responder a todo para volver con datos que puedan ayudar a localizar la causa del problema que tienes.

Saludos!
#3774
Cita de: Meta en  6 Marzo 2016, 10:37 AMHe estado buscan doe en Visual Stduuio .net Community 2015 y nada. Al menos quiero saber si lo incluye en esta versión.

Puedes comprobarlo por ti mismo en las opciones del menú de depuración:

Debug
└───Windows
   ├───Memory
   │   │───Memory 1
   │   │───Memory 2
   │   │───Memory 3
   │   └───Memory 4
   └───Disassembly


( o prueba con Ctrl + Alt + D )

...si no estuviesen, entonces es que no se incluyen en la edición limitada 'Community'.

Saludos!
#3775
Cita de: El_Andaluz en  6 Marzo 2016, 04:49 AMUna planta que cura y a la vez puede hacer daño jamas podemos considerarla como el santo grial de la medicina tradicional.

Los medicamentes curan y también pueden hacer daño hasta el punto de matar con una sobredosis (cosa que la Maria no hace, al menos de ese modo), todo depende del exceso con el que se consumen las cosas, si alguien no sabe fumar con moderación ...mejor que no lo haga.




Cita de: El_Andaluz en  6 Marzo 2016, 04:49 AMEsta considerada como una droga por que altera el funcionamiento del sistema nervioso central lo dice el mismo articulo que he publicado y por eso lo consideran ilegal.

Esto es solo mi opinión personal:

Si la Marihuana fuese legal, podría arruinar a las corporaciones farmaceuticas con muchas de sus pastillas que son mas caras y algunas ni curan ni alivian ni hacen nada (dependiendo de si estás en el grupo de personas a las que les surge efecto el medicamente, o de las personas a las que no), así que yo me fio más de la experiencia propia y de la experiencia de las personas que nos rodean en el día a día, es decir, de familiares, amigos o conocidos con dolores musculares que fuma Maria y se siente mejor (aunque solo fuese por un efecto Placebo o no), que de lo que diga un medicucho con bata blanca en un artículo que quien sabe realmente a que entidades beneficia que lo haya escrito y haya sido publicado en los intereses propios de a saber quien, vaya. Esto es algo conspiranoico, lo se, pero es lo que pienso cuando a mi me dicen con "evidencias cientificas" algo que se que no es verdad.
#3776
Cita de: El_Andaluz en  6 Marzo 2016, 03:39 AMLo que no vamos es a intentar engañar a la gente que no estén viendo en el foro, diciendo que la Marihuana es lo mejor del mundo y burradas de que la Marihuana cura enfermedades, cuando se ha hecho numerosos estudios y ningún ensayo clínico robusto ha mostrado que sean curativos o mejor que otros medicamentos.

Estoy en contra.

La Marihuana medicinal hace que los pacientes sientan considerablemente menos dolor por sus características...relajantes o sedantes o como queramos llamarlo, por no mencionar el simple hecho de que fumar un chusto de Maria te pone una sonrisa en la cara contra las depresiones... :xD y además ayudan a dormir (estés enfermo o no), es decir, que curan el insomnio, así que tal vez deberiamos considerar sus beneficios como una forma de cura en algunos aspectos, y también como forma de alivio en otros tantos...

Está claro que a pesar de tener ciertos beneficios que podemos aprovechar, también tiene factores muy negativos que nos pueden hacer empeorar psicologicamente hablando, puesto que la Maria no deja de ser una droga que afecta al cerebro y mata las neuronas.

Saludos!
#3777
Cita de: Orubatosu en  5 Marzo 2016, 16:25 PM
http://canamo.net/actualidad/nasa-no-pagara-por-fumar-marihuana-tumbarse

De hecho esta "noticia" tiene tanta pinta de bulo, que no hay por donde cogerla

Que hagan estudios sobre la inmobilidad del cuerpo humano, lo entendería. Pero lo de la marihuana, simplemente no hay por donde cogerlo. De hecho dudo incluso de que un estudio de este tipo fuera legal

Di que si, y como siempre eso debe ser así por que tú lo digas.

No se si la noticia es un Hoax o no, pero si comparamos con los sucesos del pasado entonces es creible, puesto que no es la primera vez que NASA hace experimentos sobre la inmovilidad del cuerpo humano, y precisamente en (casi)las mismas circunstancias, en camas, para comprobar cosas relacionadas con la resistencia de los huesos, donde las personas coballas víctimas gilipolas voluntarias se pasaban medio dia acostado de lado sin moverse para no atrofiarse los huesos, y medio dia del otro costado, acabando con problemas psicológicos, depresión, problemas de huesos, etc, así que por muy bonito que ahora la NASA lo intente pintar con estrategias de marketing para captar a la gente joven con la Marihuana, la misma frustración es lo que le espera a los "afortunados" del wifi.



Las expectativas de la gente:







La realidad:








Saludos!
#3778
.NET (C#, VB.NET, ASP) / Re:
5 Marzo 2016, 12:18 PM
Cita de: Bob_Ale en  5 Marzo 2016, 11:51 AMEl "problema" le tengo cuando ejecuto mi aplicación en otro equipo tiene una un office más viejo que es mio,  por debajo del office 2010 o cuando en equipo en cuestión no tiene Excel.

El error que da es que no puede cargar el Microsoft. Office. Interop...  Versión 14.0.0.

Ya ves que problema! Eso se arregla instalando el mismo office que el mismo,  pero no es plan.

De todas formas, a pesar de que no me has entendido me hablas de una librería que la investigaré.
Muchas gracias.

No te entendí por que al principio dijiste que desarrollaste tu librería para el manejo de Excel, y entonces supuse que habias desarrollado algoritmos para leer y manipular archivos Excel con estructura OOXML o algo parecido sin estar dependiendo de las librerías de Microsoft Office.

Lo que mencionas es normal, las dependencias de la interoperabilidad de Office requieren de la misma versión del producto instalada.

Para hacer portable tu aplicación evitando dependencias de Microsoft, puedes plantearte el utilizar cualquiera de las dos librerías que te comenté (NPOI se utiliza mucho más, y es más completa), pero tendrás que acostumbrarte a su utilización aprendiendo como funciona leyendo la documentación y etc, puesto que es bastante diferente a las librerías COM del Office (no es dificil, simplemente distinto).

Si prefieres seguir utilizando las librerías de Microsoft Office, una cosa que tal vez podrías llevar a cabo, aunque es pura hipótesis, sería adjuntar las librerías de cada versión de Office junto a tu programa, y entonces desde la aplicación te encargas de detectar que versión de Office está instalada en el equipo mediante las claves de instalación en el registro de Windows, y así podrías cargar dinámicamente la dll correspondiente a dicha versión, pero sería bastante tedioso...

Saludos!
#3779
.NET (C#, VB.NET, ASP) / Re: Excel sin office
5 Marzo 2016, 10:51 AM
Cita de: Bob_Ale en  5 Marzo 2016, 10:22 AM¿Alguien ha tenido este problema?

¿Qué problema?, no has especificado absolutamente nada en concreto, intenta ser especifico describiendo el problema que sea para poder intentar ayudarte... ¿qué estructura de formato de Excel trabajas, .xls, .xlsx, .xlsm, o cual?, ¿te muestra algún mensaje de error el Office Excel? ...describelo.

De todas formas, sin saber cual es el problema, lo único que te puedo decir es que las siguientes librerías nunca me han dado problemas de apertura de los archivos de Excel generados:

Con las librerías de Telerik si que he llegado a tener algunos problemas al intentar abrir los archivos generados, me salia un aviso acerca del formato (no recuerdo el mensaje), desarrollé este simple código para solucionarlo, quizás te sirva de algo:

Código (vbnet) [Seleccionar]
       ''' ----------------------------------------------------------------------------------------------------
       ''' <summary>
       ''' Writes a registry patch that disables the Microsoft Excel warning
       ''' that occurs when attempting to open a <c>.XLS</c> file generated by 3rd-party applications such Telerik.
       ''' </summary>
       ''' ----------------------------------------------------------------------------------------------------
       ''' <remarks>
       ''' More info about: <see href="http://support.microsoft.com/es-es/kb/948615"/>
       ''' </remarks>
       ''' ----------------------------------------------------------------------------------------------------
       <DebuggerStepThrough>
       Public Shared Sub DisableMSOfficeExcelExtensionHardeningWarning()

            Dim keyFormat As String = "Software\Microsoft\Office\{0}\Excel\Security"
            Dim name As String = "ExtensionHardening"
            Dim data As String = "0"
            Dim kind As RegistryValueKind = RegistryValueKind.DWord

            Dim permission As RegistryKeyPermissionCheck = RegistryKeyPermissionCheck.ReadWriteSubTree
            Dim options As RegistryOptions = RegistryOptions.None

            Using reg As RegistryKey = Registry.CurrentUser

                ' Microsoft Office 2003
                reg.CreateSubKey(String.Format(keyFormat, "11.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2007
                reg.CreateSubKey(String.Format(keyFormat, "12.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2010
                reg.CreateSubKey(String.Format(keyFormat, "14.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2013
                reg.CreateSubKey(String.Format(keyFormat, "15.0"), permission, options).SetValue(name, data, kind)

                ' Microsoft Office 2016
                reg.CreateSubKey(String.Format(keyFormat, "16.0"), permission, options).SetValue(name, data, kind)

            End Using

       End Sub


Saludos!
#3780
Casi todos se ofrecerian voluntarios peeeero... ¿y los efectos secundarios?, estar SETENTA DÍAS en la cama, ojo al dato,como eso sea estricamente así, entonces no hay droga que lo haga más soportable a largo plazo, debe ser un infierno, yo creo que probablemente el chaval que se decida a hacerlo, irá ilusionado y creyendo que no pierde nada sino que encima gana mucho (pobre iluso, es la NASA), pero al final del experimento (si llega) acabará con algún tipo de trastorno mental al estar cohibido en un espacio reducido, sin poder levantarse ni andar, solo hay que fijarse en los problemas mentales de los presos en las cárceles de máxima seguridad (y eso que ellos si que tienen permiso para levantarse de la cama, pero bastantes acaban locos de todas formas en pocos meses), ¿y encima drogándose para pillar más paranoia con la broma no poner los pies fuera de la cama?... para mi, no vale la pena las posibles consecuencias por esa cantidad de dinero, la mitad de esos 16.000€ se lo gastarán en un buen psicólogo cuando salgan de la cama...

Saludos!