PDA

Ver la Versión Completa : BorderIcons false


Caral
12-04-2007, 22:34:45
Hola a todos y gracias de antemano por vuestra ayuda.
Problema:
Tengo muchos forms y quisiera poder en false la propiedad de borderIcons en todos.
biminimize
bimaximize
Pregunta:
Hay alguna forma de hacerlo por codigo, pero, no en cada form, sino en el principio de la aplicacion por ejemplo.? y tratar de que sea algo standar, osea que no tenga que mencionar el nombre de cada form por separado.
Gracias
Saludos

roman
12-04-2007, 22:40:49
Quizá algo como:


var
J: Integer;

begin
for J := 0 to Screen.FormCount - 1 do
Screen.Forms[J].BorderIcons := [];
end;


Claro, eso sólo actua sobre los formularios que ya estén creados.

// Saludos

jhonny
12-04-2007, 22:41:14
Algo parecido se planteo hace poco y realmente todo seria mas sencillo si esas forms las hubieras heredado de una Form personalizada por ti mismo.

Caral
12-04-2007, 22:44:15
Gracias Roman:
Donde crees que seria mejor pone este codigo.?
Gracias Jhonny:
La verdad tienes razon, pero la verdad tendria que empezar por aprender como heredar, osea complicado para mi, recuerda soy bien novato.
Saludos

Caral
12-04-2007, 22:56:56
Hola
Bueno de algo estoy seguro, no entiendo.
Estoy haciendo esto:
Screen.Forms[J].BorderIcons:= [biSystemMenu];
Y por supuesto no hace nada.
Lo puse en el form create.
No se como ponerlo en False.
Me siguen ayudando, por favor.
Gracias
Saludos

jhonny
12-04-2007, 23:00:53
El código de Roman es bastante Ingenioso (Sera Ingeniero? :D ) y te servirá para modificar dicha propiedad a los Forms que estén en pantalla en ese momento, yo lo llamaría justo después de crear el form.

Caral
12-04-2007, 23:07:05
Hola JHonny
Lo he intentado en el form create del form principal, pero no hace su funcion.
Me explico, si elimina el problema de este form principal, pero no de los que le siguen, osea solo del primero, no los demas.
Habra alguna forma de que lo haga.?
Saludos

roman
12-04-2007, 23:14:59
Si tus formularios los tienes en el Autocreate, entonces, en el archivo dpr verás algo como:


begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
...
Application.Run;
end;


Pon el código después de la creación de los formularios:


var
J: Integer;

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
...

for J := 0 to Screen.FormCount - 1 do
Screen.Forms[J].BorderIcons := [];

Application.Run;
end;


// Saludos

Caral
12-04-2007, 23:22:14
Gracias Roman
Hay es donde lo puse, el problema es que son tantos que no los tengo en el Autocreate por que se alenta mucho el programa.
Cada form lo llamo directamente y luego lo destruyo asi:

FLogin:=TFLogin.Create(self);
try
FLogin.ShowModal;
finally
FLogin.Free;
end;

En el autocreate solo tengo el datamodule y el form principal.
Saludos

roman
12-04-2007, 23:28:00
Entonces este método no te sirve porque un formulario se añade al arreglo Screen.Forms sólo hasta que se crea.

Lo que no entiendo es porqué quieres hacerlo por código. ¿Por qué no simplemente cambias la propiedad en los formularios?

// Saludos

jhonny
12-04-2007, 23:32:03
Lo que no entiendo es porqué quieres hacerlo por código. ¿Por qué no simplemente cambias la propiedad en los formularios?

// Saludos

Supongo que precisamente eso es lo que quiere evitar debido a que son muchos los forms del su proyecto.

Caral
12-04-2007, 23:32:53
Hola Roman
Tienes razon, se puede hacer de form a form, la verdad es ahorrar trabajo, son muchos entonces se me ocurrio nada mas.
Tal vez se te ocurre algo, no se.
Saludos

jhonny
13-04-2007, 00:09:29
Si quieres aprender sobre heredar Forms Creo que en la cara Oculta de Delphi 4 hablan sobre el tema "Herencia Visual" que seguramente leer al respecto te serviría bastante, Además no es tan complicado aprenderlo (A veces es el nombre el que nos asusta un poco ;) ).

Caral
13-04-2007, 00:14:51
Gracias Jhonny
De eso se trata de seguir aprendiendo, lo voy a ver.
Saludos

droguerman
13-04-2007, 06:52:03
si tus formularios son modales puedes aprovechar del evento OnModalBegin pero tienes que seguir ciertos pasos, imagino que aqui los podemos mejorar:


type
TSINBotones = class
procedure SinBotones(Sender: TObject);
end;

procedure TSINBotones.sinBotones(Sender: TObject);
begin
Screen.Forms[Screen.FormCount-1].BorderIcons:= [];
end;


y en la parte de inicialización la modificamos así:


var
xx: TSinBotones;
begin
xx := TSinBotones.create;
Application.Initialize;
Application.OnModalBegin := xx.sinBotones;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.




saludos