sexta-feira, 8 de maio de 2009

Identificando o em qual Field está o Foco


Contador de acessoVisitas



Pra saber em qual fiel está o foco não é muito difícil, para isso iremos usar algumas API's do Palm OS.

Todas sa rotina estão dentro do arquivo PalmOS/Form.pas e serão elas:
FrmGetActiveForm - retorna o form ativo e sua declaração é function FrmGetActiveForm: FormPtr; external sysTrapFrmGetActiveForm;

FrmGetFocus - retorna o objeto ativo dentro do form. Sua declaração é function FrmGetFocus(const formP: FormPtr): UInt16; external sysTrapFrmGetFocus;

FrmGetObjectType - retorna o tipo de objeto, para sabermos se é um Field. Sua declaração é function FrmGetObjectType(const formP: FormPtr; objIndex: UInt16): FormObjectKind; external sysTrapFrmGetObjectType;

FrmGetObjectID - retorna o ID do Objeto focado, sua declaração é function FrmGetObjectId(const formP: FormPtr; objIndex: UInt16): UInt16; external sysTrapFrmGetObjectId;

Sendo assim, a função abaixo retorna o ID do Filed selecionado ou retorna 0 caso não haja nenhum filed focado.


function FieldFocuse: UInt16;
var
   frm: FormPtr;
   ffoc: UInt16;
begin
   result := 0;

   frm := FrmGetActiveForm;
   ffoc := FrmGetFocus(frm);
   if ffoc=noFocus then exit;
   if FrmGetObjectType(frm, ffoc)<>frmFieldObj then exit;
   result := FrmGetObjectID(frm, ffoc);
end;


O exemplo abaixo mostra como utilizar essa função, o código abaixo deixará invisível o campo Field que estiver focado.


   fieldFoc := FieldFocuse; // fieldFoc é uma variável do tipo UInt16;
   if fieldFoc <> 0 then PSField.Hide(fieldFoc);

Um comentário:

  1. Ola.
    Bom Dia.
    Será que voce poderia me arranjar um fonte de pocketstudio para eu estudar?
    Grato.
    Carlos Rocha
    carcleo@oi.com.br

    ResponderExcluir

Advogados
Visitas