Buenas,
quizá sea una pregunta de "perogrullo" pero me estoy matando la cabeza con este tema.
Tengo una aplicacion en la que los forms se abren como show en un panel principal sin problema. Puedo maximizar, minimizar, cerrar etc.
Gracias a este maravilloso foro y su ayuda.
Viendo otros post que preguntan sobre saber que forms estan abiertos, intente implementar eso mismo y cargarlos en un listbox, asi, cuando tuviera algun form "oculto" podria mostrarlo en primer plano.
Pues bien, seguro que es una tonteria pero no hay forma.
Tengo esto
Código Delphi
[-]procedure TPrincipal.tbutton_inventariosClick(Sender: TObject);
begin
if not assigned(finventarios) then
begin
finventarios:=tfinventarios.Create(application);
finventarios.Parent:=CONTENEDOR;
finventarios.Show;
formularios_abiertos;
end
else
begin
end;
end;
Ahi, lo que hago es preguntar si el formulario ha sido asignado y sino crea uno. Ya cuando lo cierro se libera (para no abrir el mismo 2 veces).
CONTENEDOR es un panel donde lo abro.
formularios_abiertos es donde hago lo siguiente:
Código Delphi
[-]
procedure tprincipal.formularios_abiertos;
var
i:integer;
begin
listbox1.Clear;
for i:= Screen.FormCount -1 downto 0 do
if screen.Forms[i].Showing then
if (screen.forms[i].Caption<>'Principal') and (screen.forms[i].caption<>'acceso') then
listbox1.Items.Add(screen.Forms[i].Caption);
Funcionar funciona, porque, si hago click en una de las lineas del listbox me muestra el form, lo unico malo es que los forms estan guardados de forma inversa en el listbox y me muestra el ultimo.
Si, es porque la i va en descendente y el listbox lo guarda en ascendente. Eso lo entiendo
El chiste es que si lo pongo al reves, al seleccionar el ultimo formulario del listbox me acaba tirando un error y no precisamente de index -1.
Tambien intente usar un array para guardar los forms y luego pasarlos al listbox pero es el mismo resultado.
No debe ser complicado pero ....
Gracias.