Page 1 of 1

PROBLEMA CON TTxtEdit

Posted: Wed Feb 03, 2010 1:11 pm
by fusion
Saludos a todos,

Estoy evaluando la clase TTxtEdit en mi proyecto para edicion de archivos de texto, pero sale un error despues de escribir unas 5 lineas y mover el raton sobre la ventana de edicion, inclusive el error sale probando el ejemplo FIVEDIT.PRG. (Estoy trabajando con xHarbour 1.2.1 SimpLex (6406), Borland C++ 5.5.1, FWH 9.06)

Este es el ERROR.LOG de FIVEDIT.EXE (FIVEDIT.PRG que viene en la carpeta SAMPLES de FWH)

Application
===========
Path and name: E:\FWH\samples\fivedit.exe (32 bits)
Size: 1,936,896 bytes
Time from start: 0 hours 0 mins 15 secs
Error occurred at: 02/03/10, 07:54:05
Error description: Error BASE/1003 Variable does not exist: OEDIT
Args:

Stack Calls
===========
Called from: .\source\classes\TTxtEdit.PRG => TTXTEDIT:MOUSEMOVE(1843)
Called from: => TWINDOW:HANDLEEVENT(0)
Called from: .\source\classes\CONTROL.PRG => TTXTEDIT:HANDLEEVENT(1453)
Called from: .\source\classes\WINDOW.PRG => _FWH(3333)
Called from: => WINRUN(0)
Called from: .\source\classes\WINDOW.PRG => TMDIFRAME:ACTIVATE(952)
Called from: E:\FWH\samples\fivedit.prg => MAIN(94)

System
======
CPU type: Intel(R) Core(TM)2 Duo CPU E4600 @ 2.40GHz 2400 Mhz
Hardware memory: 1023 megs

Free System resources: 90 %
GDI resources: 90 %
User resources: 90 %

Compiler version: xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6406)
Windows version: 5.1, Build 2600 Service Pack 3

Windows total applications running: 65
1 ....

Variables in use
================
Procedure Type Value
==========================
TTXTEDIT:MOUSEMOVE
Param 1: N 41
Param 2: N 252
Param 3: N 0
Local 1: O Class: TTXTEDIT
Local 2: N 2
Local 3: U
Local 4: N 0
Local 5: N 0
Local 6: N 1
Local 7: L .F.
Local 8: U
Local 9: U
Local 10: U
Local 11: U
Local 12: U
TWINDOW:HANDLEEVENT
Param 1: N 512
Param 2: N 0
Param 3: N 2687228
TTXTEDIT:HANDLEEVENT
Param 1: N 512
Param 2: N 0
Param 3: N 2687228
Local 1: O Class: TTXTEDIT
Local 2: U
_FWH
Param 1: N 2687228
Param 2: N 512
Param 3: N 0
Param 4: N 2687228
Param 5: N 23
Local 1: O Class: TTXTEDIT
WINRUN
Param 1: N 264120
TMDIFRAME:ACTIVATE
Param 1: C "MAXIMIZED"
Param 2: U
Param 3: U
Param 4: U
Param 5: U
Param 6: B {|| ... }
Param 7: U
Param 8: U
Param 9: U
Param 10: U
Param 11: U
Param 12: U
Param 13: U
Param 14: U
Param 15: U
Param 16: U
Param 17: B {|| ... }
Param 18: B {|| ... }
Param 19: U
Local 1: O Class: TMDIFRAME
Local 2: U
Local 3: U
MAIN
Local 1: O Class: TBAR
Local 2: O Class: TBITMAP
Local 3: N 1

Linked RDDs
===========
DBF
DBFFPT
DBFBLOB
DBFNTX

DataBases in use
================

Classes in use:
===============
1 ERROR
2 HASHENTRY
3 HBCLASS
4 HBOBJECT
5 TWINDOW
6 TCONTROL
7 TBITMAP
8 TBRUSH
9 TMDIFRAME
10 TMENU
11 TMENUITEM
12 TMRU
13 TINI
14 TACCTABLE
15 TMDICLIENT
16 TFONT
17 TBAR
18 TRECT
19 TBTNBMP
20 TMSGBAR
21 TMSGITEM
22 TTIMER
23 TDIALOG
24 TMDICHILD
25 TICON
26 TTXTEDIT
27 TSCROLLBAR
28 TREG32

Memory Analysis
===============
181 Static variables

Dynamic memory consume:
Actual Value: 0 bytes
Highest Value: 0 bytes

Agradezco de antemano su colaboracion...

Re: PROBLEMA CON TTxtEdit

Posted: Mon Feb 08, 2010 10:34 am
by Biel EA6DD
Es un error de la clase, la variable oEdit no está definida.

Cuando se empezo a crear el entorno de desarrollo visual, se modificio esta clase, y apareció esta variable que no está definida en la clase, debe de estar definida como estática en otra parte del proyecto, pero al usar la clase aisladamente del proyecto VFW casca.

Tienes que modificar la clase, añadele esta linea al principio, despues de los #defines

Code: Select all

memvar oEdit

Re: PROBLEMA CON TTxtEdit

Posted: Mon Feb 08, 2010 10:50 am
by Antonio Linares
Jair,

La Clase TTxtEdit está ideada para editar código fuente, tipo programación.

Para una edición de texto mucho más completa (fonts, colores, negrita, subrayado, imágenes, exportación e importación a/desde RTF, etc.) es recomendable usar la Clase TRichEdit. Tienes ejemplos de uso en: FWH\samples\TestRTF.prg y TestRich.prg

Re: PROBLEMA CON TTxtEdit

Posted: Mon Feb 08, 2010 11:31 am
by Biel EA6DD
Como te comenta Antonio, para editor de textos te será más util tRichEdit, en cualquier caso si quieres usar tTxtEdit, la solucón que te puse antes, no es buena.
Lo mejor es que edites la clase y busques el metodo MouseMove, y comentes las lineas dondes se usa la variable oEdit.

Antonio, yo uso extensamente esta clase, para editar ficheros de exportacion ASCII planos, tipo consejo superio bancario, XML, etc.
Me permite definir las palabras a resaltar, ... , y hace que la edición sea mucho mas comoda (contador de linea columna).

Re: PROBLEMA CON TTxtEdit

Posted: Mon Feb 08, 2010 12:22 pm
by Antonio Linares
Biel,

Gracias por tu comentario, es bueno saber que la Clase TTxtEdit está siendo útil :-)

Re: PROBLEMA CON TTxtEdit

Posted: Mon Feb 08, 2010 3:25 pm
by fusion
Saludos a todos,

Les agradezco por los aportes realizados, y les comento que habia solucionado el caso con TMultiGet, ya que lo unico que necesito es que el usuario digite una linea, presione ENTER y se ejecute el codigo que ingreso... es algo similar al entorno de desarrollo del Visual Fox Pro o el prompt de comandos del viejo dbase.

Voy a probar las dos soluciones de Biel, ya que TTxtEdit se ajusta mas a lo que considero necesario para el proyecto, pero podrian darme mayor claridad acerca del proceso que debo seguir despues de editar una clase de FW.., Modifico la clase TTxtEdit, luego compilo con harbour, bcc32 y el .OBJ generado lo reemplazo con el que esta en ????.LIB de FW.. o tengo que generar todo FWH..? (Si me pueden dar un ejemplo seria mas claro)

Nuevamente agradezco por su colaboracion.

Re: PROBLEMA CON TTxtEdit

Posted: Mon Feb 08, 2010 11:11 pm
by Antonio Linares
Jair,

Puedes modificar el PRG que contiene la clase, y compilarlo y enlazarlo como un PRG más de tu aplicación.