|
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 - Vatoicc
26
« en: Viernes 18 de Agosto de 2006, 00:05 »
Segun lo que yo vi en clase de programacion, this es un puntero a la misma clase. void Form1::CualquierFuncion(TObject *Sender) //o cualquier otro parametro { TLabel * L; L = new TLabel(this); }
al poner this dentro de una funcion de la clase Form1 estas apuntando a Form1 void OtraClase::CualquierFuncion(TObject *Sender) //o cualquier otro parametro { TLabel * L; L = new TLabel(this); }
en esa funcion de OtraClase, estas apuntando a OtraClase. Y sobre el codigo que puso TRod Brevemente, es algo asi: TLabel * L; L = new TLabel(this); L->Name = "MiEtiqueta"; L->Caption = "Hola, como estas?"; L->Parent = Label1->Parent; //Label1 ya existe.
no es necesario tener declara Label1, pues puedes usar como Parent a Form1 L->Parent = Form1; //o L->Parent = this;
27
« en: Jueves 17 de Agosto de 2006, 04:46 »
Si estas programando en C++ builder, creo que seria mas facil usar un objeto TStringList TStringList *Archivo = new TStringList(); //Puedes ir añadiendo linea a linea la informacion en el archivo Archivo->Append( "primera linea" ); Archivo->Append( "segunda linea" ); Archivo->Append( "tercera linea" ); //Guardar le archivo Archivo->SaveToFile( "c:\\Carpeta\\Prueba.txt" ); //Para abrir el archivo Archivo->LoadFromFile( "c:\\Carpeta\\Prueba.txt" ); //Para leer todo el archivo Archivo->Text; //te lo da como AnsiString todo el contenido del archivo //Para leer linea a linea Archivo->Strings[0]; //Primera linea Archivo->Strings[1]; //Segunda llinea Archivo->Strings[2]; //Tercera linea //Liberar memoris delete Archivo;
No se si sea la sintaxis correcta, por que no lo probe  pero ese seria el codigo mas o menos
28
« en: Viernes 28 de Julio de 2006, 04:28 »
Muy buen codigo  , funciono muy bien. Ya lo implemente en mi aplicacion. Gracias
29
« en: Viernes 21 de Julio de 2006, 21:05 »
Parece que no hay error en el codigo, pero una vez me paso lo mismo, todo parecia estar bien codificado, y en la ejecucion aparecia un error con los numero flotantes, no recuerdo bien el mensaje de error. Pero el problema era que no podia convertir un AnsiString a Flotante por la configuracion regional y de idioma de windows.
Lo que paso era que se intentaba introducir por un edit un numero foltante, por ejemplo: 325.5
pero al querer usar la funcion StrToFloat marcaba error. Lo que paso era que en la configuracion regional, estaba configurado como Español de españa, y la notacion para los numeros cambia pues es coma flotante. Entonces un numero flotante era 325,5 con ',' no con '.'
Y se soluciono cambiando a Español de Mexico, en la que se usa punto flotante
Tal vez y ese no sea tu problema, pero eso fue lo que me paso, no se si me explique bien.
30
« en: Jueves 13 de Julio de 2006, 18:43 »
Necesitas que se cambien en tiempo de ejecucion? por que si no, puedes cambiar el orden en tiempo de diseño desde la ventana de Object TreeView. Pero no se si ese sea el problema que tienes
31
« en: Sábado 8 de Julio de 2006, 02:03 »
no entendi bien tu duda, pero trate de describir por que te marca errores
32
« en: Martes 4 de Julio de 2006, 19:27 »
Pues lo unico que se me ocurre es que cuando añadas la cuarta linea borres el salto de lina que se produce. Memo1->Lines->Delete( Memo1->Lines->Count-1 );
con esa linea de codigo estaras borrando del memo la ultima linea, en tu caso seria la quinta linea que es la que esta vacia
33
« en: Sábado 1 de Julio de 2006, 20:47 »
Pues enctre una manera indirecta de poner el contenido del StringGrid en un archivo que puede habrir Excel. TStringList *File = new TStringList(); File->Clear(); for( int Row = 0; Row < StringGrid1->RowCount; Row++ ) { AnsiString Linea = ""; for( int Col = 0; Col < StringGrid1->ColCount; Col++ ) { Linea += StringGrid1->Cells[Col][Row]+","; } //Quitar la ultima ',' Linea.Delete(Linea.Length(),1); File->Append( Linea ); } //Guardar File->SaveToFile( "c:\\tabla.csv" );
Es un archivo de texto con formato, separado por comas con extención CSV. Hasta ahora me a saco de apuros, pero lo que busco es ponerlo en un archivo XLS. Espero y puedan ayudarme
34
« en: Sábado 1 de Julio de 2006, 05:46 »
//Pon la ruta que tu quieras AnsiString RutaDir = "c:\\PDFs"; //Te vas a auxiliar de un FileListBox de la paleta Win3.1 FileListBox1->Drive = RutaDir[1]; FileListBox1->Directory = RutaDir.Delete(1,2); FileListBox1->Mask = "*.pdf"; //Puesdes poner cualquier otra mascara FileListBox1->Update(); //ya que tienes la lista de archivos, sigue pasarla al ComboBox ComboBox1->Clear(); for( int i = 0; i < FileListBox1->Count; i++ ) ComboBox1->Items->Append( FileListBox1->Items->Strings[i] );
Ahora que si quieres que aparescan con todo y ruta completa, cambia el bloque del for por esto for( int i = 0; i < FileListBox1->Count; i++ ) { FileListBox1->ItemIndex = i; ComboBox1->Items->Append( FileListBox1->FileName ); }
y para que te aparescan en orden alfabetico, modifica el parametro de ComboBox ComboBox1->Sorted = true;
zaz pues, espero que te sirva
35
« en: Viernes 30 de Junio de 2006, 02:03 »
Como me es posible guardar el contenido de un StringGrid en un archivo de exel?
E tratado de usar los componentes de office que trae el Builder, pero no e sabido como usarlos.
Si alguine me puede dar un norte o pasarme un ejemplo, les agradeceria mucho
36
« en: Martes 20 de Junio de 2006, 23:42 »
Estas haciendo todo bien, creaste la imagen en memoria, y cambiaste sus propiedades bien, pero como lo puse en el codigo que te pase, no le asignaste de quien va a ser hijo, por eso no te aparece en la forma void persona::persona(TObject *Sender) { imag = new TImage( Parent ); //crear el objeto TImage imag->parent = Parent; //asignar de quien sera hijo }
Tu pusiste como Parent a Application, no lo he probado asi, pero puede funcionar, lo que yo hago es asignarle la forma en la que quieres que aparesca imag = new TImage( Form1 ); //crear el objeto TImage imag->parent = Form1; //asignar de quien sera hijo
O si quieres que aparesca la imagen dentro de un GroupBox se lo indicas imag = new TImage( GroupBox1 ); //crear el objeto TImage imag->parent = GroupBox1; //asignar de quien sera hijo
Por que recuerda que los parametros Left y Top hacen referencia al Parent, por ejemplo, tu tienes Left 40 y Top 80, si eliges como Parent a Form1, la imangen se colocara a 40 y 80 pixeles de la ezquina superios izquierda de Form1 y si pones como Parent a GroupBox1 la imangen se colocara a 40 y 80 pixeles de la ezquina superios izquierda de GroupBox1
37
« en: Domingo 18 de Junio de 2006, 03:46 »
Lo que pasa es que en tu estructura, solo tienes declarado un puntero, pero solo eso... un puntero es una variable que guarda una direccion de memoria al objeto al que estas apuntando. Lo que te falta es crear el objeto, para despues poder manipularlo por medio de tu puntero. Lo mejor seria que cambiaras tu estructura por una clase, para que en el constructor pongas en codigo para crear el objeto TImage class persona { private: TImage *imag; int a; persona *sig; public: void persona(TObject *Parent); void ~persona(); }; void persona::persona(TObject *Sender) { imag = new TImage( Parent ); //crear el objeto TImage imag->parent = Parent; //asignar de quien sera hijo } void ~persona() { imag->Free(); //liberar el objeto TImage de la memoria }
si no quieres cambiar tu codigo, y seguir usando una estructura, tendrias que crear manualmente el objeto TImage cada que declares una nueva estructura. nota: este codigo no esta probrado solo escribi lo que se me ocurrio, ni siquiera recuerdo si el destructor se declara de esa manera, jeje, tengo mucho que no requiero de uno espero haber entendido bien tu duda y que esto te sirva
38
« en: Martes 6 de Junio de 2006, 20:23 »
Ok, voy a intertar eso... gracias
39
« en: Martes 6 de Junio de 2006, 19:10 »
A mi tambien me sucedio ese error, no podia cargar imagenes jpg en tiempo de ejecucion con el metodo LoadFromFile, solo funcionaba con bmp, la verdad no supe por que paso ese error, pero despues se soluciono solo, no se en que consista...
Pero mientras podrias cambiar tus imagenes a bmp
40
« en: Jueves 1 de Junio de 2006, 22:18 »
Lo que te esta pasando es por lo que comenta GEO, unos pines son de entrada y otros de salida. El puerto paralelo se divide en 3, puerto Datos de Estado y de Control y cada uno es una direccion distinta Busca en google informacion, hay mucha... Pero como describes tu circuito, no lo estas haciendo bien, el puerto 378, es el de datos, y ahi solo puedes sacar datos, y oviamente cuando quieras leer de el, te va a dar lo que previamente escribiste o con lo que se inicio cuando encendiste la maquina... Si quieres metar la temperatura por medio de un ADC, va a ser mas complicado, pues lo mas seguro es que tu ADC sea de 8bits, pero no por eso lo conectas al puerto de datos, no es bidireccional, tendrias que usar un registro de corrimento para cargar los 8bits de manera serie por el puerto de estado, bueno en combinacion con el de datos... Si no tienes una idea clara de lo que te digo, pues dices que no eres electronico, mandame tu circuito, y te ayudo a hacer las modificaciones necesarias, me da güeba partir de cero jeje, y seria mas didactico para ti... vatoicc@hotmail.com
41
« en: Martes 30 de Mayo de 2006, 17:54 »
jeje, el segundo for es el de j, es lo malo de copiar y pegar
for( int i = 0; i < StringGrid1->ColCount; i++ ) for( int j = 0; j < StringGrid1->RowCount; j++ ) if( StringGrid1->Cells[j].IsEmpty() ) { StringGrid1->Cells[j] = "Algo"; break; }
42
« en: Martes 30 de Mayo de 2006, 17:53 »
Tambien podrias hacer la condicion sin necesidad de declarar un AnsiString adicional
if( StringGrid1->Cells[j].IsEmpty() )
pero creo que el for debe empezar en 0 y terminar un numero antes del total
for( int i = 0; i < StringGrid1->ColCount; i++ ) for( int i = 0; i < StringGrid1->RowCount; i++ ) if( StringGrid1->Cells[j].IsEmpty() ) { StringGrid1->Cells[j] = "Algo"; break; }
y el break no debe ir ahi, pues el codigo solo serviria para escribir en la primera celda si esta vacia, pero solo son detalles
43
« en: Martes 30 de Mayo de 2006, 17:35 »
Pues te dire... Lo que recibes del puerto paralelo es un Byte, asi que puedes declarar una variable tipo Byte para guardar el dato que recibes del puerto.
Byte Puerto = PortIn(0x378);
y para ponerlo en el Edit como tu lo planteas, tendrias que usar la funcion IntToStr()
Edit1->Text = IntToStr( Puerto );
o directamente de la funcion de entrada
Edit1->Text = IntToStr( PortIn(0x378) );
no se si ya lo intestaste, pero asi es como me a funcionado a mi
44
« en: Jueves 18 de Mayo de 2006, 19:18 »
pues realmente no entendi muy bien lo que pretendes hacer, creo que quieres que tu aplicacion de flash guarde un archivo, pero no entendi si vas a corres tu animacion en builder o que tu animacion mande llamar al programa de builder, o que los dos corran a a la par, u otras combinaciones que se me ocurren  Pero se me ocurre una cosa: Puedes hacer un programa en builder que recibe un comando de linea que sea la informacion que quieres guardar en archivo. Entonces cuando en tu animacion tengas toda la inforamcion que quieres guardar, mandes ejecutar ese programa. Entonces en el programa de builder pones la forma invisible para que se vea que se ejecuta. Seria algo asi void __fastcall TForm1::FormCreate(TObject *Sender) { Form1->Visible = false; //Este for es nada mas de prueba para que veas en mensajes todos los pametros for (int i=0;i <= ParamCount();i++) { ShowMessage( ParamStr(i) ) ; } //---- //Aqui podrias ordenar los parametros y guardarlos en archivo //---- Form1->Close(); } //--------------------------------------------------------------------------- La funcion ParamCount() te retorna cuantos parametros de linea recibio tu programa. Y la funcion ParamStr( int ) te retorna un AnsiString de cada parametro de linea. Entones creo que pudiera servirte de algo. El parametro de linea es por ejemplo si ejecutas un programa desde DOS seria asi: c:\> ejecutable parametro1 parametro2 parametroN Pero a lo mejor ya lo sabias. Y por cierto, ParamStr(0) es la ruta de donde esta tu ejecutable, o sea que esa posicion la puedes despreciar, todo depende si la ocupas Haber si te sirve....
45
« en: Martes 16 de Mayo de 2006, 23:56 »
Mi duda es la siguiente...
Hice un programa administrar archivos de audio, reproducirlos y poder transcribirlos en un RichEdit. Pero necesito que mi aplicacion controle otro programa que se llama mp3DirectCut, que sirve para grabar audio en MP3.
Como dicho programa tiene atajos de teclado para todas sus funciones, quisiera saber si hay algun metodo para enviar esos atajos de teclado desde mi aplicacion y que se ejecuten en el otro programa.
No se si me explique bien, pero la idea es que cuando habra mi programa, se ejecute el otro a la par y oculto, y manejarlo desde mi aplicacion.
O si alguien sabe de algun componente para grabar audio y codificarlo a MP3 me seria de gran utilidad
46
« en: Martes 16 de Mayo de 2006, 21:06 »
para el manejo del puerto serie puedes usar el ComPort de winsoft,es muy sencillo de usar. http://www.winsoft.sk/downld.htmSi tienes dudas de como usarlo, me dices y te mando un ejemplo que tengo
47
« en: Martes 16 de Mayo de 2006, 21:03 »
mandalo tm a vatoicc@yahoo.com.mx si no es mucha molestia
48
« en: Martes 16 de Mayo de 2006, 20:57 »
Pues yo tampoco e encontrado un metodo para borrar la imagen que ya tienes cargada, como el metodo clear() de un Memo, o algo parecido.
Pero podrias poner invisible la imagen, o cargar un archivo de imagen vacio... creo que es lo mas facil si lo que pretendes es que el usuario ya no vea la imagen al efectuar alguna accion
49
« en: Sábado 13 de Mayo de 2006, 00:43 »
Muy buen tip, nada mas se te olvido agregar que para el ComboBox hay que modificar una propiedad
ComboBox1->Style = csOwnerDrawVariable;
No lo e probado en el ListBox, pero es un buen tip para darle presentacion a un programa
50
« en: Viernes 12 de Mayo de 2006, 19:48 »
Orale.... se ve muy ingenioso... deja lo pruebo y despues te digo como me fue
|
|
|