Dificuldades com o PocketStudio
Olá pessoal.
Sou iniciante em PocketStudio e preciso de uma orientação de vocês;
Estou usando o PocketStudio de modo semelhante ao Delphi.
Um form só para novo registro e ediçao.
Gravar, grava normal. Porem, 3 erros acontecem.
1) Ápós Gravar ou Editar, a navegar entre os registros, quando chega no primeiro o no último, da erro do Pocket.
2) Após fechar o Pocket e abrir de novo, os registros somem.
Como posso concertar isso?
Segue o código:
unit frmCadEntrevistados;
interface
uses PSL, funcoes_globais;
const
formCadEntrevistados = AutoID;
function Valida : Boolean;
function HandleEvent(var Event: EventType): Boolean;
procedure CarregaDados;
Procedure Limpar;
var
DBEntrevistadosTipo: TDatabase;
implementation
uses
frmPrincipal, DBEntrevistados;
const
btnPrincipal = AutoID;
LabelNome = AutoID;
LabelIdade = AutoID;
LabelSexo = AutoID;
LabelProfissao = AutoID;
LabelEstado = AutoID;
LabelCidade = AutoID;
LabelEndereco = AutoID;
LabelBairro = AutoID;
FieldNome = AutoID;
FieldIdade = AutoID;
FieldSexo = AutoID;
FieldProfissao = AutoID;
FieldEstado = AutoID;
FieldCidade = AutoID;
FieldEndereco = AutoID;
FieldBairro = AutoID;
FieldId = AutoID;
btnIPrimeiro = AutoID;
btnAnterior = AutoID;
btnUltimo = AutoID;
btnProximo = AutoID;
btnGravar = AutoID;
btnLimpar = AutoID;
AlertConfirmacao = AutoID;
btnNovo = AutoID;
btnExcluir = AutoID;
LabelId = AutoID;
AlertError = AutoID;
resource
ALERT AlertError ERROR
BEGIN
TITLE 'M130'
MESSAGE '^1'
BUTTONS 'OK'
END;
ALERT AlertConfirmacao {HELP String1} {DEFAULTBUTTON 0} CONFIRMATION
BEGIN
TITLE 'Confirmação'
MESSAGE '^1'
BUTTONS 'Sim' 'Não'
END;
FORM formCadEntrevistados AT (0 0 160 160) NOFRAME
BEGIN
TITLE 'Cadastro de Entrevistados'
LABEL LabelNome 'Nome:' AT (8 38)
LABEL LabelIdade 'Idade:' AT (8 50)
LABEL LabelSexo 'Sexo:' AT (8 62)
LABEL LabelProfissao 'Profiss'#227'o:' AT (8 74)
LABEL LabelCidade 'Cidade:' AT (8 86)
LABEL LabelEstado 'Estado:' AT (8 98)
LABEL LabelEndereco 'Endere'#231'o:' AT (8 110)
LABEL LabelBairro 'Bairro:' AT (8 122)
FIELD FieldId AT (53 25 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldNome AT (53 37 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldIdade AT (53 49 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldSexo AT (53 61 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldProfissao AT (53 73 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldCidade AT (53 85 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldEstado AT (53 97 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldEndereco AT (53 109 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldBairro AT (53 121 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
BUTTON btnIPrimeiro '<<' AT (6 145 18 10)
BUTTON btnAnterior '<' AT (10 132 18 10)
BUTTON btnUltimo '>>' AT (38 145 18 10)
BUTTON btnProximo '>' AT (35 132 18 10)
BUTTON btnGravar 'Gravar' AT (113 135 38 8)
BUTTON btnPrincipal 'Inicio' AT (5 17 148 10)
BUTTON btnLimpar 'Limpar' AT (63 135 38 8)
BUTTON btnNovo 'Novo' AT (67 146 38 8)
BUTTON btnExcluir 'Excluir' AT (109 146 38 8)
LABEL LabelId 'Id:' AT (8 26)
END;
procedure formCadEntrevistadosOpen;
begin
PSForm.Draw;
CarregaDados;
PSForm.SetFocus(FieldID);
end;
function formCadEntrevistadosCustomEvent: Boolean;
begin
Result := False;
end;
procedure btnPrincipalSelect;
begin
FrmGotoForm(formPrincipal);
Handled := True;
end;
procedure CarregaDados;
var
Buffer: Array[0..9-1] of Char; // Temporária
begin
StrIToA(Buffer, PSDatabase.FieldUInt16(DBEntrevistadosTipo, Entrevistado_ID));
PSField.SetText(FieldId, Buffer);
if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then
exit;
// load field values from database
PSField.SetText(FieldId, Buffer);
PSField.SetText(FieldNome, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_NOME));
PSField.SetText(FieldIdade, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_IDADE));
PSField.SetText(FieldSexo, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_SEXO));
PSField.SetText(FieldProfissao, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_PROFISSAO));
PSField.SetText(FieldCidade, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_CIDADE));
PSField.SetText(FieldEstado, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ESTADO));
PSField.SetText(FieldEndereco, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ENDERECO));
PSField.SetText(FieldBairro, PSDatabase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_BAIRRO));
PSForm.SetFocus(FieldID);
end;
procedure btnIPrimeiroSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.First(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
procedure btnAnteriorSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Prior(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
procedure btnProximoSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Next(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
procedure btnUltimoSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Last(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
Procedure Limpar;
Begin
PsField.SetText (FieldId, '');
PsField.SetText (FieldNome, '');
PsField.SetText (FieldIdade, '');
PsField.SetText (FieldSexo, '');
PsField.SetText (FieldProfissao, '');
PsField.SetText (FieldCidade, '');
PsField.SetText (FieldEstado, '');
PsField.SetText (FieldEndereco, '');
PsField.SetText (FieldBairro, '');
PSForm.SetFocus(FieldID);
end;
procedure btnGravarSelect;
var
Buffer: Array[0..9-1] of Char; // Temporária
begin
// Valida os campos do formulário
{ if not Valida then
exit;
}
// Se estivermos Incluindo colocamos o registro em modo de edição
if DBEntrevistadosInclui then
begin
PSDatabase.Append(DBEntrevistadosTipo);
end
else
PSDatabase.Edit(DBEntrevistadosTipo);
PSDatabase.SetFieldUInt16(DBEntrevistadosTipo, Entrevistado_ID, StrAToI(PSField.TextPtr(FieldId)));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_NOME, PSField.TextPtr(FieldNome));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_IDADE, PSField.TextPtr(FieldIdade));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_SEXO, PSField.TextPtr(FieldSexo));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_PROFISSAO, PSField.TextPtr(FieldProfissao));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_CIDADE, PSField.TextPtr(FieldCidade));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_ESTADO, PSField.TextPtr(FieldEstado));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_ENDERECO, PSField.TextPtr(FieldEndereco));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_BAIRRO, PSField.TextPtr(FieldBairro));
PSDatabase.Post(DBEntrevistadosTipo);
DBEntrevistadosInclui := false;
CarregaDados;
PSForm.SetFocus(FieldID);
End;
Function Valida : Boolean;
var
Buffer : array [0..8] of char;
Begin
Result := True;
PsField.Text (FieldId, Buffer, PsField.TextLength (FieldId + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Código do Entrevistado');
PsField.SetFocused (FieldId, True);
Result := False;
Exit;
End;
PsField.Text (FieldNome, Buffer, PsField.TextLength (FieldNome + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Nome do Entrevistado');
PsField.SetFocused (FieldNome, True);
Result := False;
Exit;
End;
PsField.Text (FieldIdade, Buffer, PsField.TextLength (FieldIdade + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a Idade do Entrevistado');
PsField.SetFocused (FieldIdade, True);
Result := False;
Exit;
End;
PsField.Text (FieldSexo, Buffer, PsField.TextLength (FieldSexo + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Sexo do Entrevistado');
PsField.SetFocused (FieldSexo, True);
Result := False;
Exit;
End;
PsField.Text (FieldProfissao, Buffer, PsField.TextLength (FieldProfissao + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a Profissão do Entrevistado');
PsField.SetFocused (FieldProfissao, True);
Result := False;
Exit;
End;
PsField.Text (FieldCidade, Buffer, PsField.TextLength (FieldCidade + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a Cidade do Entrevistado');
PsField.SetFocused (FieldCidade, True);
Result := False;
Exit;
End;
PsField.Text (FieldEstado, Buffer, PsField.TextLength (FieldEstado + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Estado do Entrevistado');
PsField.SetFocused (FieldEstado, True);
Result := False;
Exit;
End;
PsField.Text (FieldEndereco, Buffer, PsField.TextLength (FieldEndereco + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Endereco do Entrevistado');
PsField.SetFocused (FieldEndereco, True);
Result := False;
Exit;
End;
PsField.Text (FieldBairro, Buffer, PsField.TextLength (FieldBairro + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Bairro do Entrevistado');
PsField.SetFocused (FieldBairro, True);
Result := False;
Exit;
End;
End;
procedure excluir;
begin
if DBEntrevistadosInclui then
begin
ShowMessage ('Nada Selecionado');
end;
If FrmCustomAlert (AlertConfirmacao,'Deseja Sair do Cadastro de Entrevistados?','','') = 0 then
FrmGoToForm (FormPrincipal);
Exit;
PSDatabase.delete(DBEntrevistadosTipo);
DBEntrevistadosInclui:= True;
Limpar;
PSForm.SetFocus(FieldID);
end;
procedure btnLimparSelect;
begin
Limpar;
end;
procedure btnNovoSelect;
begin
// create a new record
if not PSDatabase.Append(DBEntrevistadosTipo) then
FrmCustomAlert(AlertError, 'Erro', '', '')
else
begin
DBEntrevistadosInclui:= True;
Limpar;
PSForm.SetFocus(FieldId);
end
end;
procedure btnExcluirSelect;
begin
excluir;
end;
function HandleEvent(var Event: EventType): Boolean;
begin
PSApplication.Event := @Event;
PSApplication.Handled := True;
if not formCadEntrevistadosCustomEvent then
case Event.eType of
ctlSelectEvent:
with Event.ctlSelect do
case controlID of
btnIPrimeiro:
btnIPrimeiroSelect;
btnAnterior:
btnAnteriorSelect;
btnUltimo:
btnUltimoSelect;
btnProximo:
btnProximoSelect;
btnGravar:
btnGravarSelect;
btnPrincipal:
btnPrincipalSelect;
btnLimpar:
btnLimparSelect;
btnNovo:
btnNovoSelect;
btnExcluir:
btnExcluirSelect;
else
PSApplication.Handled := False;
end;
frmOpenEvent:
formCadEntrevistadosOpen;
else
PSApplication.Handled := False;
end;
Result := PSApplication.Handled;
end;
end.
Carlos Rocha
Curtidas 0
Respostas
Carlos Rocha
08/09/2011
Observei dua coisas:
Quando gravo um registro com os script abaixo:
Ao ser chamado a função de gravar através do botão novo:
Junto como o registro que eu gravei, é gravado mais um como ID = 0 e o restante dos campos em branco.
Outra coisa que observei é que ao navegar, quando chego ou no ultimo ou no primeiro registro, dá erro no PALM OS EMULATOR. E o pior, se eu fechar o sistema e abrir de novo ele não grava os registros. Na visualização não há registros.
O que fazer?
procedure btnGravarSelect;
var
Buffer: Array[0..9-1] of Char; // Temporária
begin
// Valida os campos do formulário
{ if not Valida then
exit;
}
// Se estivermos Incluindo colocamos o registro em modo de inserção
if DBEntrevistadosInclui then
begin
PSDatabase.insert(DBEntrevistadosTipo);
end
else
PSDatabase.Edit(DBEntrevistadosTipo);
PSDatabase.SetFieldUInt16(DBEntrevistadosTipo, Entrevistado_ID, StrAToI(PSField.TextPtr(FieldId)));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_NOME, PSField.TextPtr(FieldNome));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_IDADE, PSField.TextPtr(FieldIdade));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_SEXO, PSField.TextPtr(FieldSexo));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_PROFISSAO, PSField.TextPtr(FieldProfissao));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_CIDADE, PSField.TextPtr(FieldCidade));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_ESTADO, PSField.TextPtr(FieldEstado));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_ENDERECO, PSField.TextPtr(FieldEndereco));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_BAIRRO, PSField.TextPtr(FieldBairro));
if PSDatabase.Post(DBEntrevistadosTipo) then
begin
Showmessage('Gravado com sucesso');
DBEntrevistadosInclui := false;
PSForm.SetFocus(FieldID);
end
else
begin
Showmessage('Erro na Gravação!');
end;
CarregaDados;
PSForm.SetFocus(FieldID);
End;
procedure btnNovoSelect; begin // create a new record if not PSDatabase.Append(DBEntrevistadosTipo) then FrmCustomAlert(AlertError, 'Erro', '', '') else begin DBEntrevistadosInclui:= True; Limpar; PSForm.SetFocus(FieldId); end end;
GOSTEI 0
Micheus
08/09/2011
Carlos, eu não conheço esta ferramenta, mas lembra muito o tempo em que se tinha que programar muito para conseguir algo. Baseado nisto, vou fazer os comentários abaixo:
1) Ápós Gravar ou Editar, a navegar entre os registros, quando chega no primeiro o no último, da erro do Pocket.
Olhando seu código:
procedure btnAnteriorSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Prior(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end; procedure btnProximoSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Next(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
Vemos que vc simplesmente testa se há registros no database, porém vc ainda precisaria testar se voce pode ou não mover-se - testar se vc já não teria atingido o início (BOF) ou o fim (EOF) do do database.
Com a ajuda do bom e velho Google, verifiquei que existem estas funções no "componente" que vc está usando. Assim, vc deve utilizá-las e isto deverá evitar o erro que vc mensionou:
procedure btnAnteriorSelect;
begin
if (PsDataBase.recordCount(DBEntrevistadosTipo) = 0) or
PSDatabase.Bof(DBEntrevistadosTipo) then
exit;
PsDataBase.Prior(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end; procedure btnProximoSelect;
begin
if (PsDataBase.recordCount(DBEntrevistadosTipo) = 0) or
PSDatabase.Eof(DBEntrevistadosTipoDBEntrevistadosTipoDBEntrevistadosTipo) then
exit;
PsDataBase.Next(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
Espero que isto lhe ajude.
Abraços
1) Ápós Gravar ou Editar, a navegar entre os registros, quando chega no primeiro o no último, da erro do Pocket.
Olhando seu código:
procedure btnAnteriorSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Prior(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end; procedure btnProximoSelect;
begin
if PsDataBase.recordCount(DBEntrevistadosTipo) = 0 then
exit;
PsDataBase.Next(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
Vemos que vc simplesmente testa se há registros no database, porém vc ainda precisaria testar se voce pode ou não mover-se - testar se vc já não teria atingido o início (BOF) ou o fim (EOF) do do database.
Com a ajuda do bom e velho Google, verifiquei que existem estas funções no "componente" que vc está usando. Assim, vc deve utilizá-las e isto deverá evitar o erro que vc mensionou:
procedure btnAnteriorSelect;
begin
if (PsDataBase.recordCount(DBEntrevistadosTipo) = 0) or
PSDatabase.Bof(DBEntrevistadosTipo) then
exit;
PsDataBase.Prior(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end; procedure btnProximoSelect;
begin
if (PsDataBase.recordCount(DBEntrevistadosTipo) = 0) or
PSDatabase.Eof(DBEntrevistadosTipoDBEntrevistadosTipoDBEntrevistadosTipo) then
exit;
PsDataBase.Next(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldID);
end;
Espero que isto lhe ajude.
Abraços
GOSTEI 0
Micheus
08/09/2011
p.s. que boardezinho ruim este heim? A única coisa que fiz foi mudar o fonte da parte do código e o post ficou esta m... Todo colorido e com varição no tipo e tamanho dos fontes.
GOSTEI 0
Carlos Rocha
08/09/2011
De fato não é bom mesmo não.
Bom, essa parte eu consegui.
Fiz algumas adptações ao código e resolveu
Porem, agora tem esse outro problemas:
Tenho a função abaixo:
Que valida dois campos do meu form.
Acontece que, quando deixo o campo vazio, o Message é disparado dizendo que o campo esta vazio. Porem, se eu colocar alguma coisa no campo, continua dizendo que esta vazio. O que será que pode ser isso?
Function Valida : Boolean;
var
Buffer : array [0..2] of char;
Begin
Result := True;
PsField.Text (FieldTitulo, Buffer, PsField.TextLength (FieldTitulo + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Titulo da Enquete');
PsField.SetFocused (FieldTitulo, True);
Result := False;
Exit;
End;
PsField.Text (FieldDataEnquete, Buffer, PsField.TextLength (FieldDataEnquete + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a data da Enquete');
PsField.SetFocused (FieldDataEnquete, True);
Result := False;
Exit;
End;
End;
Que valida dois campos do meu form.
Acontece que, quando deixo o campo vazio, o Message é disparado dizendo que o campo esta vazio. Porem, se eu colocar alguma coisa no campo, continua dizendo que esta vazio. O que será que pode ser isso?
GOSTEI 0
Carlos Rocha
08/09/2011
Segue o código todo:
unit frmCadEntrevistados;
interface
uses PSL;
const
formCadEntrevistados = AutoID;
function Valida : Boolean;
function HandleEvent(var Event: EventType): Boolean;
procedure CarregaDados;
procedure Limpar;
procedure habilitabotoes;
procedure desabilitabotoes;
procedure BtnNovoSelect;
var
DBEntrevistadosTipo: TDatabase;
implementation
uses
frmPrincipal, DBEntrevistados, frmCadastros;
const
LabelNome = AutoID;
LabelIdade = AutoID;
LabelSexo = AutoID;
LabelProfissao = AutoID;
LabelEstado = AutoID;
LabelCidade = AutoID;
LabelEndereco = AutoID;
LabelBairro = AutoID;
FieldNome = AutoID;
FieldIdade = AutoID;
FieldSexo = AutoID;
FieldProfissao = AutoID;
FieldEstado = AutoID;
FieldCidade = AutoID;
FieldEndereco = AutoID;
FieldBairro = AutoID;
BtnPrincipal = AutoID;
BtnPrimeiro = AutoID;
BtnAnterior = AutoID;
BtnUltimo = AutoID;
BtnProximo = AutoID;
BtnGravar = AutoID;
BtnLimpar = AutoID;
BtnNovo = AutoID;
BtnExcluir = AutoID;
BtnVoltar = AutoID;
AlertConfirmacao = AutoID;
AlertError = AutoID;
BtnCancelar = AutoID;
BmpDesabilita = AutoID;
BmpCancelar = AutoID ;
BmpVoltar = AutoID ;
BmpInicio = AutoID ;
BmpAnterior = AutoID ;
BmpProximo = AutoID ;
BmpFim = AutoID ;
BmpNovo = AutoID ;
BmpGravar = AutoID ;
BmpExcluir = AutoID ;
BmpProcurar = AutoID ;
resource
BITMAP BmpDesabilita 'img/Disable.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpCancelar 'img/Cancel.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpVoltar 'img/Return.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpInicio 'img/First.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpAnterior 'img/Previous.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpProximo 'img/Next.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpFim 'img/Last.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpNovo 'img/New.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpGravar 'img/Post.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpExcluir 'img/Delete.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
BITMAP BmpProcurar 'img/Search.bmp' DENSITY 72 DIRECTCOLOR TRANSPARENCY 0 0 ;
ALERT AlertError ERROR
BEGIN
TITLE 'M130'
MESSAGE '^1'
BUTTONS 'OK'
END;
ALERT AlertConfirmacao CONFIRMATION
BEGIN
TITLE 'Confirma'#231#227'o'
MESSAGE 'Deseja excluir o item selecionado?'
BUTTONS 'N'#227'o' 'Sim'
END;
FORM formCadEntrevistados AT (0 0 160 160) NOFRAME
BEGIN
TITLE 'Cadastro de Entrevistados'
BUTTON BtnPrimeiro '<<' AT (9 149 18 8)
BUTTON BtnAnterior '<' AT (9 138 18 8)
BUTTON BtnUltimo '>>' AT (33 149 18 8)
BUTTON BtnProximo '>' AT (33 138 18 8)
BUTTON BtnGravar 'Gravar' AT (114 138 38 8)
BUTTON BtnPrincipal 'Inicio' AT (9 17 142 10)
BUTTON BtnLimpar 'Limpar' AT (72 138 38 8)
BUTTON BtnNovo 'Novo' AT (72 149 38 8)
BUTTON BtnExcluir 'Excluir' AT (115 149 38 8)
BUTTON BtnVoltar '<<' AT (140 1 18 12)
BUTTON BtnCancelar 'Cancelar' AT (9 127 143 8)
LABEL LabelNome 'Nome:' AT (8 30)
LABEL LabelIdade 'Idade:' AT (8 42)
LABEL LabelSexo 'Sexo:' AT (8 54)
LABEL LabelProfissao 'Profiss'#227'o:' AT (8 66)
LABEL LabelCidade 'Cidade:' AT (8 78)
LABEL LabelEstado 'Estado:' AT (8 90)
LABEL LabelEndereco 'Endere'#231'o:' AT (8 102)
LABEL LabelBairro 'Bairro:' AT (8 114)
FIELD FieldNome AT (53 28 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldIdade AT (53 40 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldSexo AT (53 52 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldProfissao AT (53 64 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldCidade AT (53 76 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldEstado AT (53 88 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldEndereco AT (53 100 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
FIELD FieldBairro AT (53 112 100 14) UNDERLINED MAXCHARS 10 AUTOSHIFT
END;
procedure formCadEntrevistadosOpen;
begin
if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then
begin
BtnNovoSelect;
end
else
begin
habilitabotoes;
end;
PSForm.Draw;
CarregaDados;
PSForm.SetFocus(FieldNome);
end;
function formCadEntrevistadosCustomEvent: Boolean;
begin
Result := False;
end;
procedure BtnPrincipalSelect;
begin
FrmGotoForm(formPrincipal);
end;
procedure BtnPrimeiroSelect;
begin
PsDataBase.First(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldNome);
end;
procedure BtnAnteriorSelect;
begin
if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then
begin
exit;
end;
PSDataBase.Prior(DBEntrevistadosTipo);
if PSDataBase.Bof(DBEntrevistadosTipo) then
begin
PSDataBase.First(DBEntrevistadosTipo);
end;
CarregaDados;
PSForm.SetFocus(FieldNome);
end;
procedure BtnProximoSelect;
begin
if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then
begin
exit;
end;
PSDataBase.Next(DBEntrevistadosTipo);
if PSDataBase.Eof(DBEntrevistadosTipo) then
begin
PSDataBase.Last(DBEntrevistadosTipo);
end;
CarregaDados;
PSForm.SetFocus(FieldNome);
end;
procedure BtnUltimoSelect;
begin
PsDataBase.Last(DBEntrevistadosTipo);
CarregaDados;
PSForm.SetFocus(FieldNome);
end;
procedure BtnVoltarSelect;
begin
FrmGotoForm(formCadastros);
end;
procedure BtnCancelarSelect;
begin
DBEntrevistadosInclui:= False;
BtnAnteriorSelect;
PSForm.SetFocus(FieldNome);
habilitabotoes;
end;
procedure BtnLimparSelect;
begin
Limpar;
end;
procedure Limpar;
begin
PsField.SetText (FieldNome, '');
PsField.SetText (FieldIdade, '');
PsField.SetText (FieldSexo, '');
PsField.SetText (FieldProfissao, '');
PsField.SetText (FieldCidade, '');
PsField.SetText (FieldEstado, '');
PsField.SetText (FieldEndereco, '');
PsField.SetText (FieldBairro, '');
PSForm.SetFocus (FieldNome);
end;
procedure BtnNovoSelect;
begin
desabilitabotoes;
// create a new record
if not PSDatabase.Append(DBEntrevistadosTipo) then
FrmCustomAlert(AlertError, 'Erro', '', '')
else
begin
DBEntrevistadosInclui:= True;
Limpar;
PSForm.SetFocus(FieldNome);
end;
end;
procedure BtnExcluirSelect;
begin
//If FrmCustomAlert (AlertConfirmacao,'Deseja Sair do Cadastro de Entrevistados?','','') = 0 then
if FrmAlert(AlertConfirmacao)=0 then
begin
Exit;
end;
PSDatabase.Delete(DBEntrevistadosTipo);
if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then
begin
Limpar;
PSForm.SetFocus(FieldNome);
PSButton.SetEnabled(BtnExcluir,false);
habilitabotoes;
end
else
begin
CarregaDados;
PSForm.SetFocus(FieldNome);
habilitabotoes
end;
end;
procedure habilitabotoes;
begin
PSButton.SetEnabled(BtnAnterior,true);
PSButton.SetEnabled(BtnProximo,true);
PSButton.SetEnabled(BtnUltimo,true);
PSButton.SetEnabled(BtnPrimeiro,true);
PSButton.SetEnabled(BtnNovo,true);
PSButton.SetEnabled(BtnGravar,true);
PSButton.SetEnabled(BtnExcluir,true);
PSButton.SetEnabled(BtnLimpar,true);
PSButton.SetEnabled(BtnVoltar,true);
PSButton.SetEnabled(BtnPrincipal,true);
PSButton.SetEnabled(BtnCancelar,false);
end;
procedure desabilitabotoes;
begin
PSButton.SetEnabled(BtnAnterior,false);
PSButton.SetEnabled(BtnProximo,false);
PSButton.SetEnabled(BtnUltimo,false);
PSButton.SetEnabled(BtnPrimeiro,false);
PSButton.SetEnabled(BtnNovo,false);
PSButton.SetEnabled(BtnExcluir,false);
PSButton.SetEnabled(BtnVoltar,false);
PSButton.SetEnabled(BtnPrincipal,false);
PSButton.SetEnabled(BtnGravar,true);
PSButton.SetEnabled(BtnLimpar,true);
PSButton.SetEnabled(BtnCancelar,true);
end;
procedure BtnGravarSelect;
begin
if not Valida then
exit;
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_NOME, PSField.TextPtr(FieldNome));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_IDADE, PSField.TextPtr(FieldIdade));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_SEXO, PSField.TextPtr(FieldSexo));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_PROFISSAO, PSField.TextPtr(FieldProfissao));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_CIDADE, PSField.TextPtr(FieldCidade));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_ESTADO, PSField.TextPtr(FieldEstado));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_ENDERECO, PSField.TextPtr(FieldEndereco));
PSDatabase.SetFieldString(DBEntrevistadosTipo, Entrevistado_BAIRRO, PSField.TextPtr(FieldBairro));
if PSDatabase.Post(DBEntrevistadosTipo) then
begin
if DBEntrevistadosInclui = true then
begin
Showmessage('Gravado com sucesso');
CarregaDados;
habilitabotoes;
DBEntrevistadosInclui := false;
end
else
begin
Showmessage('Alterado com sucesso');
CarregaDados;
habilitabotoes;
end;
end
else
begin
Showmessage('Erro na Gravação!');
CarregaDados;
habilitabotoes;
exit;
end;
habilitabotoes;
End;
Function Valida : Boolean;
var
Buffer : array [0..8] of char;
Begin
Result := True;
PsField.Text (FieldNome, Buffer, PsField.TextLength (FieldNome + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Nome do Entrevistado');
PsField.SetFocused (FieldNome, True);
Result := False;
Exit;
End;
PsField.Text (FieldIdade, Buffer, PsField.TextLength (FieldIdade + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a Idade do Entrevistado');
PsField.SetFocused (FieldIdade, True);
Result := False;
Exit;
End;
PsField.Text (FieldSexo, Buffer, PsField.TextLength (FieldSexo + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Sexo do Entrevistado');
PsField.SetFocused (FieldSexo, True);
Result := False;
Exit;
End;
PsField.Text (FieldProfissao, Buffer, PsField.TextLength (FieldProfissao + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a Profissão do Entrevistado');
PsField.SetFocused (FieldProfissao, True);
Result := False;
Exit;
End;
PsField.Text (FieldCidade, Buffer, PsField.TextLength (FieldCidade + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha a Cidade do Entrevistado');
PsField.SetFocused (FieldCidade, True);
Result := False;
Exit;
End;
PsField.Text (FieldEstado, Buffer, PsField.TextLength (FieldEstado + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Estado do Entrevistado');
PsField.SetFocused (FieldEstado, True);
Result := False;
Exit;
End;
PsField.Text (FieldEndereco, Buffer, PsField.TextLength (FieldEndereco + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Endereco do Entrevistado');
PsField.SetFocused (FieldEndereco, True);
Result := False;
Exit;
End;
PsField.Text (FieldBairro, Buffer, PsField.TextLength (FieldBairro + 1));
If Buffer[0] = #0 then
Begin
Showmessage ('Preencha o Bairro do Entrevistado');
PsField.SetFocused (FieldBairro, True);
Result := False;
Exit;
End;
End;
procedure CarregaDados;
begin
//Se não tiver nenhum registro na tabela nada será feito
if PsDataBase.RecordCount(DBEntrevistadosTipo) = 0 then
begin
PSButton.SetEnabled(BtnExcluir,false);
exit;
end;
PsField.SetText(FieldNome, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_NOME));
PsField.SetText(FieldIdade, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_IDADE));
PsField.SetText(FieldSexo, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_SEXO));
PsField.SetText(FieldProfissao, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_PROFISSAO));
PsField.SetText(FieldCidade, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_CIDADE));
PsField.SetText(FieldEstado, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ESTADO));
PsField.SetText(FieldEndereco, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_ENDERECO));
PsField.SetText(FieldBairro, PsDataBase.FieldStringPtr(DBEntrevistadosTipo, Entrevistado_BAIRRO));
end;
function HandleEvent(var Event: EventType): Boolean;
begin
PSApplication.Event := @Event;
PSApplication.Handled := True;
if not formCadEntrevistadosCustomEvent then
case Event.eType of
ctlSelectEvent:
with Event.ctlSelect do
case controlID of
BtnPrimeiro:
BtnPrimeiroSelect;
BtnAnterior:
BtnAnteriorSelect;
BtnUltimo:
BtnUltimoSelect;
BtnProximo:
BtnProximoSelect;
BtnGravar:
BtnGravarSelect;
BtnPrincipal:
BtnPrincipalSelect;
BtnLimpar:
BtnLimparSelect;
BtnNovo:
BtnNovoSelect;
BtnExcluir:
BtnExcluirSelect;
BtnVoltar:
BtnVoltarSelect;
BtnCancelar:
BtnCancelarSelect;
else
PSApplication.Handled := False;
end;
frmOpenEvent:
formCadEntrevistadosOpen;
else
PSApplication.Handled := False;
end;
Result := PSApplication.Handled;
end;
end.
GOSTEI 0