quinta-feira, 30 de abril de 2009

Como chamar outra aplicação


Contador de acessoVisitas


No Pocketstudio é possível chamar outra aplicação de dentro da sua, porém o palm não tem o mesmo conceito do windows de passear pelas aplicações mantendo-as abertas, sendo assim, você não poderá voltar a sua aplicação. Para isso, você terá que fechar a aplicação que foi aberta e iniciar a sua aplicação normalmente.

Para executarmos uma aplicação, precisaremos de duas funções:
DmFindDatabase - que se encontra dentro do arquivo PalmOS/DataMgr.pas ou seja na Unit DataMgr. Sua declaração é function DmFindDatabase(cardNo: UInt16; const nameP: PChar): LocalID; external sysTrapDmFindDatabase;

Essa função será responsável por localizar a aplicação pelo nome e nos retornar o dbID que será usado para executar a aplicação.

SysUIAppSwitch - que se encotra dentro do arquivo PalmOS/SystemMgr.pas ou seja Unit SystemMgr. Sua declaração é function SysUIAppSwitch(cardNo: UInt16; dbID: LocalID; cmd: UInt16; cmdPBP: MemPtr): Err; external sysTrapSysUIAppSwitch;

Essa fução será responsável pela execução da aplicação, de que passemos o dbID da aplicação desejada.

Então, a função para executar uma aplicação no Palm ficaria:


function exec (nameP: PChar): UInt16;
var
   dbID: LocalID;
begin
   dbID := DmFindDatabase(0, nameP);
   result := SysUIAppSwitch(0, dbID, sysAppLaunchCmdNormalLaunch, nil);
end;


Se a função não tiver sucesso na execução, ela retornará o número do erro, caso tenha sucesso retornará 0, mas não servirá pois a aplicação principal será fechada.

Como saber se um PDB está aberto


Contador de acessoVisitas


A função DmOpenDatabaseInfo retorna informações de uma base de dados aberta. Se a base de dados não estiver aberta, ela retorna um erro.

A função encontrasse dentro de PalmOS/DataMgr.pas ou seja na Unit DataMgr.

Sua declaração é:

function DmOpenDatabaseInfo(dbP: DmOpenRef; var dbIDP: LocalID; var openCountP, modeP, cardNoP: UInt16; var resDBP: Boolean): Err; external sysTrapDmOpenDatabaseInfo;


Logo a função seria:


function DBIsOpen (dbP: DmOpenRef): boolean;
var
   d: LocalID;
   o, m, c: UInt16;
   r: Boolean
begin
   result := (dmOpenDatabaseInfo(dbP, d, o, m, c, r) = 0)
end;

Mudando o título do form em tempo de execução


Contador de acessoVisitas


Para mudar o Title do form em tempo de execução no PocketStudio (Palm) basta usar a função FrmSetTitle da API do Palm OS.
Essa função encontra-se em PSL/PSForm.pas ou seja na unit PSForm e tem declaração FrmSetTitle(FrmGetActiveForm, Title);

Logo é só usar

PSForm.FrmSetTitle(Form, 'Novo Título');
Advogados
Visitas