|
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 - FordFarlaine
Páginas: [1]
1
« en: Miércoles 13 de Junio de 2007, 16:33 »
Bien, luego el problemilla sobre interrupciones es tal problema que no puedo hacerlo por interrupciones, pero entonces ¿Sabeis como lo podria solucionar?, Alguna forma tendria que haber porque hay juegos tipo 'primera persona' en la que el puntero del raton no lo ves en pantalla pero utilizas el raton para moverte sin la limitacion de que un supuesto puntero de raton llegara al borde de la pantalla. Vamos que lo que el juego esta capturando es el movimiento del raton directamente y no el movimiento del puntero en la pantalla. Api de Windows quiza? Gracias de nuevo
2
« en: Miércoles 13 de Junio de 2007, 12:25 »
Estoy intentado capturar los movimientos del raton con c++. Se que las coordenadas de pantalla es cosa facil, pero querria poder capturar este movimieto aunque el puntero saliera de la pantalla. Vamos, que lo que quiero es poder detectar movimento en 'mickeys' y no en pixeles de pantalla. He leido que en WindowsXP hay problemas para acceder a las interrupciones del sistema y no se si existe alguna funcion de la API de Windows que me devolviera estos valores. Alguien me puede ayudar? Muchas gracias de antemano.
3
« en: Viernes 9 de Julio de 2004, 11:02 »
Ya lo he solucionado, gracias de todas maneras.
4
« en: Viernes 9 de Julio de 2004, 09:24 »
Quiero que cuando pulso las teclas tab o las flechas de cursor, este mensage, independientemente del control que tenga el foco, sea enviado a la form principal. ¿Como puedo hacerlo? creo que la solucion pasa por el 'windowProc' pero no se muy bien como manejarlo. (Con el KeyPreview con el evento OnKeyDown para estas teclas no me funciona)
Gracias
5
« en: Lunes 10 de Mayo de 2004, 16:26 »
Mi pregunta es: ¿Existe en builder alguna clase con funciones que operen sobre matrices? Tales como, extraer una submatriz, producto de ellas, division, ...etc. (No me digais que si soy un perro, por no hacer yo el codigo, que ya lo tengo hecho pero me es muy lento)
Gracias.
6
« en: Lunes 10 de Mayo de 2004, 09:21 »
No se. Cuando hagas el grafico a pintar, antes rellena el fondo con un rectangulo negro del tamaño de la ventana ...->canvas->Rectangle
7
« en: Jueves 6 de Mayo de 2004, 09:19 »
Si, eso es. Porque el timage, almacena el bitmap en una de sus variables miembro, y el se preocupa de la gestion de lo mostrado en pantalla. Mientras los canvas son solo el lienzo que muestra en ese momento en pantalla, con lo que si los quitas no se refrescan porque no estan guardados en ningun sitio.
Ciao
8
« en: Miércoles 5 de Mayo de 2004, 09:34 »
No se muy bien que es lo que muestras (¿cromograma?), pero entiendo que lo que haces es mostrar un grafico por pantalla, y que este tiene una cierta aleatoriedad. Bueno, el problema lo tienes en que el grafico no te cabe en toda la pantalla y quieres usar el scroll para ver lo que no muestras. Bueno yo usaria dos posibles soluciones.
Primera. Me generaria un Bitmap con todo el grafico y despues en la funcion que te creaste de pintado, teniendo en cuenta la posicion del scroll mostraria una parte u otra del bitmap haciendo una copia de esta parte en el canvas.
Segunda. En lugar de pintar en el canvas de la pantalla, crearia un TImage en la pantalla de tamaño igual al grafico a mostrar, y haria el grafico sobre el canvas de este TImage (la propia pantalla gestionara lo que muestra, ya que no tienes que regenerar el bitmap, porque esta guardado en objeto TImage). " Image1->Picture->Bitmap->Canvas "
PD. Si no necesitas un escalado perfecto del grafico, puedes mostrarlo en una sola pantalla utilizando las funciones 'Stretch' que redimensionan un grafico a un tamaño dado. (esto hay que hacerlo creandote el grafico en un bitmap independiente y usando las funciones stretch para copiarlo redimensionado a la pantalla) Ejemplo. SetStretchBltMode(Form1->Canvas->Handle,COLORONCOLOR); StretchDIBits(Form1->Canvas->Handle,0,0,Form1->Width,Form1->Height,0,0,bitmapauxiliar->Width,bitmapauxiliar->Height,bitmapptr,&bmi,DIB_RGB_COLORS,SRCCOPY);
(mirar funciones del Windows SDK, en la ayuda de Builder)
9
« en: Martes 4 de Mayo de 2004, 10:56 »
Bueno, si te he entendido, el buf lo tienes declarado como variable miembro de la Form que utilizas como 'PCI', y no de la que tiene el TEdit. Pues bien, si esto es así, yo elegiria una de las dos siguientes opciones: Primera: la ultima que te dije en el otro post, pero colocando el buf=NULL, en el constructor de la Form 'PCI'. Teniendo en cuenta que tienes que hacer en el ".cpp" de la Form que contiene el TEdit un #include con el ".h" de la form 'PCI' (cosa que me imagino ya hiciste). Segunda: Si 'con acceder por posiciones' te refieres a poder acceder independientemente, a cada una de las letras del array. Puedes hacerlo desde la otra form, siempre que la Form que contiene el TEdit no este destruida, directamente con el TEdit, mediante dos maneras: 1º- Con el famoso c_str(). esto de devuelve la direccion donde comienza el array de caracteres como si fuera 'Ansi C', asi el primer elemento lo obtienes con " (Form1->buffer->Text.c_str())[0] ", los demas sustituyendo el - por el elemento en cuestion.
2º- Colocando el operador [] sobre el ansi string te devuelve directamente el caracter, ejemplo para el primer elemento " (Form1->buffer->Text)[1] " (notar que de una manera el primer elemento es el 0, y de la otra el 1) Para esta soluciontambien tendrias que #incluir en la Form 'PCI' el ".h" de la Form1, o como llames a la que contiene el TEdit
10
« en: Lunes 3 de Mayo de 2004, 14:29 »
Bueno, esto esta un poco regular: Primero, la memoria reservada con el operador 'new' no se libera automaticamente, la tienes que liberar con el operador 'delete', y aqui cada vez que ejecute la funcion haces una reserva de memoria que despues en algun sitio tendras que liberar. ¿Lo haces? Segundo, suponiendo que despues la liberas en cualquier otro sitio, no estara bien de todas maneras ya que buf, entiendo que es un puntero a una cadena de caracteres, y primero reservas memoria para el y lo direccionas a esa reserva de memoria. Pero a continuacion lo vuelves a redireccionar a la direccion que te devuelve el operador c_str() de la clase AnsiString. Con lo que la memoria queda reservada pero inutilmente, ya que pierdes la direccion donde la tenias.
Soluciones: Primero, no se para que quieres el buffer auxiliar buf, pero si lo que quieres es tener una cadena de caracteres que en todo momento contenga lo que hay en el TEdit, ya la tienes en el propio control, y su direccion de memoria te la devuelve el operador c_str().
Si de todas maneras quieres tener en una variable (por algo que no logro entender), la direccion de lo que hay escrito. Entonces elimina la primera linea, no reservando memoria y limitandote a hacer la asignacion.
Y por ultimo, si quieres tener en otra cadena lo que en un momento dado habia escrito en el TEdit, tienes que hacer una copia de la memoria y no una asignacion de direccion. ¿Como? Asignas el valor NULL por defecto al puntero buf (por ejemplo en el oncreate del TEdit). Y aqui liberas el valor anterior del buf, y le reservas el nuevo valor para el tamaño que necesites, y acontinuacion haces una copia de memoria.
. . buf=NULL; . .
void __fastcall TForm3::bufferChange(TObject *Sender) { .... if(buf!=NULL) delete [] buf; buf=new char[buffer->Text.Length()+1]; // el mas uno es para el caracter 0 // que termina el string memcpy(buf,buffer->Text.c_str(),buffer->Text.Length()+1); // copia la memoria }
11
« en: Jueves 29 de Abril de 2004, 16:19 »
Necesitaria la implementacion de la FFT en C++, he buscado en la red y he encontrado muchos codigos, pero ninguno me ha servido: algunos porque estan implementados para una dimension (yo lo necesito bidimensional), y otros porque es obligado que la longitud de la matriz sean potencias de dos (que no es el caso). Me recomendaron que metiera la matriz en una matriz de ceros de longitud potencia de dos, pero no me sirve porque me aparecen las frecuencias del cuadrado, y tambien me recomendaron que utilizara en la matriz, en lugar de ceros, un valor medio de los valores de la matriz, pero esto me da un valor sobreestimado para el origen. He encontrado una libreria GNU cientifica (gls), donde esta la funcion, pero creo que esta pensada para linux, y no he conseguido conpilarla en Builder. Si alguien me puede ayudar me lo digan!!! Muchas gracias
12
« en: Lunes 19 de Abril de 2004, 10:39 »
Perdona, no entiendo muy bien. Si el campo definido en la base de datos es un numero no podras pasarle una cadena. Pero si esta definido como una cadena, y te sale un error al enviar el registro comprueba la longitud de la cadena y la longitud maxima permitida en la definicion del campo en la DB
13
« en: Viernes 16 de Abril de 2004, 20:05 »
Table2->FieldByName("X")->AsString = Edit5->Text;
14
« en: Viernes 16 de Abril de 2004, 13:49 »
¿Como? no entiendo, que me dices? ¿Que tipo de ¿evento, miembro? es el OnKeyPrewiew? (No pertenece a la clase TForm) ¿La idea es algo asi, como hacer un 'timer' de frecuencia alta que capture las pulsaciones del teclado? No se, no veo a que te refieres.
Gracias de todas formas
15
« en: Miércoles 14 de Abril de 2004, 20:03 »
Y algo tal que:
Opcion1 = "<input type=radio name=" Opcion2 = " value="">"; AsigPreRes1 = (Query3 -> FieldByName("RESPUESTA")) -> AsString; Opciones1 = "<P>" + (Opcion1 + PreRes22 + Opcion2 + AsigPreRes1) + "</P>"; Espacio44 = "<P>" + Espacio44 + Opciones1 + "</P>";
Query3 -> Next( ); PreRes22 = (Query3 -> FieldByName("IDPREGUNTA")) -> AsString;
Tampoco se muy bien si esto es valido, porque no llego a ver del todo bien en que punto se crea el codigo HTML, pero si he interpretado bien el codigo que has puesto yo creo que esto dentor del segundo while tendria que funcionar.
16
« en: Miércoles 14 de Abril de 2004, 19:03 »
Vale!!! No se muy bien como funciona esto de generacion de codigo HTML mediante builder, pero creo que el problema lo tienes en el codigo HTML. Los botones de radio, en HTML, se agrupan segun el nombre, creo que la solución seria que en donde pones:
"<input type=radio name=respuesta1 value="">"
cambiaras el 'respuesta1' cada vez que cambias de pregunta del test, manteniendo el mismo para cada posible respuesta. ¿¿¿Me explico???
Bueno, a ver si esta vez te sirve. (Si no me he explicado con claridad me lo dices)
Bye
17
« en: Miércoles 14 de Abril de 2004, 17:59 »
Quiero controlar unas variables independientes de mi aplicacion mediante las flechas del cursor. Quiero que mientras mi aplicacion se esta ajecutando, si pulso las flechas del teclado, el valor de unas variables me cambien, independientemente del control que tenga el foco. Si lo hago cuando el foco esta en un slider u otro control que trabaja con estas teclas, me funciona bien con la funcion KeyPreview de la form principal, pero si estoy en algun boton o control que no utiliza estas teclas, me salta a otro control (con su utilidad estandar). Alguien me dice como lo hago?
Gracias
18
« en: Miércoles 14 de Abril de 2004, 17:52 »
Creo que tus optionButtons son RadioButton o RadioGroup, no?? Si son RadioButton tienes que meterlos en paneles TPanel distintos para que los considere separados. Si son RadioGroup, si cada respuesta crea un radiogroup distinto no tendria que ocurrirte eso
Si especificas un poco mas la pregunta, te cuento....
Ciao
19
« en: Martes 30 de Marzo de 2004, 20:24 »
¿Como especifico las propiedades de la impresora, cuando uso un Quick Report? Previsualizo el informe antes de imprimirlo, cuando le doy al icono de propiedades de impresora y las cambio, al salir del dialogo y darle al icono de imprimir, las ignora y lo imprime en el modo predeterminado ( 1 pagina por hoja, a cara simple, sin modo economico de tinta ... etc). Gracias de ante-mano Ciao
20
« en: Martes 30 de Marzo de 2004, 20:14 »
Solucionado, me parece una solucion un poco perra, pero da el pego. (he copiado una bd vacia)
21
« en: Martes 30 de Marzo de 2004, 20:12 »
Ya lo he pasado a un 'ado', porque me estaba dando quebraderos de cabeza, pero gracias de todas formas
22
« en: Martes 16 de Marzo de 2004, 13:14 »
Utilizando un objeto del tipo TADOConnection ¿Como puedo crear una base de datos de Access, con varias tablas, en tiempo de ejecucion?
Muchas gracias
23
« en: Martes 16 de Marzo de 2004, 10:24 »
Y si quiero conectar desde builder, a Access, mediante un Alias del BDE. Como puedo actualizar el BDE para que me funcione con los Access 2000 o XP? (con el office 97 me funciona y con posteriores no, asi que pienso que el problema esta en el algun tipo de driver del BDE) Me gustaria hacerlo con un alias, por compatibilidad con la aplicacion que tengo ya hecha.
Páginas: [1]
|
|
|