Fórum Dificuldades com o PocketStudio #407440

08/09/2011

0

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

Carlos Rocha

Responder

Posts

08/09/2011

Carlos Rocha

Observei dua coisas: Quando gravo um registro com os script abaixo:  
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;
Ao ser chamado a função de gravar através do botão novo:
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;
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?
Responder

Gostei + 0

13/09/2011

Micheus

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
Responder

Gostei + 0

13/09/2011

Micheus

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. 
Responder

Gostei + 0

13/09/2011

Carlos Rocha

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:
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?
Responder

Gostei + 0

13/09/2011

Carlos Rocha


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.
Responder

Gostei + 0

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

Aceitar