Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-12-2020
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

No te entiendo... ¿ Lo que quieres es que solo se muestren algunos y otros permanezcan ocultos ?

Pues oculta todos y muestra luego los que desees:
Código Delphi [-]
procedure TForm1.SomePanelsVisible(const Panels: array of TPanel);
var
  i: Integer;
begin
  // Ocultar todos
  for i := 0 to ControlCount-1 do
    if Controls[i] is TPanel then
       Controls[i].Visible := False;
  // Mostrar los deseados
  for i := Low(Panels) to High(Panels) do
    Panels[i].Visible := True;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #2  
Antiguo 08-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 37
Poder: 0
AlejandroCalica Va por buen camino
tenia pensado algo as como tu procedimiento, pero con la opcion de ocultar todos

Código Delphi [-]
SomePanelsVisible([]);



que pudiece quedar algo asi para definir que todos esten ocultos y asi para solo mostar los indicados y todos los demas ocultos

Código Delphi [-]
SomePanelsVisible([panel1,panel2]);

pero en un solo procedimiento se podra ?
Responder Con Cita
  #3  
Antiguo 08-12-2020
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por AlejandroCalica Ver Mensaje
pero en un solo procedimiento se podra ?
Eso es un solo procedimiento
Código Delphi [-]
procedure TForm1.SomePanelsVisible(const Panels: array of TPanel);
var
  i: Integer;
begin
  for i := Low(Panels) to High(Panels) do
    Panels[i].Visible := True;
end;
Responder Con Cita
  #4  
Antiguo 08-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 37
Poder: 0
AlejandroCalica Va por buen camino
hola se que es raro pero me puse a pensar un poco y no se pero creo existe una forma mm deja ver si me doy a entender

Código Delphi [-]
//esto para que NO se vean todos los panel
procedure visor(false,);

Código Delphi [-]
// podria ser la forma de representar que quiero que se vean todos
procedure visor(true,);

Código Delphi [-]
//y esta la forma de representar que no se vean todos, solo el panel 1 y el panel2,
procedure visor(true,panel1,panel2);

no se, quiero pensar que puede contener el procedure un if anidado o algo asi

si es false no se ve nada

si es true se ven todos
pero si es true saber cuales no se ocultaran
si no se define nada entonces todos se veran

mmmmmm se prodra en un solo procedure, creo por algo desde el principo puse doble boolean sera para mi un crack quien pueda ayudarme, y pueden explicarme como subir mi proyecto completo en el foro? muchisimas gracias
Responder Con Cita
  #5  
Antiguo 08-12-2020
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
A ver, estás confundido como cualquier novato, a todos nos ha pasado.
Lee y prueba con atención el ejemplo que te ha dado el compañero ecfisa.
Responder Con Cita
  #6  
Antiguo 10-12-2020
Avatar de kuan-yiu
[kuan-yiu] kuan-yiu is offline
Miembro Premium
 
Registrado: jun 2006
Ubicación: Galicia. España.
Posts: 1.017
Poder: 22
kuan-yiu Va camino a la fama
Tu problema lo puedes dividir en tantas subrutinas como sea necesario para que sea más sencillo de programar y luego puedes agrupar todas esas en un único procedimiento que se comporte como tu quieres e internamente llame a cada una de las opciones que te han propuesto según lo necesites.
Así en tu código verás una única línea con la sintaxis que quieres e internamente usará cualquiera de las opciones que te han propuesto.
Responder Con Cita
  #7  
Antiguo 11-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 37
Poder: 0
AlejandroCalica Va por buen camino
Muy buenas tardes, hice una mescolanza de codigos que me funcionaron, pero me gustaria saber si existe forma de reducir el codigo, este es el codigo que gracias a todos ustedes agrupe de esta forma, espero tengan tiempo para echarme la mano.

Código Delphi [-]

procedure TForm1.SomePanelsVisible(TSN:Boolean;const Panels: array of TPanel;SiNo:Boolean);
var
  i,ii: Integer;
begin // arreglo 1
      // Ocultar todos  o Mostrar Todos los Panel
     // independientemente del arreglo 2
  For ii := 0 To ComponentCount - 1 Do
  If Components[ii] Is TPanel Then
     TPanel(Components[ii]).Visible:= TSN;  //todos visibles o no
 begin
   //arreglo 2
   //independiente al arreglo 1
   //este arreglo sera lo contrario al arreglo 3
  For i := 0 To ComponentCount - 1 Do
  If Components[i] Is TPanel Then
  TPanel(Components[i]).Visible:= Not SiNo; //False
  // Mostrar los deseados
  //arreglo 3 el cual sera para nostrar o no un grupo determinado
  //de controles TPanel
  for i := Low(Panels) to High(Panels) do
    Panels[i].Visible :=SiNo;
end;end;

y de esta forma llamo el proceso,con estas opciones

Código Delphi [-]

procedure TForm1.Button1Click(Sender: TObject);
begin
SomePanelsVisible(False,[],True);   //ocultar todos
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
SomePanelsVisible(False,[],False);    //mostrar todos
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
SomePanelsVisible(False,[Panel1, Panel10],true);   //mostrar 1 y 10
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
SomePanelsVisible(False,[Panel1,Panel3,Panel5,Panel7],true); //Mostrar 1,3,5 y 7
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
SomePanelsVisible(True,[Panel1, Panel10],False);  //ocultar 1 y 10
end;
Responder Con Cita
  #8  
Antiguo 30-12-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 37
Poder: 0
AlejandroCalica Va por buen camino
que tal pues ste es el final del codigo, creen que se puede comprimir mas o ya no se puede, algun aporte para optimizarlo un poco mas, gracias a todos y felices fiestas

Código Delphi [-]
procedure TForm1.Paneles(TSN:Boolean;const Panels: array of TPanel;SiNo:Boolean);
var
  i,ii: Integer;
begin // arreglo 1
      // Ocultar todos  o Mostrar Todos los Panel
     // independientemente del arreglo 2
  For ii := 0 To ComponentCount - 1 Do
  If Components[ii] Is TPanel Then
     TPanel(Components[ii]).Visible:= TSN;  //todos visibles o no
 begin
   //arreglo 2
   //independiente al arreglo 1
   //este arreglo sera lo contrario al arreglo 3
  For i := 0 To ComponentCount - 1 Do
  If Components[i] Is TPanel Then
  TPanel(Components[i]).Visible:= Not SiNo; //False
  // Mostrar los deseados
  //arreglo 3 el cual sera para nostrar o no un grupo determinado
  //de controles TPanel
  for i := Low(Panels) to High(Panels) do
    Panels[i].Visible :=SiNo;
end;end;

y de esta forma lo ejecuto, sus distintas variantes

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Paneles(False,[],True);   //ocultar todos
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Paneles(False,[],False);    //mostrar todos
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Paneles(False,[Panel1, Panel10],true);   //mostrar 1 y 10
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
Paneles(False,[Panel1,Panel3,Panel5,Panel7],true); //Mostrar 1,3,5 y 7
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
Paneles(True,[Panel1, Panel10],False);  //ocultar 1 y 10
end;
Responder Con Cita
  #9  
Antiguo 10-12-2020
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 19.441
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por AlejandroCalica Ver Mensaje
...mmmmmm se prodra en un solo procedure, creo por algo desde el principo puse doble boolean sera para mi un crack quien pueda ayudarme, y pueden explicarme como subir mi proyecto completo en el foro?
Si que se puede hacer en un procedimiento, con una cabecera similar a esta:
Código Delphi [-]

procedure Visor(const aVisualizarOcultarTodos:boolean; aArrayPanels: array of TPanel);

La duda es si debe hacerse así o no (yo creo que no).
No siempre "juntar" todo en un procedimniento acaba siendo mejor. Lo que quiero decir es que juntar en un procedimiento "cosas distintas" utilizando más parámetros, aunque a primeras puede parecer mejor, a la larga puede resultar peor.

Mezclas cóodigo de cosas distintas y aunque es más corto en líneas, acaba siendo más complejo de programar, de depurar, de leer,...

En este caso, en lugar de una cabecera como la anterior, yo optaría por hacer 2 procedimientos (2 cabeceras):

Código Delphi [-]
procedure Visor(aArrayPanels: array of TPanel);
procedure VisorAll(const aVisualizarOcultarTodos:boolean);

Es posible que luego uno utilice internamente el otro, pero de esta forma es más sencillo de entender y de utilizar.
2 trozos de código pueden dar el mismo resultado, pero no necesariamente quiere dec¡r que sean igual de correctos.


No se si me explico...
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
doble pantalla con doble from emeritos Varios 0 17-12-2013 14:17:57
llamar a procedure desde otra procedure anubis Varios 23 04-03-2010 18:44:37
puntero a un procedure en un procedure como parametro fcios Varios 2 14-03-2009 03:41:22
Escanear Doble Cara, Doble Lector karenthyuliana Gráficos 2 11-04-2008 17:29:42
boolean nulo Sick boy Conexión con bases de datos 7 05-12-2003 16:40:37


La franja horaria es GMT +2. Ahora son las 11:46:38.


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
Copyright 1996-2007 Club Delphi