GUICtrlCreateEdit

Tus preguntas. Algoritmos o Grupos de Comandos formando Programas Escripts.
Responder
Ricardo
Mensajes: 14
Registrado: 31 Mar 2009, 21:07

GUICtrlCreateEdit + Ayuda !

Mensaje por Ricardo »

CHEFITO !!!!! necesito ayuda !

Chefito muchas gracias por tu colaboracion, pero... ! Mallllll !!!!! la info que he buscado sobre RichText no es que me ayude mucho, la verdad no entiendo ni papa, cuando intento correr algunos ejemplos me sacan error y ya descargue el RICHTXT.OCX y lo registre , solo me corre el ejemplo de la ayuda pero no es que lo entienda mucho, la cosa es asi:, yo cree un GUICtrlCreateEdit que me ha funcionado en el ejercicio, escribo en el, pero necesito resaltar o escribir con dirferente color cierta informacion que alli se genera, esta informacion la crea de un archivo .DAT que he creado previamente, la cosa es como hago para que la info se escriba en este EDIT y si lo voy hacer con un RichText como lo hago :smt013 , chefito no tienes un ejemplo en el cual yo me pueda basar para hacer mi ejercicio. :smt017

Muchas gracias por la colaboracion y la atencion prestada ! :smt006

Parte del ejercicio :

$Window1=GuiCreate("SFTP Connections", 633, 447, 190, 125)
GuiSetIcon(@SystemDir & "\rasphone.exe", 0)
$Edit1 = GUICtrlCreateEdit("", 160, 140, 449, 249,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_NOHIDESEL,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL,$ES_READONLY))

$outPut = ClipGet();here we get the output from the clipboard
writeOut($outPut) ;send the output to our function
readOut()


Func writeOut($data)
; Write the data to a file
$file = FileOpen("commanddata.dat", 2);
FileWrite($file, $data)
FileClose($file)
EndFunc

Func readOut()
$file2 = FileOpen("commanddata.dat", 0)
$lastline = _FileCountLines("commanddata.dat")
$line = FileReadLine($file2, $lastline)
$match = StringCompare($line, "psftp>");check if the download is complete
If $match = 0 Then
$nl=0
$Status="Fail"
for $nLine = 1 to $lastline
$TextLine=FileReadLine($file2, $nLine)
$String1=StringLeft($TextLine,7)
If $String1 = "remote:" Then
_GUICtrlEdit_InsertText ($Edit1,"File ["&$nl&"] : " & $TextLine & @CRLF)
$nl=$nl+1
$Status="OK"
EndIf
Next
$Text2=_GUICtrlEdit_InsertText ($Edit1,"Nº Files ["&$nl&"] Status : ["& $Status &"] ::. " & @CRLF ,-1)
_GUICtrlEdit_InsertText ($Edit1,"==================================" & @CRLF & @CRLF,-1)
$ExitNum = "Y"
Return $ExitNum
Else
Sleep(4000)
$ExitNum = "N"
Return $ExitNum
EndIf
EndFunc
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

Re: GUICtrlCreateEdit

Mensaje por gna08 »

Para el rich edit revisa estos links
http://www.autoitscript.com/forum/index ... l=Richtext
http://www.autoitscript.com/forum/index ... l=Richtext

Pero para hacerlo mas rapido usaria las libreria de ie.au3, y con la funcion iedocwritehtml() tambien puedes lograr muy buenas cosas pero eso queda a tu criterio.
Si necesitas mas info pregunta XD
Aunk no m Buskes, Seguro m enkontras!
Ricardo
Mensajes: 14
Registrado: 31 Mar 2009, 21:07

Re: GUICtrlCreateEdit

Mensaje por Ricardo »

Apenas intento correr el programa me genera error de variabels no declaradas., No entiendo x que !!!!, Me puedes dar una mano por que la verdad estoy mas perdido !.

Muchas gracias !!!!! :smt003

C:\Prubas\richtext3.au3(5,32) : WARNING: $GUI possibly not declared/created yet
$GUI = GUICreate("bye",700,500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Prubas\richtext3.au3(7,56) : WARNING: $hRichText possibly not declared/created yet
$hRichText = RichText_Create($GUI, 0, 0, 700, 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Prubas\richtext3.au3(7,55) : ERROR: RichText_Create(): undefined function.
$hRichText = RichText_Create($GUI, 0, 0, 700, 500)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Prubas\richtext3.au3(8,55) : ERROR: RichText_InsertText(): undefined function.
RichText_InsertText($hRichText, "Hello everybody")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
C:\Prubas\richtext3.au3(12,34) : ERROR: RichText_SetSel(): undefined function.
RichText_SetSel($hRichText, 6, 11)




Que pena la ignorancia pero puedo trabajar con funciones _IE y aplicarlas en una ventana que no se _IE es decir creada con un _GUI ? como esto :
  • $Window1=GuiCreate("SFTP Connections", 633, 447, 190, 125)
    $Edit1 = GUICtrlCreateEdit("", 160, 140, 449, 249,BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_NOHIDESEL,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL,$ES_READONLY))
Avatar de Usuario
gna08
Hacker del Foro
Mensajes: 379
Registrado: 27 Sep 2008, 18:51
Ubicación: Cordoba, Argentina

Re: GUICtrlCreateEdit

Mensaje por gna08 »

Mmm, fijate si la opcion Opt("MustDeclareVars",1) no este en 1, pero no se.

Ahora con el tema de _IE te paso un ejemplito, k es mas practico. Es sobre todo saber algo de html, como ser <p><b><font color="#0000FF">

Código: Seleccionar todo

#include <IE.au3>



$oIE = _IECreateEmbedded ()

$GUI = GUICreate("LOG", 620, 386, 193, 125)

$obj = GUICtrlCreateObj($oIE, 8, 8, 604, 340)

$OK = GUICtrlCreateButton("OK", 280, 352, 73, 25, 0)

GUISetState(@SW_SHOW)

_iniciar()

_setlog()

While 1

    Switch GUIGetMsg()

        Case -3

            Exit

        Case $OK

            _IEDocWriteHTML ($oIE, '<p><font color="#0000FF"><b>**** FIN DE EL REPORTE ****</b></font></p>')

            Sleep(2000)

            Exit

    EndSwitch

WEnd



Func _iniciar()

    _IENavigate($oIE, "about:blank")

    $HT = "<HTML>" & @CR

    $HT &= "<HEAD>" & @CR

    $HT &= "<TITLE>Orale!</TITLE>" & @CR

    $HT &= "</HEAD>" & @CR

    _IEDocWriteHTML ($oIE, $HT)

EndFunc



Func _setlog()

    $HT = '<p><font color="#008000"><b>Hola, soy un ejemplo!</b></font></p>' & @CR

    $HT &= '<p><b><font color="#0000FF">Espero que te sirva de ayuda...</font></b></p>' & @CR

    $HT &= '<p><font color="#FF0000">Podes modificar <i>fuente</i>, <font size="4">tamaño, </font></font><font color="#800000">colores,    etc.</font></p>' & @CR

    $HT &= '<p><b><font color="#800080" size="4">Presiona OK para terminar.</font></b></p>' & @CR

    _IEDocWriteHTML ($oIE, $HT)

EndFunc
Cualkier cosa me preguntas :smt023 , comentame si te sirvio
Aunk no m Buskes, Seguro m enkontras!
Ricardo
Mensajes: 14
Registrado: 31 Mar 2009, 21:07

Re: GUICtrlCreateEdit

Mensaje por Ricardo »

MUCHAS GRACIAS !!!!!! :smt005

Por lo que veo este ejemplo me va a servir mucho !!! :smt023

Salu2 !!!
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: GUICtrlCreateEdit

Mensaje por Chefito »

Haber, si lo que quieres es una consola para que el usuario solamente tenga que ver texto, sin que tenga que editar nada, un control IE va muy muy bien :smt023 .
Pero si lo que quieres es que el texto se pueda editar (vamos...un control edit funcionando totalmente) y además puedas interactuar con este texto poniendo colores, imagenes, fuentes, etc en varias partes de este texto (al estilo wordpad), pues debes usar el control Richtext u otro similar.
Un pequeño ejemplo de lo que se puede hacer con un control richtext:

Código: Seleccionar todo

#include <GUIConstantsEx.au3>

#include <WindowsConstants.au3>

#include <EditConstants.au3>

#include <StaticConstants.au3>



Global $oMyError



Local $oRP, $GUIActiveX, $msg, $Texto[4],$TextoTotal=""



$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")



$oRP = ObjCreate("RICHTEXT.RichtextCtrl.1")



GUICreate("Embedded RICHTEXT control Test", 320, 200, -1, -1, BitOR($WS_OVERLAPPEDWINDOW, $WS_CLIPSIBLINGS, $WS_CLIPCHILDREN))

$BtGrabar = GUICtrlCreateButton('Grabar', 105, 177, 70, 20)

$BtCargar = GUICtrlCreateButton('Cargar', 175, 177, 70, 20)



$GUIActiveX = GUICtrlCreateObj($oRP, 10, 10, 400, 260)

GUICtrlSetPos($GUIActiveX, 10, 10, 300, 160)

$Texto[0]='Hola, esto es texto normal.' & @CRLF

$Texto[1]='Aquí tienes texto rojo y de un tamaño 18' & @CRLF

$Texto[2]='Este texto es de color raro ;), tamaño 12 y subrayado.' & @CRLF

$Texto[3]='**** FIN DE EL REPORTE ****' & @CRLF

For $n=0 to 3

    $TextoTotal=$TextoTotal & $Texto[$n]

Next

With $oRP; Object tag pool

    .BackColor = 0xaf10

    .Font = 'Arial'

    .text =  $TextoTotal

    $posIni=StringLen($Texto[0])

    $posFin=StringLen($Texto[1])

    .selstart=$posIni

    .selLength=$posFin

    .SelColor=0x0000ff

    .SelFontSize = 18

    $posIni=$posIni+$posFin

    $posFin=StringLen($Texto[2])

    .selstart=$posIni

    .selLength=$posFin

    .SelUnderline = True

    .SelColor=0xc0a0d0

    .SelFontSize = 12

    $posIni=$posIni+$posFin

    $posFin=StringLen($Texto[3])

    .selstart=$posIni

    .selLength=$posFin

    .SelBold = True

    .SelColor=0xff0000

    .SelFontSize = 16

EndWith



GUISetState();Show GUI



While 1

    $msg = GUIGetMsg()

    

    Select

        Case $msg = $GUI_EVENT_CLOSE

            ExitLoop

        Case $msg = $BtCargar

            $file=@ScriptDir & '\RichText.rtf'

            If FileExists($file) Then

                $oRP.FileName = $file

            Else

                MsgBox(0,"Error","No se encuentra el archivo")

            EndIf

        Case $msg = $BtGrabar

            $oRP.SaveFile(@ScriptDir & "\RichText.rtf", 0)

    EndSelect

WEnd

GUIDelete()



Func MyErrFunc()



    MsgBox(0, "AutoItCOM Test", "We intercepted a COM Error !" & @CRLF & @CRLF & _

            "err.description is: " & @TAB & $oMyError.description & @CRLF & _

            "err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _

            "err.number is: " & @TAB & Hex($oMyError.number, 8) & @CRLF & _

            "err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _

            "err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _

            "err.source is: " & @TAB & $oMyError.source & @CRLF & _

            "err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _

            "err.helpcontext is: " & @TAB & $oMyError.helpcontext _

            , 5)

    ; Will automatically continue after 5 seconds

    

    Local $err = $oMyError.number

    If $err = 0 Then $err = -1

    

    SetError($err)  ; to check for after this function returns

EndFunc   ;==>MyErrFunc

 

Con las propiedades que empiezan por Sel..... es un poco engorroso, pero se puede hacer.
Hace años, me interesé por editar las etiquetas del código que genera un documento rtf (archivo de texto enriquecido). Cambiando y añadiendo estas etiquetas también puedes variar el texto. Puedes investigar su protocolo.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Ricardo
Mensajes: 14
Registrado: 31 Mar 2009, 21:07

Re: GUICtrlCreateEdit

Mensaje por Ricardo »

UFFFF!! :smt038 Me han sacado de otro Enrredo !!!!!

Muchas gracias por su Colaboracion, de verdad que sin la ayuda de este foro estaria pegado en mi trabajo, Muchas gracias de nuevo !!!! :smt023

Gracias por esa Colaboracion desinterezada !!! :smt039
Responder