Fórum comandos basicos firemonkey #455054

12/09/2013

0

boa tarde, comecei estudar o firemonkey a pouco e nao estou conseguindo fazer os comandos basicos do delphi hehehehe segue minhas duvidas.

como setar o taborder dos objetos?
como passar o foco para o proximo componente (eu usava o selectNext)?
como deixar todas as letras do edit maiusculas?
como acionar o clik do botao via codigo (usava botao.clik)?

se poderem me ajudar agradeco
Daniel Thomaz

Daniel Thomaz

Responder

Posts

19/08/2015

Francis Silva

Eu criei um Class Helper para a classe TControl do Firemonkey para realizar a navegação entre os controles utilizando a TabOrder:


unit MyTabOrderClassHelper;

interfaces

uses 
  System, FMX.Types, FMX.Controls;

type
   TFMXControlClassHelper = class helper for TControl
    public
      procedure SelectNext(CurControl: TControl; GoFoward: Boolean);
    end;

implementation

procedure TFMXControlClassHelper.SelectNext(CurControl: TControl; GoFoward: Boolean);
  var
    tablist          : ITabList;
    next             : IControl;
    parente, controle: TControl;
  begin
    controle := CurControl;
    parente  := controle.ParentControl;
    repeat
      tablist := parente.GetTabList;
      next    := tablist.FindNextTabStop(controle, GoFoward, True);
      if (not Assigned(next)) or (TControl(next) = controle) then
      begin
        controle := parente;
        parente  := parente.ParentControl;
      end
      else
        Break;
    until parente = nil;

    if (Assigned(next)) then
      controle := TControl(next)
    else
      controle := nil;

    if (Assigned(controle)) then
      controle.SetFocus;
  end;


end.


Para utilizar o helper Inclua a unit MyTabOrderClassHelper na cláusula USES na seção INTERFACE.

Exemplo básico de utilização:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
var
  ControleAtivo: IControl;
begin
  ControleAtivo:= Screen.FocusControl;

  case Key of
    vkReturn:
      TControl(Self).SelectNext(TControl(ControleAtivo), True);
    vkTab:
      TControl(Self).SelectNext(TControl(ControleAtivo), (not (ssShift in Shift)));
  end;
end;


Testado com sucesso na versão XE7 em diante. Não testei nas versões anteriores, quem obtiver sucesso em versões anteriores por favor informe aqui para conhecimento de todos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar