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);
Ola.
ResponderExcluirBom Dia.
Será que voce poderia me arranjar um fonte de pocketstudio para eu estudar?
Grato.
Carlos Rocha
carcleo@oi.com.br