Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-11-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
procedure para contenedores me da error

e modificado este procedure, que es para bloquear todos los controles edits dentros de un panel, para poder tener la opcion de controlar su propiedad Enabled ya sea en False o True, segun se requiera , pero para poder controlar todos los controles combobox, listbox, button que hace falta?

Código Delphi [-]
procedure Bloquear(Contenedor: TWinControl; Enabled:Boolean);
var i: integer;
begin
  for i := 0 to Contenedor.ControlCount - 1 do
    begin
      if Contenedor.Controls[i] is TEdit then TEdit(Contenedor.Controls[i]).Enabled:=Enabled
      else
       if Contenedor.Controls[i] is TWinControl then Bloquear(TWinControl(Contenedor.Controls[i]);

end;  end;

y la intencion es llamarlo asi

Código Delphi [-]
Bloquear(Panel1),True;

gracias por todo
aaaaaaaa ya recorde colo que corchetes y la palabra delphi al inicio y al final de cada codigo esperando que sea la forma correcta, si no fuera asi pido que me expliquen como hacerlo porfaaaaa

Última edición por ecfisa fecha: 20-11-2020 a las 23:39:32.
Responder Con Cita
  #2  
Antiguo 20-11-2020
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Hola, AlejandroCalica.

Tag de apertura: [ DELPHI ] (Sin espacios)
Tag de cierre: [ / DELPHI ] (Sin espacios)

El procedimiento que usas está validando específicamente a los TEdit para cambiar el valor de Enabled.

Te comparto este procedimiento. puede que te sea de utilidad para lo que necesitas

Código Delphi [-]
type
  TForm1 = class(TForm)
  //..
    procedure SetControlEnable(TheControl: TWinControl; Value: Boolean); overload;
    procedure SetControlEnable(TheControls: array of TWinControl; Value: Boolean); overload;
  //..
  end;

//..

procedure TForm1.SetControlEnable(TheControls: array of TWinControl; Value: Boolean);
  var
    i : Integer;
begin
  for i := 0 to High(TheControls) do
    SetControlEnable(TheControls[i], Value);
end;

procedure TForm1.SetControlEnable(TheControl: TWinControl; Value: Boolean);
  var
    i : integer;
begin
  for i := 0 to TheControl.ControlCount - 1 do
  begin
    if TheControl.Controls[i] is TWinControl then
      SetControlEnable(TWinControl(TheControl.Controls[i]), Value)
    else
      TheControl.Controls[i].Enabled := Value;
  end;

  TheControl.Enabled := Value;
end;

Código Delphi [-]
//Modificar solo un control
SetControlEnable(Edit1, not Edit1.Enabled);

//Modificar un contenedor y los controles que tenga. Por ej un Panel
SetControlEnable(Panel1, not Panel1.Enabled);

//Modificar varios controles y/o contenedores
SetControlEnable([Edit1, Panel1, Panel2], True);
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 21-11-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
agradecdo por tu aporte en este caso imagino que pueden entrar combobox, listbox y buttons verdad

Código Delphi [-]
//Modificar varios controles y/o contenedores
SetControlEnable([Edit1, Panel1, Panel2], True);

e estado realizando pruebas y esta parte creo la domine aunque me gustaria simplificarla un poco mas. te muestro
con este bloqueo todo el contenedor de controles

Código Delphi [-]
procedure TForm1.Bloquear(Contenedor: TWinControl; Enabled:Boolean);
var i: integer;
begin
 for i:= 0 to Contenedor.ControlCount - 1 do
//alguna sentencia para manejo de botones siguiente/ atras
Contenedor.Controls[i].Enabled :=Enabled;
end;

lo llamo de esta manera

Código Delphi [-]
form1.Bloquear(Panel1,true)   ;

y lo uso dentro de otra funcion con estructura case aquii todo el codigo que llevo


Código Delphi [-]
private
    { Private declarations }
  public

    { Public declarations }
  end;

var
  Form1: TForm1;
  Valor:Integer;
implementation

{$R *.dfm}
function campoCompleto(valores:array of string):boolean; overload;
var
  limite, rondin:integer;
begin
  try
    limite:=length(valores);
    //rondin:=0;
  except
    limite:=0;
    //rondin:=0;
  end;
  rondin:=0;
  result:=false;
  while rondin < limite do
  begin
    if (trim(valores[rondin]) = EmptyStr) then
    begin
      result:=false; //algun campo está incompleto
      rondin:=limite;
    end
    else
    begin
      result:=true;
      rondin:=rondin + 1;
    end;
  end;
end;

procedure TForm1.Bloquear(Contenedor: TWinControl; Enabled:Boolean);
var i: integer;
begin
 for i:= 0 to Contenedor.ControlCount - 1 do
//alguna sentencia para manejo de botones siguiente/ atras
Contenedor.Controls[i].Enabled :=Enabled;
end;


// Procedure to show the colour of a passed
procedure TForm1.SeleccionBase(Valor : integer);
begin
  Case Valor of
       1 :      //activar panel 1
       begin    //Modificar Registro
           form1.Bloquear(Panel1,true)   ;
           form1.Bloquear(Panel2,False)   ;
           form1.Button3.Enabled:=False;  //Editar y Guardar
           form1.Button4.Enabled:=True ; //siguiente del panel1
           form1.Button5.Enabled:=false; //siguiente del panel2
           form1.Button3.Caption:='Guardar...';
                                   end;
       2 :    //activar panel 2
       begin
           form1.Bloquear(Panel1,true)   ;
           form1.Bloquear(Panel2,true)   ;
           form1.Button3.Enabled:=False;  //Editar y Guardar
           form1.Button4.Enabled:=True ; //siguiente del panel1
           form1.Button5.Enabled:=True; //siguiente del panel2
           form1.Button3.Caption:='Guardar...';
                                   end;
       3 : //edits vacios en panel1
       begin
           form1.Bloquear(Panel1,True)   ;
           form1.Bloquear(Panel2,False)   ;
           form1.Button3.Enabled:=False; //Editar y Guardar
           form1.Button4.Enabled:=True;  //siguiente del panel1
           form1.Button5.Enabled:=False; //siguiente del panel2
           form1.Button3.Caption:='Modificar Registro';
           ShowMessage('Faltan algunos datos');
           beep;
           MessageBeep(MB_ICONERROR);
                                   end;
       4 : //edits vacios en panel2
       begin
           form1.Bloquear(Panel1,true)   ;
           form1.Bloquear(Panel2,True)   ;
           form1.Button3.Enabled:=False; //Editar y Guardar
           form1.Button4.Enabled:=True;  //siguiente del panel1
           form1.Button5.Enabled:=True; //siguiente del panel2
           form1.Button3.Caption:='Guardar...';
           ShowMessage('Faltan algunos datos');
           beep;
           MessageBeep(MB_ICONERROR);
                                   end;
       5 : //inicio
       begin
       form1.Bloquear(Panel1,False)   ;
       form1.Bloquear(Panel2,False)   ;
           form1.Button3.Enabled:=True;  //Editar y Guardar
           form1.Button4.Enabled:=False; //siguiente del panel1
           form1.Button5.Enabled:=False; //siguiente del panel2
           form1.Button3.Caption:='Modificar Registro';
                                   end;
       6 : //todo esta bien en panel 1 y 2
       begin
       form1.Bloquear(Panel1,False)   ;
       form1.Bloquear(Panel2,False)   ;
           form1.Button3.Enabled:=True;  //Editar y Guardar
           form1.Button4.Enabled:=False; //siguiente del panel1
           form1.Button5.Enabled:=False; //siguiente del panel2
           form1.Button3.Caption:='Guardar...';
                                   end;
  else ShowMessage('menos aqui!');
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
SeleccionBase(5);
Combobox3.ItemIndex:=2;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if (button3.Caption='Modificar Registro') then begin
//ejecuta
button3.Caption:='Guardar...';
 SeleccionBase(1); //cuando modifica
   end
   else begin
//todo igual
button3.caption:='Modificar Registro';
end; end;


procedure TForm1.Button4Click(Sender: TObject);
begin //mascota
if not campoCompleto([Edit1.text,Edit2.text,Edit3.text]) then
  begin       //si esta alguno vacio se queda en mascotas
  SeleccionBase(3);
    end
    else
   begin
   SeleccionBase(2);
   //si no hay vacos vamos a clients
  //revisa si no estan vacios pasa al siguiente de lo contrario no sale
 end; end;


procedure TForm1.Button5Click(Sender: TObject);
begin   //cliente
if not campoCompleto([Edit4.text,Edit5.text,Edit6.text]) then
  begin       //si esta alguno vacio se queda en cliente
   SeleccionBase(4);
    end
    else
   begin
   SeleccionBase(6);
   //si no hay vacos vamos a clients
  //revisa si no estan vacios pasa al siguiente de lo contrario no sale
 end; end;


 procedure TForm1.Button6Click(Sender: TObject);
begin//cancelar y todo regresa al principio
SeleccionBase(5);
end;

donde se me esta complicando un poco es en una funcion que verifique que los edits no esten vacios, los listbox y combobox tengan un item seleccionado, osea que en su propiedad text no este vacia, y que solo verifique los controles que esten dentro del tpanel seleccionado en caso de que esten todos llenos, podre pasar al siguente panel

tengo una funcion que solo revisa Edits y no e encontrado la forma de imprementar que revise listbox y combobox, espero me puedan ayudar con eso los mas expertos.

seguire aqui al pendiente

saludos
Responder Con Cita
  #4  
Antiguo 21-11-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 35
Poder: 0
AlejandroCalica Va por buen camino
mire los codigos que envaste y me pregunto si es posible que se modifique este

Código Delphi [-]
procedure TForm1.SetControlEnable(TheControls: array of TWinControl; Value: Boolean);
  var
    i : Integer;
begin
  for i := 0 to High(TheControls) do
    SetControlEnable(TheControls[i], Value);
end;

procedure TForm1.SetControlEnable(TheControl: TWinControl; Value: Boolean);
  var
    i : integer;
begin
  for i := 0 to TheControl.ControlCount - 1 do
  begin
    if TheControl.Controls[i] is TWinControl then
      SetControlEnable(TWinControl(TheControl.Controls[i]), Value)
    else
      TheControl.Controls[i].Enabled := Value;
  end;

  TheControl.Enabled := Value;
end;


con la finalidad de que pueda ser usado antecediendo un control padre como el Panel y poder usarlo para varar no solo la propiedad enabled sino quizas color o incluso el saber si existe un control vacio, creo esta seria la mejor manera de simplificar todo, controle un determinado grupo de controles, que tenga la faclidad de controlar su estado enabled y otras caracteristicas y que pudiera controlar todos los tipos de controles como son (edits,listbox,combobox y buttons). quien puede echarme la mano con esto jajajajajajajjajajajaaj
Responder Con Cita
  #5  
Antiguo 21-11-2020
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.039
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
La forma en que te expliqué lo hace sin tener que teclear, sino pulsando un icono:


Responder Con Cita
Respuesta



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
Componentes Dinamicos (contenedores) JULIOCTORRESG Varios 7 22-11-2020 00:48:39
Error en sotre procedure gplata MySQL 3 27-03-2014 22:03:14
Error en stored procedure jars SQL 2 19-08-2011 15:13:01
contenedores de diseño? creedence Gráficos 1 29-05-2008 20:03:35
Un procedure que capture un error alextmb Varios 1 15-05-2007 20:46:23


La franja horaria es GMT +2. Ahora son las 16:33:06.


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