Ver Mensaje Individual
  #6  
Antiguo 17-11-2017
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
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.

Este ejemplo cambia la leyenda y color del Label actualmente seleccionado como pides:
Código Delphi [-]
...
implementation {$R *.dfm}

var
  vLbs: array of TLabel;
  inx : Integer = 0;

procedure TForm1.FormCreate(Sender: TObject);
var
  i: Integer;
begin
  // buscar labels y agregarlos al arreglo
  for i := 0 to Self.ComponentCount-1 do
    if Self.Components[i] is TLabel then
    begin
      SetLength(vLbs, Length(vLbs)+1);
      vLbs[High(vLbs)] := TLabel(Components[i]);
    end;
  // leyenda y color del primer item
  TLabel(vLbs[Low(vLbs)]).Font.Color := clLime;
  TLabel(vLbs[Low(vLbs)]).Caption := TLabel(vLbs[Low(vLbs)]).Caption + ' Color verde';
  // leyenda y color de los items siguientes
  for i := Low(vLbs)+1 to High(vLbs) do
  begin
    TLabel(vLbs[i]).Font.Color := clYellow;
    TLabel(vLbs[i]).Caption := TLabel(vLbs[i]).Caption + ' Color amarillo';
  end;
  // el form recibe los eventos de teclado primero
  Self.KeyPreview := True;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  // cambiar leyenda y color del item previamente seleccionado
  TLabel(vLbs[inx]).Caption := Copy( TLabel(vLbs[inx]).Caption,1,
    Pos(' Color', TLabel(vLbs[inx]).Caption) ) + 'Color amarillo';
  TLabel(vLbs[inx]).Font.Color := clYellow;

  case Key of
    VK_DOWN: if inx < High(vLbs) then
               Inc(inx)
             else
               Inx := Low(vLbs);
    VK_UP  : if inx > Low(vLbs) then
               Dec(inx)
             else
               Inx := High(vLbs);
  end;

  // cambiar leyenda y color del item actualmente seleccionado
  TLabel(vLbs[inx]).Caption := Copy( TLabel(vLbs[inx]).Caption,1,
    Pos(' Color', TLabel(vLbs[inx]).Caption) ) + 'Color verde';
  TLabel(vLbs[inx]).Font.Color := clLime;
end;
El comportamiento es cíclico, es decir que si estas en el Label inferior y continuas presionando la tecla Down regresa al superior y viceversa con la tecla Up.

Muestra:



Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita