Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Funcion para Crear formularios Normales y evitar el maximizado :S (https://www.clubdelphi.com/foros/showthread.php?t=75351)

ivantj24 16-08-2011 18:57:30

Funcion para Crear formularios Normales y evitar el maximizado :S
 
Holas que tal Comunidad tengo un problema con la forma de crear los formularios, lo que sucede es que estoy trabajando con varios Formularios, y necesito crear como unos 8 dependiendo lo que el cliente requiera, si desea ver clientes, reportes, servicios etc, entonces para todo eso requiero una funcion que reciba los parametros del formulario y lo cree y se visualice, hasta el momento eh mirado y yo he trabajado con forms MDI pero en esta ocasion no requiero y no uso FormsMDI, y he mirado muchos codigos haciendo esto, una funicon para crear todos pero en formularios MDI, el codigo que intente implementar y vi en algunos temas del foro los aplique pero no me funcionan, seguramente es algo simple pero no lo capto :S

este es la forma en como hago mi codigo pero por algun forma, me sale una showmodal y no requiero eso, requiero mi formulario ya predefinido, aqui muestro el codigo:

Cita:

//Lo mando llamar
MostrarForma(TfrmInicioSesion, frmInicioSesion);

//y esta es la funcion pero no me funciona
function TfrmPrincipal.MostrarForma(TfrmClass: TFormClass; Instancia : TForm) : boolean;
begin
result:= False;
if not Assigned(Instancia) then
begin
Instancia:= TformClass.Create(Application);
Instancia.ShowModal;
result:= True;
end;
end;
lo mismo intente hacer de otra manera, ya que ahi me regresa true, yo lo capturo y dependiendo lo que reciba me mostraba el mensaje:

Cita:

//algo asi era lo que hacia, ahi si recibia el valor boleano y mostraba el formulario
if MostrarForma(TfrmUsuarios, frmUsuarios) = True then
frmUsuarios.Show;

//y este era la funcion
function TfrmPrincipal.MostrarForma(TfrmClass: TFormClass; Instancia : TForm) : boolean;
begin
Application.CreateForm(TFrmClass, Instancia);
result:= True;
pero de todos modos no funcion :(


y una 3ra que intente, era enviar solo el valor de la clase del formulario :S
asi:

Cita:

MostrarForm(TfrmUsuarios);

function TfrmPrincipal.MostrarForma(TfrmClass: TFormClass): Boolean;
begin
with TfrmClass.Create(Application) do
begin
result := ShowModal = mrOk;
Free;
end;
end;

y no me mostraba nada, segun en el ejemplo de foro, creo que dependia si clickeaba dobre un boton, lo cual no entiendo que querian hacer ya que la respuesta no fue muy clara, espero me puedan ayudar por que desde ayer ando con esto y no queria preguntar en el foro ya que pense que seria facil :S pero por lo visto no me resulta a mi :(


y el otro problema era de maximizar

quiero evitar que se maximize un formulario una ves maximizada desde que se crea una form, ya evite que al dar doble click en la parte del titulo se redisenie la forma, y que al querer arrastrar el formulario no se mueva, pero no quiero quitar el boton de maximizar ya que si lo quito, la barra de windows, no la toma como punto de referencia, ya que se alarga aun mas y definitivaente no se ve el cerrar, ni minimizar, entonces no se como hacer esto tambien, espero alguien me pueda echar la mano con esto, y muchas gracias como siempre de antemano a todos.

ivantj24 16-08-2011 21:59:21

oigan aunque sea se aceptan ideas :((((((((((( tengo que hacer esto para continuar, esto es el disenio :S:S:S

como hacer una funcion que cree los formularios, y los muestre, eso es lo unico que pido :( para no repetir el codigo cada que cree un formulario, se los agradeceria :(

ecfisa 17-08-2011 08:41:31

Hola ivantj24.

Según entiendo queres una función que te muestre forms no modales en una aplicación SDI.

Función:
Código Delphi [-]
procedure TFMain.MostrarNoModal(AClass: TFormClass);
var
  i: Integer;
begin
  i:= Screen.FormCount-1;
  while (i > 0) and not (Screen.Forms[i] is AClass) do Dec(i);
  if Screen.Forms[i] is AClass then
    Screen.Forms[i].Show
  else
    AClass.Create(Self).Show;
end;

Ejemplo de llamada:
Código Delphi [-]
  MostrarNoModal(TForm1);
  MostrarNoModal(TForm2);
  ...

Un saludo.


La franja horaria es GMT +2. Ahora son las 07:18:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi