Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Ayuda limpiar contenido de controles (https://www.clubdelphi.com/foros/showthread.php?t=95944)

steelha 04-11-2022 18:35:37

Ayuda limpiar contenido de controles
 
Buenas, como el titulo dice necesito ayuda para limpiar los valores que contengan los controles como edit, memo, checkbox. Es como un reset para que todo este limpio. Se que debo hacer un bucle para cada control contenido en tab del page. El problema es que en el tab tengo tres (3) groupbox los cuales contienen los edit memo y dblookcombobox. Como le hago me conocimiento solo llega hasta el tab.

Código Delphi [-]
procedure TfrmPacientes.limpiar;
var
  sheet : TTabSheet;
  a,i   : Integer;
begin
   for i := 0 to PageControl1.ControlCount-1 do
   begin
      sheet := TTabSheet(PageControl1.Controls[i]);
      for a := 0 to sheet.ControlCount-1 do
      begin
        if sheet.Controls[a] is TMemo then
          (sheet.Controls[a] as TMemo).Text := '';

        if sheet.Controls[a] is TEdit then
          (sheet.Controls[a] as TEdit).Text := '';

        if sheet.Controls[a] is TDBComboBox then
          (sheet.Controls[a] as TDBComboBox).ItemIndex := -1;

        if sheet.Controls[a] is TCheckBox then
          (sheet.Controls[a] as TCheckBox).Checked := False;
      end;
   end;
end;

Encontré este código parecido al que busco pero no me limpia los valores

cualquier ayuda o comentario será de mucha ayuda

movorack 04-11-2022 20:57:36

¡Hola, steelha!

Cuando estás recorriendo los controles del control padre (PageControl), el solo puede observar los controles contenidos en el, los que en este caso serán los TabSheet. Para manipular los controles que se encuentran dentro de cada TabSheet debes volver a llamar la función pasando como parámetro el control padre correspondiente.

Este código puede que te sea de ayuda:

Código Delphi [-]
procedure TfrmPacientes.ResetControlValues(Parent: TWinControl);
  var
    i: integer;
begin
  if Parent.ControlCount <= 0 then
    Exit;

  for i := 0 to Parent.ControlCount - 1 do
  begin
    if Parent.Controls[i] is TMemo then
      (Parent.Controls[i] as TMemo).Lines.Clear
    else
    if Parent.Controls[i] is TEdit then
      (Parent.Controls[i] as TEdit).Clear
    else
    if Parent.Controls[i] is TComboBox then
      (Parent.Controls[i] as TComboBox).ItemIndex := -1
    else
    if Parent.Controls[i] is TCheckBox then
      (Parent.Controls[i] as TCheckBox).Checked := False
    else
    if Parent.Controls[i] is TWinControl then
      ResetControlValues((Parent.Controls[i] as TWinControl));
  end;
end;

procedure TfrmPacientes.limpiar;
begin
  ResetControlValues(PageControl1);
end;

steelha 04-11-2022 23:36:49

Muchas gracias movorack, lo hice como dices y funciono perfectamente ademas creo que me sera utili cuando quiera limpiar los de los demas tabsheet cuando lo necesite.


La franja horaria es GMT +2. Ahora son las 04:58:44.

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