problema con herencia de TTreeView

30 views
Skip to first unread message

Javier Morales

unread,
Jul 4, 2026, 11:19:52 PM (2 days ago) Jul 4
to cp...@googlegroups.com
Hola a todos

Estoy comenzando con c++ builder y tengo un problema que no puedo resolver

Uso c++ builder 13.1 con FireMonkey (FMX) y estoy creando un componente
heredando de un TTreeView para poder crear unos métodos pero tengo error
al arrastrar el componente a un formulario.

Mi código es:

el archivo tmytreeview.h

----------------------------------

//---------------------------------------------------------------------------

#ifndef tmytreeviewH
#define tmytreeviewH
//---------------------------------------------------------------------------
#include <System.SysUtils.hpp>
#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Layouts.hpp>
#include <FMX.TreeView.hpp>
#include <FMX.Types.hpp>
//---------------------------------------------------------------------------
class PACKAGE TMyTreeView : public TTreeView
{
private:
protected:
public:
    __fastcall TMyTreeView(TComponent* Owner);
__published:
};
//---------------------------------------------------------------------------
#endif



el archivo tmytreeview.cpp

------------------------------------------------------------------------------

//---------------------------------------------------------------------------

#include <fmx.h>

#pragma hdrstop

#include "tmytreeview.h"
#pragma package(smart_init)
//---------------------------------------------------------------------------
// ValidCtrCheck is used to assure that the components created do not have
// any pure virtual functions.
//

static inline void ValidCtrCheck(TMyTreeView *)
{
    new TMyTreeView(NULL);
}
//---------------------------------------------------------------------------
__fastcall TMyTreeView::TMyTreeView(TComponent* Owner)
    : TTreeView(Owner)
{
}
//---------------------------------------------------------------------------
namespace Tmytreeview
{
    void __fastcall PACKAGE Register()
    {
        TComponentClass classes[1] = {__classid(TMyTreeView)};
        RegisterComponents(L"otroscomponentes", classes, 0);
    }
}
//---------------------------------------------------------------------------


una vez que realizo MAKE, posteriormente realizo un INSTALL y una vez
instalado el componente, aparece en la paleta de componentes, pero al
arrastrar el componente tmytreeview a un form me da el error:

[00007FFB5E99B5C3]{exceptiondiag370.bpl} Jcldebug.TJclStackInfoList + $153
[00007FFB5E99AE88]{exceptiondiag370.bpl} Jcldebug.JclCreateStackList + $48
[00007FFB5E99AC16]{exceptiondiag370.bpl} Jcldebug.Unknown function at
JclValidateModuleAddress + $186
[00007FFB5E99D8CF]{exceptiondiag370.bpl} Jcldebug.Unknown function at
AddModule + $AF
[00007FFB5E982425]{exceptiondiag370.bpl} Unknown function at
_ZTRN13Jclhookexcept15TJclModuleArrayE + $B15
[00007FFB5E98266C]{exceptiondiag370.bpl} Unknown function at
_ZTRN13Jclhookexcept15TJclModuleArrayE + $D5C
[00007FFB5E9827D5]{exceptiondiag370.bpl} Unknown function at
_ZTRN13Jclhookexcept15TJclModuleArrayE + $EC5
[00007FFB7692A89D]{rtl370.bpl  } System.@InternalRaiseAtExcept + $12D
[00007FFB7692A92B]{rtl370.bpl  } System.@RaiseAgain + $3B
[00007FFB5B6EDD2C]{fmx370.bpl  } FMX.TreeView.TCustomTreeView.Create + $1DC
(0000000000002139){misotroscomponentes.bpl} [00007FFB2D683139]
[00007FFB73FA0B55]{delphicoreide370.bpl}
Comppalmgr.TComponentPalettePageItemDelegate.CreateComponent + $25
[00007FFB78D0AE3C]{designide370.bpl}
Componentdesigner.TComponentRoot.DoCreateComponent + $31C
[00007FFB78D1C82A]{designide370.bpl}
Componentdesigner.TComponentRoot.CreateComponentPos + $2CA
[00007FFB59105B82]{fmxdesigner370.bpl} Fmxsurface.Unknown function at
GetFmxDesignSurface + $1CB2
[00007FFB59104BD0]{fmxdesigner370.bpl} Fmxsurface.Unknown function at
GetFmxDesignSurface + $D00
[00007FFBD8DC36A8]{ole32.dll   } Unknown function at
DllGetClassObjectWOW + $4298
[00007FFBD8DB0211]{ole32.dll   } Unknown function at DoDragDrop + $F51
[00007FFBD8DDFC26]{ole32.dll   } Unknown function at OleLoadFromStream +
$1866
[00007FFBD8DDF956]{ole32.dll   } Unknown function at OleLoadFromStream +
$1596
[00007FFBD8DAF3E7]{ole32.dll   } DoDragDrop + $127
[00007FFB5DB11048]{coreide370.bpl} Toolfrm.TToolForm.BeginOleDrag + $498
[00007FFB5DB10B6C]{coreide370.bpl} Toolfrm.TToolForm.BeginOleDrag + $4C
[00007FFB5DB1143F]{coreide370.bpl} Toolfrm.TToolForm.PaletteBeginDrag + $7F
[00007FFB765F8E77]{vclide370.bpl}
Idecategorybuttons.TIDECategoryButtons.DoBeginDrag + $37
[00007FFB79286CD0]{vcl370.bpl  }
Vcl.CategoryButtons.TCategoryButtons.MouseMove + $110
[00007FFB78FDF676]{vcl370.bpl  } Vcl.Controls.TControl.WMMouseMove + $C6
[00007FFB769289D4]{rtl370.bpl  } System.TObject.Dispatch + $44
[00007FFB78FDE9CD]{vcl370.bpl  } Vcl.Controls.TControl.WndProc + $38D
[00007FFB78FE6710]{vcl370.bpl  } Vcl.Controls.TWinControl.WndProc + $9D0
[00007FFB79288FB8]{vcl370.bpl  }
Vcl.CategoryButtons.TCategoryButtons.WndProc + $168
[00007FFB79175597]{vcl370.bpl  } Vcl.Themes.TStyleHook.CallDefaultProc + $37
[00007FFB791E78A7]{vcl370.bpl  }
Vcl.Forms.TScrollingStyleHook.WMMouseMove + $597
[00007FFB769289D4]{rtl370.bpl  } System.TObject.Dispatch + $44
[00007FFB791766F7]{vcl370.bpl  } Vcl.Themes.TStyleHook.WndProc + $1B7
[00007FFB79176A47]{vcl370.bpl  }
Vcl.Themes.TMouseTrackControlStyleHook.WndProc + $17
[00007FFB791E7B99]{vcl370.bpl  } Vcl.Forms.TScrollingStyleHook.WndProc + $9
[00007FFB79175868]{vcl370.bpl  } Vcl.Themes.TStyleHook.HandleMessage + $88
[00007FFB7933212C]{vcl370.bpl  } Vcl.Styles.TStyleEngine.HandleMessage + $BC
[00007FFB7917095D]{vcl370.bpl  } Vcl.Themes.TStyleManager.HandleMessage
+ $7D
[00007FFB78FE38D9]{vcl370.bpl  }
Vcl.Controls.TWinControl.DoHandleStyleMessage + $29
[00007FFB78FE5E60]{vcl370.bpl  } Vcl.Controls.TWinControl.WndProc + $120
[00007FFB79288FB8]{vcl370.bpl  }
Vcl.CategoryButtons.TCategoryButtons.WndProc + $168
[00007FFB78FE57DC]{vcl370.bpl  } Vcl.Controls.TWinControl.MainWndProc + $2C
[00007FFB76AD4C86]{rtl370.bpl  } System.Classes.StdWndProc + $26
[00007FFBDA30C396]{user32.dll  } Unknown function at CallWindowProcW + $6A6
[00007FFBDA30BE5C]{user32.dll  } CallWindowProcW + $16C
[00007FFB5DB0D98A]{coreide370.bpl} Toolfrm.TToolForm.PaletteHook + $BA
[00007FFB76AD4C86]{rtl370.bpl  } System.Classes.StdWndProc + $26
[00007FFBDA30C396]{user32.dll  } Unknown function at CallWindowProcW + $6A6
[00007FFBDA30A7ED]{user32.dll  } Unknown function at IsWindowUnicode + $3CD
[00007FFB791DF065]{vcl370.bpl  } Vcl.Forms.TApplication.ProcessMessage +
$135
[00007FFB791DF0D8]{vcl370.bpl  } Vcl.Forms.TApplication.HandleMessage + $18
[00007FFB791DF51F]{vcl370.bpl  } Vcl.Forms.TApplication.Run + $EF
[00007FF79E619AF0]{bds.exe     } Unknown function at __dbk_fcall_wrapper
+ $177C50
[00007FFBD996E957]{KERNEL32.DLL} BaseThreadInitThunk + $17
[00007FFBDA707C1C]{ntdll.dll   } RtlUserThreadStart + $2C

No sé lo que realente puede ser, espero que me puedan ayudar.

Uso c++ builder 13.1 con FIreMonkey (FMX)

agradecido

Javier Morales

jmorale...@gmail.com


Rafael Ontivero

unread,
Jul 5, 2026, 3:33:46 AM (2 days ago) Jul 5
to cp...@googlegroups.com
Hola.

C++ Builder está muerto y enterrado, y más FireMonkey. Lo sé porque trabajé a lado de los elementos (bastante impresentables la mayoría a causa de sus egos) en Elche (España) que hacían parte de todo eso. Y si encima eso hubiera funcionado bien alguna vez. Y no te acerques a ellos a comentarles un problema que has detectado. Putos elitistas.

El problema está aquí:

> [00007FFB5E99AC16]{exceptiondiag370.bpl} Jcldebug.Unknown function at JclValidateModuleAddress + $186

Está intentando saltar a una llamada en esa dirección relativa que no existe al intentar registrar el componente en tu proyecto. A mi me da que es uno de esos bugs que jamás arreglaron.

Intenta hacer un build all, y mejor si cierras el IDE y borras a mano todos los temporales, obj o como se llamen ahora mismo.

Aparte, esas cosas empezando con J… me da que todo eso está hecho en Java. Cuando yo curraba en la división de bases de datos, en el cuarto de al lado, era Delphi. Es decir el FireMonkey estaba escrito con Delphi, con el compilador de C++ pasando a “modo Delphi” cuando tocaba alguna llamada de la librería.

Hace años que no miro nada de ellos. Ahora es Idera, no Embarcadero, y la multiplataforma se les quedó obsoleta cuando tanto iOS, macOS como Android dejaron de permitir la instalación de aplicaciones de 32 bits, con lo que comprar Delphi/C++ Builder era o para instalar aplicaciones en versiones antiguas o para usar en Windows.

Si solo es para Windows, usa la VCL, que tampoco es que esté libre de problemas, que los tiene, y muchos, pero al menos es más madura y más estable.
> --
> --
> ¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error. En caso de duda visita "http://groups.google.com/group/cppba"
> --- Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
> Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.
> Para ver este debate, visita https://groups.google.com/d/msgid/cppba/8bebda73-9886-48fc-867a-b327a21dd8eb%40gmail.com.

Miguel Carboni

unread,
Jul 5, 2026, 11:47:13 AM (2 days ago) Jul 5
to cp...@googlegroups.com
Buenas! Muy interesante la genealogia del c++ builder. Yo apeendi con el tp y el tc jaja 

Si tenes acceso a claude portarlo a wxWidgets o alguna otra libreria más moderna es un lindo pet project!  

Rafael Ontivero

unread,
Jul 5, 2026, 12:28:58 PM (2 days ago) Jul 5
to cp...@googlegroups.com
Sí, cualquier cosa es mejor que el C++ Builder de los huevos. Hace años le eché un ojo al wxWidgets y tenía buena pinta, pese a ser muy MFC. 

Y si el OP quiere algo igual de sencillo que el C++ Builder pero moderno, pues C# y el .NET Core, y Avalonia para la interfaz gráfica, todo multiplataforma y gratis para uso personal. Tampoco lo he probado mucho, pero si va igual que el XAML y el .NET Framework 4.7.2, es de lo más estable que hay hoy en día.

Yo empecé con el TC2 y siguientes, luego me pasé al Borland C++ hasta la última versión, la 5.2 si no me falla la memoria. TurboVision y OWL a full. Y la no llamada a los destructores, que nunca arreglaron. Y dependiendo del orden de cómo declarabas las variables, se pisaban unas a otras, cosa que tampoco arreglaron.

Y luego al C++ Builder hasta la 6, con la VCL echando fuego. Y al final me cansé de todas esas mierdas a medio hacer.

Y mira por donde, años después entré a currar en las oficinas de Elche en Embarcadero, en la división de bases de datos, justo al lado de los “genios” del compilador. Y al poco los compró Idera y nos echaron a la calle a todos. 



Javier Morales

unread,
Jul 6, 2026, 3:07:03 PM (15 hours ago) Jul 6
to cp...@googlegroups.com, Rafael Ontivero

Hola

No me agrada la programación de c#, considero que no es perfecta, es más hermoso un puntero con *, considero que el c++ de borland es más limpio y hermoso que el de microsoft, siempre ha sido la línea a marcar por parte de borland, ellos enseñaron el verdadero c++, lo único que no me agrada para nada son los templates del c++ de embarcadero, esos nunca los he usado.

Borland era superior a microsoft en c++

nunca he programado en C#, .NET y otros.

Que hermosa experiencia trabajar para Embarcadero, lamento no haber estado allí

Lo que he pillado a medio hacer lo he programado.

¿Y hoy en que esta programando?

Javier Morales

unread,
Jul 6, 2026, 3:07:06 PM (15 hours ago) Jul 6
to cp...@googlegroups.com, Miguel Carboni

Si yo también utilicé el TC, sómos de la vieja escuela

Ví en su momento wxWidgets, pero cuando muestras al cliente tu herramienta de programación, porque te preguntan y te piden verla, wxWidgets no es conocida, se critica que no tiene esto y lo otro.

Confío en el c++ builder, lo siento más para mí, que fué hecho para mí, a veces no nos agrada alguien y otros sí. :-D

Voy a ver en que anda wxWidgets por estos días.

Muchas gracias

Javier Morales

unread,
Jul 6, 2026, 3:07:11 PM (15 hours ago) Jul 6
to cp...@googlegroups.com, Rafael Ontivero
Hola

Muchas gracias por tu información, por lo menos en VCL yop no he tenido
problemas porque siempre lo que ha faltado lo he programado.

El nombre Borland nunca debió perderse, he alli un error. Lo del error
debe ser la solución muy fácil, pero no la se, borland con la vcl
facilitaba mucho, pero con firemonkey embarcadero dijo, he aquí pero los
detalles que los programe el programador, por eso uno ve FireMonkey como
falto de muchas cosas, yo he heredado de todos los componentes y no
tengo problema con ello, algunas cosas que estaban débiles como el
scroll en un tstringgrid  hoy en FireMonkey están, pero hay que ser
experto para estar con FireMonkey, hay que implementar muchas cosas,
sobre todo en el ttreeview (un árbol entre comillas) donde no tengo
Count general.

Pienso en aquellas personas que FireMonkey se les hizo difícil, no
pudieron, se quedaron en VCL, a mi no me agrada usar componentes de
terceros, nunca he usado TMS, DevExpress y otros.

El $$ siempre convierte a las personas. Pero la valía de las personas y
su conocimiento tiene que valer $$.

No creo que esté muerto y menos aún enterrado, simplemente no ha
avanzado como debió.

Ellos aprendieron a no perder el tiempo.  Por eso lo de alitistas.

me voy a meter ahora a resolverlo, simplemente me dió el error y lo
consulté.

Confío que embarcadero cambiará para bien, y será la mejor herramienta
de creación de software, porqué, porque al mirar el Rad Studio veo una
herramienta Pro (de ejecutivos, elitistas,jajaja) y no vulgar del
pueblo, comparo con Visual Studio y Rad Studio es lejos mejor. Es más
hermoso. Selecto para los elitistas como yo... jajjajajaja

Daniel Gutson

unread,
Jul 6, 2026, 7:42:09 PM (10 hours ago) Jul 6
to cppba, Rafael Ontivero
Más que WxWidgets propongo Qt, es una solución mucho más <pun intended>Embarcadora</pun intended>.
La comunidad de desarrollo detrás de Qt debe ser fácil 20x la de wxWidgets, empezando a hablar por KDE.
Uno de los miembros del comité trabajaba en 
la empresa detrás de Qt.

También usé en su momento turbo pascal, luego borland c++, etc, norton guides para el assembly, toda la misma época.
Y también pasé por Visual C++ que me dio de comer unos años. En esa época yo no podía elegir, iba a donde estaba la comida. Cuando pude empezar a elegir, me fui para g++ sobre linux...
Por eso es interesante que Qt es multiplataforma y tiene montones de widgets.


Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?



Reply all
Reply to author
Forward
0 new messages