• Jueves 28 de Marzo de 2024, 23:04

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - TRod

Páginas: [1] 2 3 ... 5
1
C++ Builder / Re:Borland c++
« en: Sábado 21 de Septiembre de 2013, 04:45 »
<graphics.h> quedó totalmente descontinuada hace años. Estaba orientada directamente con las librerias gráficas 'BGI' exclusivas de Borland para ambiente DOS. Y lo rediseño con <graphics.hpp> para el entonces nuevo Windows 95, pero no tiene nada que ver con la antigua versión.

Supuestamente hay un método para el compilador que indicas, pero nunca lo probé e ignoro si funciona:
http://www.programacionenc.net/index.php?option=com_content&view=article&id=126:solucion-al-error-bgi-graphics-not-supported-under-windows&catid=31:general&Itemid=41

Dudo que funcione porque los nuevos Windows y el nuevo Hardware provocan que la BGI practicamente no sirva para nada... pero Suerte...

2
C++ Builder / Re:Generar DBEdit en tiempo de ejecución
« en: Martes 9 de Agosto de 2011, 05:12 »
Para acceder a los DBEdit creados dinámicamente, irremediablemente tendras que hacer uso del método "FindComponent()"

TDBEdit *UnEditDinamico;
UnEditDinamico = (TDBEdit*)FindComponent("NombreMiControl");


Donde "NombreMiControl" es el nombre del componente al que deseas acceder a su contenido.

Te espera un poco de trabajo sucio. :lightsabre:

 :suerte:

3
C++ Builder / Re:Generar DBEdit en tiempo de ejecución
« en: Martes 9 de Agosto de 2011, 03:58 »
Así es. Por eso te mencione antes que hay que tener cuidado al definir los nombres (Name) de cada control creado.
 :think:
Creo que hay más trasfondo en este tema.

Puedes "jugar" un poco con la propiedad Name.

AnsiString NombreCualquiera = "MiControl";
Control->Name = NombreCualquiera;

Ahora bien, la solución más común en estos casos es utilizar una variable global que funcione como contador de controles:

int contador=0;
... <resto de tu codigo>
...
AnsiString NombreCualquiera = "MiControl";
Control->Name = NombreCualquiera + IntToStr(contador);
contador++;
.... <resto de tu codigo>

Eso va a provocar que el nombre del control sea distinto cada vez que mandes a llamar el evento.

Bien. Ahora surge el problema de las coordenadas en pantalla para posicionar cada control creado.
Ese trabajo sucio te lo dejo a ti. :kicking: ya que eso depende mucho del tipo de interfaz que estas diseñando en tu programa.
Y no olvides encerrar las intrucciones con la sentencia "try/catch". Los métodos de excepciones no son de broma. Funcionan muy bien a la hora de las metidas de pata de programador/usuario.

... y hasta ahí todo bien... pero ahora te toparas con el problema de como acceder a cada control que creaste.
Esperame. La solución te la posteo en unos momentos. Estoy un poco oxidado en programación :losiento: jejeje

4
C++ Builder / Re:Generar DBEdit en tiempo de ejecución
« en: Viernes 5 de Agosto de 2011, 21:56 »
 :yes: Disculpa. Omiti un detalle.
Debemos recordar que no todos los componentes VCL se encuentran definidos en vcl.h.
Incluye la cabecera:
#include <DBCtrls.hpp>
 :ball:

5
Es el clásico problema de Builder C++.
Si buscas un poco en Google hallaras la respuesta rapidamente. Inclusive en este foro.
Vas al menú de opciones de proyecto y desactivas las librerias de tiempo en Ejecución (RTL) y también la "construcción" de los paquetes en tiempo de ejecución (Build with runtime packages).
Más detalles: google.

6
C++ Builder / Re:Generar DBEdit en tiempo de ejecución
« en: Miércoles 3 de Agosto de 2011, 04:17 »
Relativamente fácil.
Código: [Seleccionar]
TDBEdit *EditDinamico;
 EditDinamico = new TDBEdit(this);
 try{
  EditDinamico->Name="MiEdit1"; //Importante
  EditDinamico->Parent = this; //MUY IMPORTANTE
  EditDinamico->Left = 20; //Si no especificas posición... entonces dónde lo veo?
  EditDinamico->Top = 150;
 }
 catch(...){
  EditDinamico = NULL;
 }

Y pon atención a los nombres que le asignes a cada control. Podria ocurrir una tragedia con la memoria :scream:

:suerte:

7
C++ Builder / Re:Alinear el texto en un Edit
« en: Miércoles 3 de Agosto de 2011, 04:09 »
Modifica la propiedad "Alignment" en "taRightJustify".

Si no lo hace en ese momento, quiere decir que la configuración del Windows no tiene disponible la compatibilidad con caracteres orientales y arabes.
Deberas de ir al panel de control al cuadro de "Configuracion Regional y de Idioma" y hacer los pertinentes cambios.
Disculpa por contestar tarde. No me habia asomado por aquí en un buen rato, y apenas estoy asimilando los nuevos cambios en este Foro :hippi:

:suerte:

8
C++ Builder / Re: Como hago portable una aplicación con BaseDatos Paradox
« en: Jueves 27 de Enero de 2011, 22:43 »
No sé si este link sirva de algo:
http://forums.fivetechsupport.com/viewtopic.php?t=7064
(¿un foro parecido a solocodigo? :ph34r:   ^_^  )

Suerte.

9
C++ Builder / Re: Como hago portable una aplicación con BaseDatos Paradox
« en: Jueves 27 de Enero de 2011, 04:53 »
Antes que nada, disculpa que no te de una respuesta eficiente :ouch:
Tengo entendido que por el tipo de conectividad que pretendes hacer, debes de instalar el BDE en la PC por trabajar. Seguro alguien por este Foro ya conoce o se ha topado con ese problema.
Creo que el archivo ejecutable que necesitas se encuentra disponible en el CD de instalación del Builder.

Lamento no apoyarte más, puesto que la única experiencia que tengo es con ADO y IBX (y ni siquiera paradox), y nuca conocí la forma en que se instalaba la BDE.
Espero que me halla acercado un poco a la solución a tu problema.   :mellow:
Saludos y suerte.

10
C++ Builder / Re: de AnsiString a char[]
« en: Miércoles 12 de Enero de 2011, 03:18 »
Para obtener un char*
AnsiString
Método: c_str()

O bien:
UnicodeString (AnsiString está entrando en desuso a partir de Rad Studio 2010)
Método: t_str()

11
C++ Builder / Re: no guardar registro hasta que se llenen todos los campos
« en: Martes 28 de Septiembre de 2010, 03:44 »
Replantea y/o revisa el diseño de tu Base de Datos. (Restricciones de Integridad)
Puede ser que sea inutil que un campo sea estrictamente "no nulo" y darle todo el peso de la responsabilidad al usuario el llenarlo.

Administra el evento 'OnPostError' y haz que se ejecuten las intrucciones necesarias para solventar el problema. Por ejemplo, dar un valor por default a la columna en cuestion, o marcar el aviso y poner el parametro 'tdataaction' en el estado más conveniente que creas.

Suerte.

PD: ¿ estás usando TEdit o TDBEdit ?

12
C++ Builder / Re: Cargar una imagen JPG de una base de datos a un TImage
« en: Martes 30 de Marzo de 2010, 05:25 »
El componente TDatasource al que estan asociados tu rejilla de datos y el 'Query',  contiene un evento llamado OnDataChange, el cual ocurrira cada vez que cambie el contenido de tu 'Query', inclusive, cuando avanze el 'puntero' o 'cursor' del registro actual. Puedes aprovecharlo para "refrescar" la imagen con el contenido de tablaCAMPO_IMAGEN-> ... etc. etc. como en el código ejemplo anterior.

Saludos y que tengas un buen día  :comp:
:hola:

13
C++ Builder / Re: Cargar una imagen JPG de una base de datos a un TImage
« en: Miércoles 24 de Marzo de 2010, 06:30 »
Lo siento. No era tan sencillo como pense. :brickwall:
Necesitas usar "streams".
En la parte de tu proyecto que creas que es pertinente, te puede ayudar este código:
Código: Text
  1.  
  2.  //Crear un Stream:
  3.  std::auto_ptr<TMemoryStream> stream (new TMemoryStream);
  4.  
  5.  tablaCAMPO_IMAGEN->SaveToStream(stream.get());  //Copiarle la imagen que esta en el campo activo
  6.  
  7. //tablaCAMPO_IMAGEN es un 'TField' o más bien un 'TBlobField' que se crea automáticamente cuando configuras el editor de campos (Field Editor)
  8.  
  9.  //  Creas una variable de tipo "jpg" (en este ejemplo la llamamos 'jpeg')
  10.  //  y posteriormente le asignas el "stream"
  11.  stream->Position   =   0;
  12.  std::auto_ptr<TJPEGImage>  jpeg(new   TJPEGImage);
  13.  jpeg->LoadFromStream(stream.get());
  14.  
  15.  //  'Image1' captura la imagen del 'jpeg'
  16.  Image1->Picture->Bitmap->Assign( jpeg.get() );
  17.  
  18.  
Quizá se complique un poco si en la BD tienes revueltas imagenes BMP y JPG, pero creo que la sentencia 'try' lo puede solucionar.

Mi Fuente es:
http://topic.csdn.net/t/20030523/12/1823767.html

Y muchas gracias por aclararme algunas dudas que tenía con este tema :rolleyes: :beer:

Saludos y suerte con tu proyecto. :good:

14
C++ Builder / Re: !!null
« en: Lunes 22 de Marzo de 2010, 23:23 »
¿ Ya Probaste la propiedad 'IsNull' ?

15
C++ Builder / Re: Cargar una imagen JPG de una base de datos a un TImage
« en: Lunes 22 de Marzo de 2010, 23:21 »
El tema fue comentado hace un tiempo:
http://www.solocodigo.com/foros/viewtop ... 16&t=32584

Puede funcionar con esto:
Código: Text
  1.  
  2.  #include <jpeg.hpp> //Libreria para lo que ya imaginas
  3. ...
  4.  TJPEGImage *J = new TJPEGImage;
  5.  J->LoadFromFile( <imagen IBQuery >  ); //¿?
  6.  Image1->Picture->Assign(J);
  7.  
  8.  

Revisa el link, de todas maneras.
¿Porqué no usas el componente 'TDBImage' y te quitas de problemas? o quiza no te estoy entendiendo bien :rolleyes:
Pero el caso es que <jpeg.hpp> puede resolver tu problema.
Suerte.

16
C++ Builder / Re: seleccion multiple
« en: Miércoles 23 de Diciembre de 2009, 03:59 »
Los objetos TStrings tienen una propiedad llamada Strings. En ella se 'enlistan' todas las cadenas contenidas. Ejemplo:
OpenDialog1->Files->Strings[0]    //1er. elemento
OpenDialog1->Files->Strings[1]    //2do elemento
OpenDialog1->Files->Strings[2]    //3er elemento
...
El número de elementos contenidos esta definido por la propiedad 'Count'.
Código: Text
  1.  
  2. i = 0;
  3. while(i < OpenDialog1->Files->Count){
  4.  OpenDialog1->Files->Strings[i];  //¿Qué quieres hacerle?  Lo que quieras
  5.  i++;
  6. }
  7.  
  8.  

Si eres nuevo en Builder, sugiero que estudies los tipos AnsiString y TStrings (NO SON estandar de C++) porque los tendras que manejar muchísimo en componentes... no es dificil... pero es necesario que los repases y te familiarices con ellos.
Suerte :hola:

17
C++ Builder / Re: seleccion multiple
« en: Martes 22 de Diciembre de 2009, 04:13 »
La propiedad Files es de tipo TStrings*... y... listo  :rolleyes:

18
C++ Builder / Re: Manejo GamePad
« en: Martes 20 de Octubre de 2009, 04:23 »
No esperaste mucho. Acabas de ayudar a un despistado.  :hola:
Muchísimas gracias por tu aporte. No sabes el lio que me acabas de resolver. :beer:
Solo una duda... ¿algún link?
Saludos y mucha suerte con el proyecto. :good:

PD: para builder 2007 es <mmsystem.hpp>. Con el otro archivo (mmsystem.h) marca error. No se porqué.

19
C++ Builder / Re: Es posible Elevar al cuadrado y raiz cuadrada en builder????
« en: Martes 13 de Octubre de 2009, 04:46 »
La solución no es propiamente de Builder. Simplemente es  C++ estandar:  <math.h>
Concretamente investiga funciones 'pow' y 'sqrt'.
Suerte.

20
C++ Builder / Re: Seleccionar celda de un StringGrid
« en: Miércoles 30 de Septiembre de 2009, 19:40 »
1.- Fácil: Propiedades Col y Row.
2.-Que yo sepa,el metodo Clear() no existe en StringGrid. Creo que debes recorrer la matriz 'Cells' para alterar todo el contenido.

21
C++ Builder / Re: Asignando color a un Label
« en: Miércoles 30 de Septiembre de 2009, 19:38 »
¿ (TColor) "0000FF"; ?   whops!, esa no me la sabia. :mellow:
Creo que da mejores resultados con valores en hexadecimal:
= 0x0000ff;    (Sin doble comilla)

22
C++ Builder / Re: problema de lista
« en: Miércoles 30 de Septiembre de 2009, 19:38 »
No entiendo del todo bien tu problema.
Te doy una sugerencia, aver si te convence:
1.-Tomas un ListBox y le agregas los Items necesarios.
2.-Propiedad Style se pone en 'lbOwnerDrawFixed' (o similar)
3.-En el evento [OnDrawItem] generas los dibujos que quieres con el ListBox->Canvas.
Resultado:
Un listbox donde cada Item visualiza la imagen correspondiente.
A ver si es mas o menos lo que buscas. Es que en si, no entiendo que clase de interfaz pretendes.
Suerte.

23
C++ Builder / Re: Manual de borland c++ builder
« en: Martes 8 de Septiembre de 2009, 23:22 »
Como dijo lair, es el componente TReplaceDialog.
Aqui hay un ejemplo para Builder y Delphi:
http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Dialogs_TReplaceDialog_OnReplace.html

24
C++ Builder / Re: interbase
« en: Sábado 25 de Julio de 2009, 23:59 »
Disculpas a los dos, no se que habra pasado en aquel sitio.
Aqui hay otro link solo para que lo tomen en cuenta, se trata de http://www.firebirdsql.org
Link directo:
http://www.firebirdsql.org/index.php?op=files&id=engine_212
Recomiendo el archivo:
Firebird-2.1.2.18118_0_Win32.exe
Windows executable installer for full Classic or Superserver, recommended for first-time users

No me habia dado cuenta que ya salio la version 2.1.2 :huh:
Saludos y que les vaya bien en sus proyectos. :hola:

25
C++ Builder / Re: interbase
« en: Sábado 25 de Julio de 2009, 04:40 »
Disculpa que conteste tardiamente, tengo asuntos de trabajo que me han tenido ocupao. :brickwall:
¿Checaste el tema Anterior de "intrbase"? Ahi postee un breve ejemplo para empezar con FIB. Aunado con que el compañero cocacolo nos proporciona el metodo de creacion. El mismo dio con la solucion. Ves? Solo es cuestion de que te involucres con FIB, y lo demas lo obtendras a base de trabajo.
Confia en este gestor, conforme lo vayas conociendo, te va a agradar.
El unico inconveniente de Firebird es que por su naturaleza "free", carece de herramientas robustas para su administracion (como ISQL tool, un poco "engorroso" de manejar).  Existen varios administradores de Firebird gratuitos que apoyan en la gestion de BD y de usuarios... pero con ciertas limitaciones, hasta tal punto que yo mismo tuve que crear mi propio administrador personalizado para agilizarme un poco mas las cosas.  Quizas tendras que hacer un poco de trabajo sucio  :rolleyes: pero valdra la pena.
Saludos! :good:

Páginas: [1] 2 3 ... 5