FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Dibujar laberinto en formulario
Hola a todos!!
Soy nuevo en el uso de C++ builder 5 y tengo una pregunta. En clase de programacion nos han pedido dibujar un formulario con una serie de botones y algo para representar un laberinto en forma de matriz (con casillas). ¿Que herramiento de c++ builder puedo usar para dibijar esto? He estado investigando y puedo usar un frame, pero no sé como dibujar las rayas de las celdas... Si más daros las gracias |
#2
|
||||
|
||||
Puedes usar 4 TShape con forma de línea dentro de cada frame; cuando quieras que se vea la linea, haces visible el shape que corresponda.
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
No entiendo muy bien el uso de shape para hacer las celdas de la matriz, ademas las dimensiones de la matriz las va a insertar el usuario y se tiene que mostrar esa matriz en el frame. Tambien necesito que las celdas de la matriz se pueden pulsar
Saludos y gracias |
#4
|
||||
|
||||
Hemos enfocado el asunto de forma distinta.
Yo he pensado en hacer un Frame que sea la propia celda, dentro de ese Frame incluyo los 4 TShapes para simular un borde de color. En tiempo de ejecución el usuario dice que quiere una matriz de 5x6, pues creamos 30 frames situados en 5 filas por 6 columnas, cada frame tendrá dentro los 4 Tshapes ocultos y cuando el usuario haga clic sobre el frame, según la coordenada del clic, se le hace visible el shape que corresponda. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#5
|
|||
|
|||
Hola
Gracias por contestar!. Otra pregunta, ¿los frame tienen funciones para mostrar texto y recuperar tecto?. Mi compañero y yo hemos estado viendo las funciones del frame y no vemos la forma de mostrar texto y recuperar. Gracias por la ayuda |
#6
|
||||
|
||||
¿cuala?
para crear un Frame, File -> New -> Frame Es como un Form, puedes poner labels, shapes, Edits.... lo que quieras sobre el frame. Ahora en tu Form1 quieres crear 10 frames, en el código de un botón puedes poner algo así:
Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#7
|
|||
|
|||
Ahhh!! Ya voy pillando, todo lo que creas en el Frame "padre" (por decirlo de alguna manera) lo heredan los hijos. Es que no me habia fijado para que servia el Frame principal, XDD.
Oye Lepe muchas gracias por la ayuda, si me surgen cosas ya las ire posteando. Gracias tio!! |
#8
|
|||
|
|||
Hola de nuevo!
Estoy creando los frames de forma dinamica como me explicaste pero me da errores en ejecucion ("Violation Access"). Basicamente lo que hago es esto: La clase Frame padre tiene un constructor de esta forma; Código:
TFrame:TFrame (TComponent){"Aqui no hay nada"} Código:
for (int i=0;i<NumCasillas;i++) for (int j=0;i<NumCasillas;j++) { TFrame *aux= new TFrame("Aqui no estoy muy seguro de que pasarle"); casillas[i][j]= aux; casillas[i][j]->Name="X"; casillas[i][j]->Legth="100"; ...... aux=null; } Bueno el tema esta en que cuando hago casilla[i][j]->Name="X"; Me da error de memoria... si pongo aux->Name="X" antes de ponerlo a Null tambien me da error. Alguna idea?? Ah tambien necesito de una clase que tenga implementada una cola.Hay alguna standar que la tenga??? Saludos |
#9
|
|||
|
|||
Alguna ayuda por favorrrrr
|
#10
|
||||
|
||||
Yo en C y C++ no me aventuro a decir nada, sé que hay gente del foro que maneja C, será mejor esperar por ellos.
Colas, bueno si no recuerdo mal: TStack, Tqueue, TObjectLis (esto es como un array dinámico), revisa la ayuda, allí te puede dar más resultados relacionados. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#11
|
||||
|
||||
¿Has reservado memoria para los arrays?
El segundo bucle for (int j=0;i<NumCasillas;j++) , ¿Te das cuenta que no tiene control?. i no se incrementa, solo j y no existe un condicional de control para j=> bucle infinito.... ¿No querrás decir for (int j=0;j<NumCasillas;j++) Código:
TFrame **casillas = new *TFrames[NumCasillas]; for (int i=0;i<NumCasillas;i++) //for (int j=0;i<NumCasillas;j++) for (int j=0;j<NumCasillas;j++) { TFrame *aux= new TFrame("Aqui no estoy muy seguro de que pasarle"); casillas[i][j]= aux; casillas[i][j]->Name="X"; casillas[i][j]->Legth="100"; ...... aux=null; } |
#12
|
|||
|
|||
Hola!!
Si de eso ya me habia percatado... el problema que tengo es que no sé que parametro pasarle al constructor TFrame. Le he pasado de todo y no me dibuja nada de nada. si hago Código:
TFrame *aux=new TFrame(...); aux->Top=100 ... |
#13
|
||||
|
||||
Yo pensé que lo harias con TShape.
Saludos. Edito: TFrame no sirve para dibujar, sino para implementar frames preprogramados o nuevos controles que a su vez contengan mas controles. Un TFrame a secas, no sirve para nada.... Última edición por escafandra fecha: 14-04-2008 a las 16:19:47. |
#14
|
|||
|
|||
Hola!!
Hombre los TShapes solo me ofrecen dibujar cuadrados,rectagulos y no sé que más... El tema esta en que yo he creado el laberinto a mano, creando los frames 1 a 1, lo que pasa q asi es una forma poco elegante y además las dimensiones del laberinto se hace en tiempo de ejecucion. Ademas quiero que cada casilla tenga un valor, y eso con TShape como lo haria?? Muchas Gracias por la ayuda! Edito: He probado a crear TShape de forma dinamica, tampoco puedo!!! El constructor me pide un TComponent igual que el TFrame.. Lo he creado asi: Código:
TShape *aux=new TShape(this??);//Sigo sin saber que poner aux->Shape=stRectangle; aux->Top=250; aux->Height=320; aux->Visible=true; SAludos Última edición por bochan fecha: 14-04-2008 a las 22:23:46. |
#15
|
||||
|
||||
Tanto para TShape como TFrame o cualquier componente, debes inicializarlo con un objeto TComponent. TComponent es clase madre de todos los controles. Por lo tanto un puntero al formulario donde están tun controles creados dinámicamente te sirve para inicializar. No existe constructor por defecto.
Código:
TShape *aux=new TShape(this); // ó aux = new TFrame(this); InsertControl(aux); //inserta el control en un TWinControl (el formulario Form1...) aux->Shape=stRectangle; aux->Top=250; aux->Height=320; aux->Visible=true; Saludos. |
#16
|
|||
|
|||
Hola!!
Pos ya parece que va tirando, lo único que me faltaba era poner el InsertControl(aux);... muchas gracias por la ayuda. Si tengo más dudas ya las posteare. Gracias por vuestra atencion |
#17
|
|||
|
|||
Hola de nuevo!
Ya tengo creado el laberinto, al final he usado frames porque con los shape no lo veia muy claro XD. Ahora me surje una duda. Los frames son de una clase padre Frame2 (en mi caso), todo lo que creo en el padre lo hereda los hijos, ahora bien si creo una variable en el padre cada hijo tendra su variable propia, hasta ahi bien pero si quiero una variable global que pueden modificar todos los hijos, como lo puedo hacer??? Gracias |
#18
|
||||
|
||||
Repasa las variables static de la clase. Estas sólo se pueden modificar por funciones miembros también declaradas como static. Se inicializan fuera del constructor, en código externo a la clase. se caracterizan por tener un valor común en todos los objetos de esa clase.
Otra posibilidad es crear una variable static en una función miembro. Será estable para todas las llamadas a esa función, vengan del objeto que vengan. La última posibilidad es una variable global que no pertenezca a la clase y a la que se acceda desde cualquier parte del código. Lo ortodoxo es una variable static de la clase. Saludos. |
#19
|
|||
|
|||
Hola!!!
Gracias por la ayuda, al final he creado una variable static en la funcion que acceden todos los hijos Saludos |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Dibujar en DBImage | Caral | Varios | 3 | 23-11-2007 07:46:21 |
Cambiar propiedad de componente del formulario padre al cerrar el formulario hijo | jzginez | OOP | 5 | 22-06-2007 21:40:51 |
Dibujar lineas | mcnudi | Impresión | 3 | 09-11-2006 13:52:54 |
Dibujar línea | dicatek | Gráficos | 8 | 29-07-2006 16:47:26 |
pasar datos de un formulario vista a cualquier formulario | @-Soft | OOP | 2 | 28-09-2004 21:56:01 |
|