PDA

Ver la Versión Completa : Menus despleglables


The Cid James
29-10-2017, 05:04:58
Buenas (yo de nuevo :p) estoy usando delphi 10.2 tokio y queria hacer un menu desplegable o colapsable ahoro lo siguiente

He echo un boton ligado a un tpanel el cual al precionarlo muestra o no el tpanel para ello use

procedure TfPrincipal.BBmenuemClick(Sender: TObject);
begin
TPprincipal1.Visible := not TPprincipal1.Visible;
end;

end.

en su momento use delphi 7 y al desaparecer el tpanel tambien desaparecia o no mostraba la parte de form donde se encontraba el panel cosa que ahora no sucede
Les dejo dos imagnes para que se comprenda mejor
Con el tpanel activo
https://image.prntscr.com/image/Zhjzv2KhTZyiaYA1WmjaUA.png

Sin el tp activo
https://image.prntscr.com/image/Q3JRnC8wTQeuL38mWoOQpw.png

Sera que en las nuevas versiones ya no trabaja de la misma manera ahora mi pregunta seria si abria forma de hacer que esa parte del form tambien sea invisible... o que tengo que hacer que al precionar el boton el resto de los componentes se ajuste al tamaño del form ocupando el espacio del tpanel que desaparece el boton ?

Otra consulta obviamente relacionada a lo mismo seria como puedo hacer sub menus como los que tiene delphi en la paleta de componente que al apretar "+" o "-" muestre o no los elemento de la categoria, ademas de que cambie la imagen al presionar el boton en este caso un "+" por un "-"

The Cid James
31-10-2017, 04:17:42
Encontre esto pero no se como pasar o que significa las expresiones => en cbuilder.

Como puedo pasar esto para delphi?

Video explicativo (https://www.youtube.com/watch?v=3hUG8o7PpCU)

ecfisa
31-10-2017, 12:00:41
Hola.

No es muy diferente, sólo cambia los '->' por '.' y agrega 'then' al condicional.


procedure TForm1.Image1Click(Sender: TObject);
begin
if SplitView1.Opened then
SplitView1.Close
else
SplitView1.Open;
end;

...


Saludos :)

The Cid James
31-10-2017, 14:15:34
Hola.

No es muy diferente, sólo cambia los '->' por '.' y agrega 'then' al condicional.


procedure TForm1.Image1Click(Sender: TObject);
begin
if SplitView1.Opened then
SplitView1.Close
else
SplitView1.Open;
end;

...


Saludos :)

Gracias! trabaja de maravilla pero el componente splitview no se ajusta a las propiedades width y termina tapando otros componentes cuando ejecuto el soft. Hay algún motivo para esto?

The Cid James
31-10-2017, 18:21:14
Primero que nada perdon por los post continuos dentro del hilo. Pero soluciono algo y me quede completamente desconcertado con algunas cosas por lo cual vuelvo a recurrir a uds.

Con respecto al post anterior logre solucionarlo con la propiedad openwidth dándole el mismo valor que width por defecto era mas grande asi que por eso se superponía cuando ejecutaba el programa.

Una vez que solucione esto pense que todo iria bien, pero al volver a abrir el splitview qudaba con otras medidas

procedure TForm1.Image1Click(Sender: TObject);
begin
if SplitView1.Opened then
SplitView1.Close
else
SplitView1.Open; // cundo ejecutaba esto quedaba de diferente tamaño
end;

La medida del width orignal era de 128, esta medida tambien es la que use en la propiedad 'openwidth', para solucionar esto primero pense que era un problema de medidas y puse manualmente la propiedad en el click para darle la medida

SVPmenu.OpenedWidth := 128; //con esta medida quedaba de todas formas mas chico

asi que "jugue" con las medidas manualmente y para que quede del mismo tamaño cuando ejecutaba use la siguiente medida

SVPmenu.OpenedWidth := 158;

Algo que me llamo la atención pero pensé que era error del componente. Luego quise ajustar el tpanel que uso al ancho del form cuando se cerrara el splitview y que cuando abriera volviera al tamaño original entonces puse las mismas medida que estaba usando en vista de diseño.

height:520
widht: 740

Pero de nuevo quedaba mucho mas chico que en la vista de diseño al punto de que para que vuelva al tamaño original tuve que jugar nuevamente con las medidas y termine

TPprincipal.Width := 940;
TPprincipal.height := 720

Ahora me pregunto porque estos cambios de medidas de la vista de edición a la ejecución del programa? me dejo totalmente desconcertado estos cambios de medida en ejecución y me pregunto cual es el motivo para que suceda esto?