Cita:
Empezado por D&W
Gracias por la observación jachguate tienes toda la razón. Nunca había probado el código hasta después de lo que me comentastes. Ya lo he reparado -según yo-
Código Delphi [-]
Procedure TMainForm.CreateOrRestoreForm(var aForm : TForm; aFormClass : TFormClass);
Begin
if not Assigned(aForm) Then begin
aForm := aFormClass.Create(Application);
aForm.Show;
end
else begin
if aForm.WindowState = wsMinimized then
aForm.WindowState := wsNormal;
aForm.BringToFront;
end;
end;
Para llamarlo así:
Código Delphi [-]
CreateOrRestoreForm(TForm(Form2), TForm2);
Saludos.
|
Ante todo muchas gracias por su participacion, me hicieron menos ignorante en esto, les comento que me meti en tremendo lio por "optimizador". (tuve que cambiar varios kilos de lineas acomodando mi codigo a estas funciones hasta hace unos 10 minutos, sin contar el fin de semana.


)
Pero viendolo por el lado amable valio la pena, me quedo con el codigo citado les cuento que se me ocurrio la misma.
Código Delphi
[-]
procedure TfrmPrincipal.CrearFormulario(FormClass : TFormClass; Form : TForm );
begin
if not Assigned(Form) Then begin
Form := FormClass.Create(Application);
Form.Show;
end
else begin
if Form.WindowState = wsMinimized then Form.WindowState := wsNormal;
Form.BringToFront;
end;
end;
Notaran el Class al reves como otro amigo lo menciono mas arriba, pero a este servidor la solucion dada me parece perfecta porque sirve para child o modal y se puede hacer referencia a las instancias de los Form1.cualquiercosa y con eso yo soy feliz.
Tambien debo comentarles que buscando por ahi pille la funcion:
Código Delphi
[-]
function FindShowForm(FormClass: TFormClass; const Caption: string): TForm;
... de los RX (componentes rusos... en los uses hay que ponerle el AppUtils) interesantes, que los baje y los instale pero funciona identico como las funciones propuestas para los child, pero me tope con el mismo problema al hacer referencia a Form1.cualquiercosa desde Form2.cualquiercosa
Código Delphi
[-]
Form2.cualquiercosa := Form1.cualquiercosa
.... Aqui tambien les dejo otra funcion ....
Código Delphi
[-]
function TfrmPrincipal.ShowForm(FormClass: TFormClass; const Caption: string): TForm;
var
I: Integer;
begin
Result := nil;
for I := 0 to Screen.FormCount - 1 do begin
if Screen.Forms[i] is FormClass then
if (Caption = '' ) or (Caption = Screen.Forms[i].Caption) then begin
Result := Screen.Forms[i];
if (Result.WindowState = wsMinimized) then Result.WindowState := wsNormal;
Break;
end;
end;
if Result = nil then begin
Application.CreateForm(FormClass, Result);
end;
Result.Show;
end;
Pero ya saben con cual me kedo.




. Bregue un monton pero valio la pena.
Nuevamente mil gracias a todos.