![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
|||
|
|||
|
Problemas con botones
Hola a Tod@s,
a ver si me podeis ayudar estoy creando botones en un panel, pero me hace falta que siga creando en la siguiente colunma y que sepa y siga creando botones hasta terminar el panel y si no caben en ese panel que me los coloque en el siguiente panel al pulsar el boton siguiente.... os pego mi codigo para que veais que ahora actualmente ya estoy visualizando los botones pero me falta como ya os comento que siga en la siguiente columna y que haga tantos botones como grande sea el panel. begin vTop := 1; vInicio := 1; vPestanyaPersonal := Personal; vPestanyaProductos := Familias; BDades.TPersonal.Active := False; BDades.TPersonal.SelectSQL.Text := 'Select * from Personal where tienda = ' + '''' + BDades.TConfigTIENDA.Text + ''''; BDades.TPersonal.Open; BDades.TPersonal.Active := True; BDades.TPersonal.First; While BDades.TPersonal.Eof = False do Begin vPersonalNombre := BDades.TPersonal.FieldByName('NOMBRE').AsString; vPersonalCodigo := BDades.TPersonal.FieldByName('CODIGO').AsInteger; vBotonPersonal := TButton.create(self); vBotonPersonal.Parent := vPestanyaPersonal; vBotonPersonal.Caption := vPersonalNombre; vBotonPersonal.Height := 69; vBotonPersonal.Width := 120; vBotonPersonal.Left := vInicio; // Inicio vBotonPersonal.Top := vTop; // Altura vBotonPersonal.Enabled := True; vBotonPersonal.visible := True; vBotonPersonal.Tag := vPersonalCodigo; vBotonPersonal.OnClick := vPersonalBotonOnClick; vBotonPersonal.Show; BDades.TPersonal.Next; vTop := vTop + 70; if vTop > 420 Then Begin vInicio := 1; vTop := 1; end; end; |
|
#2
|
|||
|
|||
|
Hola, supongo que lo puedes hacer utilizando la logica:
Creamos 3 variables: - ParentVarMin, ParentVarMax: TPanel - TopCount, LeftCount : Integer ParentVarMin quiere decir el panel de partida, y el ParentVarMax quiere decir el panel final. entonces configuramos ambas variables ya mensionadas, ahora suponiendo que el panel tiene un Width de 400 igual que Height y los botones un Width de 40 igual que Height, veriamos por logica que en un panel de esas dimensiones caberían en un total de 100 Botones por Width y Height ¿me entiendo?. Boton 40x40 Panel 400x400 TopCount, LeftCount = 0 Se puede hacer un for entre la división del Panel con el boton (Width) (400/40 = 10) multiplicado por la división entre el Panel con el Boton (Height)(400/40 = 10) en total da un resultado de (10 * 10 = 100) y dentro del for lo siguiente: - un if que dice si ParentVarMin = ParentVarMax entonces Pare STOP pero si no es lo siguiente: - Creamos otro for entre la división del Panel con el boton (Width) (400/40 = 10) y dentro de este: - Creamos un botón con un Top multiplicado con el TopCount (40x0 = 0) y un Left multiplicado por su LeftCount(40x0 = 0), luego cuando acabe este proceso(la creación de 1 botón) se le aumentará 1 + al LeftCount para que la proxima dirección de Left sea 40, luego 80, 120, etc... - Se puede usar la misma logica para la creación de TOP osea hacia abajo.... Es medio complicado pero con un poco de imaginación de seguro que lo logras, te toca convertir lo que dije en lenguaje DELPHI Espero estar en lo correcto.jajajja saludos.! |
|
#3
|
|||
|
|||
|
Cita:
Por cierto el panel no tiene un tamaña fijo ya que aumentan o disminuye segun el tamaño de la pantalla asi que no sabria nunca que tamaño tiene lo tendria que averiguar... muchas gracias por la explicacion si me pudieras dar un cable con el codigo que es precisamenten mi fallo me harias un favor muy grande. Gracias de antemano. Saludos. |
|
#4
|
|||
|
|||
|
Hola, por lo del código veré que puedo hacer porque es un poquito complejo jejeej, por las dimensiones no te preocupes, recuerda que no vamos a poner valores exactos, si no vamos a poner los valores del panel por ejemplo (Panel1.Width o Panel1.Height) entonces será "AutoAjustable" según el tipo de resolución que sea..
Saludos! |
|
#5
|
|||
|
|||
|
Hola , pues no era tan complicado como pensaba, te dejo un avance para que ya veas algunos resultados:
CRea un panel con dimensiones 200x200 PD: pueden haber otros metodos que ocupe menos recursos.... Ahora solo falta agregar la función de que pase de un panel a otro......pero eso creo que lo haré después, si encuentras algo más no dudes en postearlo... Utilice la opción ROund(redondeo) asi que la agregación de botones nunca va a ser perfecto a menos que la división entre el Height y Width del boton con el H o W del panel sea un numero entero, como en el ejemplo. 40x40 y 400x400 Número entero 10 54Lu2 Última edición por cmm07 fecha: 06-01-2010 a las 16:06:50. |
|
#6
|
|||
|
|||
|
Bien ahora lo voy a probar y te comento, no obstante muchas gracias adelantadas.
un saludo. |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Botones | Cañones | Varios | 6 | 19-07-2007 16:59:41 |
| Problemas para crear botones | jcDelphi | Varios | 3 | 08-06-2006 10:00:57 |
| Botones en vcl | gontxalo | OOP | 2 | 28-05-2005 10:38:16 |
| botones con iconos | vetustas | Gráficos | 2 | 15-12-2003 22:22:37 |
| Problemas con botones TJLAqua!! | adfa | OOP | 0 | 05-09-2003 20:36:51 |
|