Ver Mensaje Individual
  #3  
Antiguo 20-11-2020
AlejandroCalica AlejandroCalica is offline
Miembro
 
Registrado: nov 2020
Posts: 37
Reputación: 0
AlejandroCalica Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola y bienvenido a Club Delphi

Por favor no olvides revisar nuestra guía de estilo.

Un ejemplo simple que hace uso de tres grupos de cinco Edits:
Código Delphi [-]
...
var
  grupo1 : TPoint = (X:1;Y:5);     // Edit1 ~ Edit5
  grupo2 : TPoint = (X:6;Y:10);    // Edit6 ~ Edit10
  grupo3 : TPoint = (X:11; Y:15);  // Edi11 ~ Edit15

// Verifica cadena vacía en Edits
function TForm1.CheckEditContents(const DH: TPoint):Boolean;
var
  i: Integer;
begin
  Result := True;
  for i := DH.X to DH.Y do
  begin
    if (TEdit(FindComponent('Edit'+IntToStr(i))).Text = '') then
    begin
      Result := False;
      Exit;
    end;
  end;
end;

// Activa o desactiva grupo de Edits
procedure TForm1.EnableDisableEdits(const DH: TPoint; Activo: Boolean);
var
  i: Integer;
begin
  for i := DH.X to DH.Y do
    TEdit(FindComponent('Edit'+IntToStr(i))).Enabled := Activo;
end;

// Activa~Desactiva grupo2 según grupo1
procedure TForm1.btnGrupo1Click(Sender: TObject);
begin
  EnableDisableEdits(grupo2, CheckEditContents(grupo1));
end;

// Activa~Desactiva grupo3 según grupo2
procedure TForm1.btnGrupo2Click(Sender: TObject);
begin
  EnableDisableEdits(grupo3, CheckEditContents(grupo2));
end;

// Activa~Desactiva grupo1 según grupo3
procedure TForm1.btnGrupo3Click(Sender: TObject);
begin
  EnableDisableEdits(grupo1, CheckEditContents(grupo3));
end;
...

Saludos
muchas gracias por la rapides pero tengo algunas dudas sobre el codigo

grupo1 : TPoint = (X:1;Y:5); // Edit1 ~ Edit5
grupo2 : TPoint = (X:6;Y:10); // Edit6 ~ Edit10
grupo3 : TPoint = (X:11; Y:15); // Edi11 ~ Edit15

entiendo que en estos 3 grupos estan almacenados los componentes de cada uno, lamentablemente estos controles no estan ordenados y algunas ocaciones existen no solo edit, sino combobox, listbox y algunos buttons, ue se puede hacer en el supuesto que varien los tipos de controles?

lo que si puede predesir es poser seleccionar digamos mmmm el edit1, edit3, edit11, edit25, combobox4 , listbox1, button1 forman parte de un grupo
digamos algo asi

Procedure Visor(Ctrls:Array of TControl; Enabled:Boolean);
var
C:TControl;
begin
for C in Ctrls do
C.Enabled:=Enabled;
end;

y lo llamo de esta manera

Visor([
Edit1,Edit2,Edit3,Edit4,Edit5,Edit6,
Combobox6,Combobox1,Combobox3,Combobox5,
Button8
], false

con ello puedo seleccionar los componentes que existen en un grupo en particular

la otra duda es sobre este codigo

function TForm1.CheckEditContents(const DH: TPoint):Boolean;
var
i: Integer;
begin
Result := True;
for i := DH.X to DH.Y do
begin
if (TEdit(FindComponent('Edit'+IntToStr(i))).Text = '') then
begin
Result := False;
Exit;
end;
end;
end;

este me determina cual de los controles de un grupo estan vacios? y por ende solo modifico esta pasrte del codigo

if (TEdit(FindComponent('Edit'+IntToStr(i))).Text = '') then

para yo seleccionar que propiedad es la que desido cambiar como el color del control para cambiar solo los controles vacios?

gracias por su atencion
Responder Con Cita