Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ocultar botones distintos form (https://www.clubdelphi.com/foros/showthread.php?t=83798)

The Cid James 31-07-2013 14:23:09

Ocultar botones distintos form
 
Bueno voy a ser lo mas claro posible para plantear mi problema, estoy trabajando en una aplicación con varios form para no entrar en detalles y explicar exactamente de que se trata lo voy a plantearcon un ejemplo mas practico y conocido.
Mas o menos seria lo siguiente, en una form tengo un listado de pongamosle productos (con TDBgrid), y en la otra lo que necesito seleccionar es el producto para lo cual he usado un botón el cual selecciona el producto en la form donde se encuentra el listado, ahora bien quiero que ese botón solo se muestre únicamente cuando accedo mediante el form 2 (donde llamo al form 1 cuando deseo seleccionar un item) y no cuando solo quiero visualizar los productos dado que el botón no seria útil

Desde ya muchas gracias

movorack 31-07-2013 16:44:22

Hola,

Puedes colocar un parámetro que indique si debe desplegar o no el botón en cuestión y así cuando lo llames desde el formulario indicado lo activas y desde otro no lo activas.

Nota: Pase como 5 minutos tratando de entender lo que escribiste porque además de no estar claro, la redacción no ayuda y escribir en un solo párrafo empeora las cosa... no se quien es el del foro que dice que esto no es un móvil. Así que tranquilo escribe cuanto quieras.

Spynosa 31-07-2013 18:06:08

puedes poner esto

si estamos en el form2
form3.tag := 2;
form3.showmodal;

en el fom3

if tag = 2 then
boton.visible := false;

y antes de llamarlo de otros formulario
form3.tag := 0;

Casimiro Notevi 31-07-2013 18:17:50

Recuerda poner los tags al código fuente, ejemplo:



Gracias :)

Spynosa 31-07-2013 18:56:55

ok
Gracias Casimiro por la observación, no se editar el mensaje para cambiarlo, la proxima vez.

movorack 31-07-2013 19:05:55

Personalmente no me gusta mucho la solución con el tag. Prefiero agregar una propiedad "MostrarBotonX" ya que es mas especifica en su uso que "form.tag".

La razón por la que prefiero la propiedad es que al final podríamos tener que en una parte del código usamos el tag para x y en otra parte el tag para y cuando pudimos haber especificado ese funcionamiento desde la clase.

Pero como cada quien mata las pulgas a su modo...

ecfisa 31-07-2013 19:34:22

Hola.

Otra opción:

Form2: (El que contiene el TButton a ocultar)
Código Delphi [-]
...
type
  TForm2 = class(TForm)
    Button1: TButton;
  private
  public
    class procedure ShowForm(const aVisible: Boolean);
  end;
....

implementation

class procedure TForm2.ShowForm(const aVisible: Boolean);
begin
  if not Assigned(Form2) then
    Form2 := TForm2.Create(nil);
  Form2.Button1.Visible := aVisible;
  Form2.ShowModal; // (o Show)
end;
...


Form1:
Código Delphi [-]
...
begin
  TForm2.ShowForm(False);  // (True para visualizar)
  ...
end;

Saludos :)

The Cid James 01-08-2013 15:03:22

Cita:

Empezado por ecfisa (Mensaje 464761)
Hola.

Otra opción:

Form2: (El que contiene el TButton a ocultar)
Código Delphi [-]
...
type
  TForm2 = class(TForm)
    Button1: TButton;
  private
  public
    class procedure ShowForm(const aVisible: Boolean);
  end;
....

implementation

class procedure TForm2.ShowForm(const aVisible: Boolean);
begin
  if not Assigned(Form2) then
    Form2 := TForm2.Create(nil);
  Form2.Button1.Visible := aVisible;
  Form2.ShowModal; // (o Show)
end;
...


Form1:
Código Delphi [-]
...
begin
  TForm2.ShowForm(False);  // (True para visualizar)
  ...
end;
av

Saludos :)

Primero que nada gracias por su tiempo a toos, he intentado usar este código pero no lo entiendo... (soy nuevo en esto)

En la primera parte del código que es donde contiene el botón en que momento estoy haciendo que el botón pase a no mostrarse :confused: porque al usar el código el botón sigue mostrándose cuando abro la form que contiene el botón

ecfisa 01-08-2013 17:15:39

1 Archivos Adjunto(s)
Hola.

Te adjunto un ejemplo para que puedas revisarlo con tranquilidad.

Saludos :)

The Cid James 01-08-2013 17:33:44

Cita:

Empezado por ecfisa (Mensaje 464816)
Hola.

Te adjunto un ejemplo para que puedas revisarlo con tranquilidad.

Saludos :)

Muchas gracias revise el ejemplo y vi que tiene un check box para que el boton se vea yo lo que ando buscando es que si abro el form1 el boton no se muestre, pero si doy clic al boton desde el form2 al abrir el form1 si se muestre pero sin seleccionar nada (que sea automatico)
aqui dejo el boton que llama al form 1 (listadoitems)
Código Delphi [-]
procedure Tfdonacion.cBuscarClick(Sender: TObject);
begin
  fmodulo.qlistadoitems.Active := true;
  fmodulo.qlistadoitem.ParamByName('categoria').AsString := '%';
  fmodulo.qlistadoitem.Refresh;
  tfListadoitem.Create(self).ShowModal;
desde ese botón abro el formulario donde tengo la lista, donde este el botón seleccionar para seleccionar desde el dbgrid y que este botón traspase la categoría en este caso
el botón seleccionar
Código Delphi [-]
 fdonacion.eitems.Text := fmodulo.qlistadoitems['categoria'] + ',' +  ' '
  +fmodulo.qlistadoitems['nombre'];
  fdonacion.idmiembro := fmodulo.qmiembros['id_miembro'];
Como verán el botón me pasa esos datos a la form2 donde los empleo de otra forma por lo cual no sirve de nada cuando la form dos no esta activa esperando esos datos


A mi se me ocurrio lo siguiente


Código Delphi [-]
procedure TfListadoitms.FormCreate(Sender: TObject);
begin
  if fdonacion.bvisible = True then
    begin
        bseleccionar.Visible := true;
    end
      else
      begin
        bseleccionar.visible := false;
    end;
end;

en el form2
public
evisible : boolean;
procedure Tfdonacion.FormCreate(Sender: TObject);
begin
  bvisible := true; 

procedure Tfdonacion.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  bvisible := false;
end;

Pero al copilar me tira error en el form1 no se si esta bien planteado

ecfisa 01-08-2013 17:53:52

Cita:

Empezado por The Cid James (Mensaje 464819)
Muchas gracias revise el ejemplo y vi que tiene un check box para que el boton se vea yo lo que ando buscando es que si abro el form1 el boton no se muestre

Hola.

Puse TCheckBox en el ejemplo a fin de que pudieras verificar de forma simple el funcionamiento del código, en la práctica pasarías como argumento el valor False cuando no desees que se visualize.

Saludos. :)

The Cid James 01-08-2013 18:33:12

1 Archivos Adjunto(s)
Cita:

Empezado por ecfisa (Mensaje 464822)
Hola.

Puse TCheckBox en el ejemplo a fin de que pudieras verificar de forma simple el funcionamiento del código, en la práctica pasarías como argumento el valor False cuando no desees que se visualize.

Saludos. :)

A ver si asi me doy a entender un poquito mejor,
Si acceso al form 2 directamente (he aquí la razón de todos mis males) el boton tambien se ve :(

Te adjunto lo que me mandaste pero con un menu para acceder a los form

NOTA: No se como pasarte el ejemplo, exedo por 20kb el limite de adjuntos y no me deja ponerte enlaces externos

ecfisa 01-08-2013 19:16:28

Hola.

Recibí bién tu ejemplo por pm.

Fijate que incluí el método de clase ShowForm para que la creación se haga dentro del mismo código del form.

No tenes que llamar a Form2 así:
Código Delphi [-]
procedure TForm4.Formulario22Click(Sender: TObject);
begin
   tform2.Create(self).ShowModal; // NO
end;

Tenes que llamarlo de igual modo que lo hace Form1:
Código Delphi [-]
procedure TForm4.Formulario22Click(Sender: TObject);
begin
  TForm2.ShowForm(False);  // False = No visible
end;

Saludos. :)

The Cid James 01-08-2013 20:06:37

Excelente muchísimas gracias ahora creo que comprendo un poco mas el código que me pasaste, y como asignar el estado me puede servir para varias cosas que tengo pensado hacer pero honestamente no encontraba la forma.

Muchísimas gracias a todos los que cedieron su tiempo en ayudar


La franja horaria es GMT +2. Ahora son las 13:07:30.

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