Ver Mensaje Individual
  #15  
Antiguo 17-10-2013
Avatar de FideRosado
FideRosado FideRosado is offline
Miembro
 
Registrado: jun 2010
Ubicación: Pinar del Rio Cuba
Posts: 146
Reputación: 14
FideRosado Va por buen camino
cambios en el codigo

he echo unos cambios y aca los comparto con ustedes..
en este pedazo colorea denuevo los paneles creados dentro sel srolbox para que mantenda un estilo en la aplicacion..

Código Delphi [-]
function ColoreaPanels(SB: TScrollBox): string;
var i,j: Integer;
begin
  Result := '';
  changecolor := 0;
  for i:= 0 to SB.ControlCount - 1 do
  begin
    if SB.Controls[i] is TRzPanel then
    begin
      if changecolor = 0 then
      begin
        if TRzPanel( SB.Controls[i] ).Color <> $00F0E7E1 then
        begin
          TRzPanel( SB.Controls[i] ).Color:=$00F7F7F7;
        end;
        changecolor:=1;
      end
      else
      if changecolor = 1 then
      begin
        if TRzPanel( SB.Controls[i] ).Color <> $00F0E7E1 then
        begin
          TRzPanel( SB.Controls[i] ).Color:=clBtnHighlight;
        end;
        changecolor:=0;
      end;
    end;
  end;
end;

aca crea un checkbox que me marque todos los de su tipo en el area que kieran ..
Código Delphi [-]
procedure TForm1.RzCheckBox1Click(Sender: TObject);
begin
  if RzCheckBox1.Checked then
  begin
    CheckAllPanels(ScrollBox1, true );
  end
  else
  begin
    CheckAllPanels(ScrollBox1, false );
  end;
end;

function CheckAllPanels(SB: TScrollBox; condition: Boolean ): string;
var i,j: Integer;
begin
  Result := '';
  for i:= 0 to SB.ControlCount - 1 do
  begin
    if SB.Controls[i] is TRzPanel then
    begin
      for j:= 0 to TRzPanel(SB.Controls[i]).ControlCount-1 do
      begin
        if TRzPanel(SB.Controls[i]).Controls[j] is TRzCheckBox then
        begin
          TRzCheckBox(TRzPanel(SB.Controls[i]).Controls[j]).Checked := condition;
        end;
      end;
    end;
  end;
end;

cuando pense en eliminar el panel dentro de el area, pence en hacerlo de muchas formas, pero me he despertado de buena gana y mente , aqui puedes mandar a buscar el panel por su nombre y luego eliminarlo, asi no hay que hacer un for...
Código Delphi [-]
procedure TForm1.RzPanel15Click(Sender: TObject);
var u,h:integer;
  n,m: string;
var t:TControl;
begin
  n := ActiveCheckBoxes(ScrollBox1);
  if n <> '' then
  begin
    u:= CharCount(n,'|');
    for h:= 1 to u do
    begin
      m:= GetToken( n, '|' , h );
      // t.Name:= m; t := ScrollBox1.FindChildControl(m);
      if t is TControl then
      begin
        // ShowMessage('se lozalizo el control ' + t.Name);
        t.Free; RzCheckBox1.Checked:=false;
      end
      else
      begin
        ShowMessage('No se lozalizo el control ' + t.Name);
      end;
    end;
    ColoreaPanels(ScrollBox1);
  end;
end;

Última edición por ecfisa fecha: 17-10-2013 a las 22:40:50. Razón: Corregir problema Interfaz mejorada
Responder Con Cita