Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   BorderIcons false (https://www.clubdelphi.com/foros/showthread.php?t=42381)

Caral 12-04-2007 22:34:45

BorderIcons false
 
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:

Código Delphi [-]
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:
Código Delphi [-]
 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:

Código Delphi [-]
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:

Código Delphi [-]
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:
Código Delphi [-]
  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

Cita:

Empezado por roman
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:

Código Delphi [-]
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í:

Código Delphi [-]
var
 xx: TSinBotones;
begin
  xx := TSinBotones.create;
  Application.Initialize;
  Application.OnModalBegin := xx.sinBotones;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.


saludos


La franja horaria es GMT +2. Ahora son las 02:11:34.

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