Desenvolvimento - Mobile

HB++: Utilizando MsgBox em Português e outros idiomas

O sistema operacional Palm OS possui um recurso nativo conhecido como Alert, e que no Handheld Basic pode ser utilizado através da função MsgBox.

por Caio Proiete



MsgBox em Português

Introdução

O sistema operacional Palm OS possui um recurso nativo conhecido como Alert, e que no Handheld Basic pode ser utilizado através da função MsgBox. Estes Alerts são utilizados para exibir simples caixas de diálogo com mensagens de alerta, informação, erro ou para pedir a confirmação do usuário antes de executar alguma ação.

Conceito

A função responsável por mostrar estas caixas de diálogo é a MsgBox, que recebe como parâmetro o texto a ser mostrado para o usuário, o tipo do diálogo (Informação, Erro, Confirmação, Aviso) combinado com as opções de resposta do usuário (OK, Cancelar, Sim, Não) e o título da caixa de diálogo. Exemplo:

MsgBox Exemplo

    MsgBox "Mensagem de Alerta", hbMsgBoxWarning + hbMsgBoxOKCancel, "Alerta"

Parâmetros e Combinações

O Palm OS possui 4 (quatro) tipos diferentes de Alerts, e cada um deles está representado por uma das variáveis constantes abaixo:

  • hbMsgBoxInformation
    Informação
  • hbMsgBoxConfirmation
    Confirmação
  • hbMsgBoxWarning
    Aviso / Alerta
  • hbMsgBoxError
    Erro

Juntamente com os tipos de Alerts, podemos combinar opções de resposta para o usuário:

  • hbMsgBoxDoneOnly - Exibe apenas o botão "Done" ("OK" para Português do Brasil e "Terminado" para Português de Portugal);
  • hbMsgBoxOKCancel - Exibe os botões "OK" e "Cancel" ("OK" e "Cancelar" para Português do Brasil e "OK" e "Anular" para Português de Portugal);
  • hbMsgBoxYesNo - Exibe os botões "Yes" e "No" ("Sim" e "Não");
  • hbMsgBoxYesNoCancel - Exibe os botões "Yes", "No" e "Cancel" ("Sim", "Não" e "Cancelar" ou "Anular").

Detectando a Resposta do Usuário

A função MsgBox retorna um valor do tipo , que corresponde à opção que o usuário escolheu. Os possíveis valores são:

  • hbMsgBoxDone - Usuário clicou em "Done" ("OK" ou "Terminado" em Português);
  • hbMsgBoxYes - Usuário clicou em "Sim";
  • hbMsgBoxNo - Usuário clicou em "Não";
  • hbMsgBoxOk - Usuário clicou em "OK";
  • hbMsgBoxCancel - Usuário clicou em "Cancel" ("Cancelar" ou "Anular" em Português);

Por exemplo, para verificar o resultado de um pedido de confirmação do usuário:

MsgBox Exemplo

    Dim resposta As HbMsgBoxReturn
    resposta = MsgBox("Mensagem de Confirmação", hbMsgBoxConfirmation + hbMsgBoxYesNo, "Confirmação")

    If (resposta = hbMsgBoxYes) Then
        MsgBox "Usuário selecionou "Sim"", hbMsgBoxInformation, "Sim"
    
    ElseIf (resposta = hbMsgBoxNo) Then
        MsgBox "Usuário selecionou "Não"", hbMsgBoxInformation, "Não"
    End If

Utilizar MsgBox em Diferentes Idiomas

Por padrão, o Handheld Basic possui suporte aos idiomas Inglês, Espanhol, Francês, Alemão, Italiano, Holandês e Português de Portugal. Para alterar o idioma que será utilizado no projeto, e que consequentemente irá alterar as descrições dos botões utilizados pela função MsgBox, vá ao menu "Project / Settings", localize a aba "Locale" e selecione o idioma desejado. Lembre-se de alterar o idioma nas duas configurações: "Debug" e "Release".

Selecionar Idioma/Localização para o Projeto

Utilizar MsgBox em Português do Brasil

Como vimos acima, o Português do Brasil não é suportado por padrão pelo Handheld Basic, pelo menos até a versão 2.11, que é a mais recente na data da publicação deste artigo. Para contornar este problema, precisaremos apenas definir as descrições para o nosso idioma em um arquivo de configuração do Handheld Basic. Desta forma, localize a pasta onde foi instalado o HB++ (Normalmente C:\Arquivos de Programas\HB++ 2.0) e abra o arquivo "locale.dat" em um editor de textos, como por exemplo o Bloco de Notas padrão do Windows.

Adicionar Idioma no Handheld Basic

Em seguida, copie e cole o código abaixo para o final do arquivo. Note ainda que você pode mudar as descrições se desejar.

"--------------- Portuguese (Brazil) -------------------------

begin locale 1046

"Opções do MsgBox
  done      = "OK"
  ok        = "OK"
  cancel    = "Cancelar"
  yes       = "Sim"
  no        = "Não"

"Dias da semana utilizados no calendário
  day_1     = "Domingo",        "Dom"
  day_2     = "Segunda-feira",  "Seg"
  day_3     = "Terça-feira",    "Ter"
  day_4     = "Quarta-feira",   "Qua"
  day_5     = "Quinta-feira",   "Qui"
  day_6     = "Sexta-feira",    "Sex"
  day_7     = "Sábado",         "Sáb"

"Meses do ano utilizados no calendário
  month_1   = "Janeiro",        "Jan"
  month_2   = "Fevereiro",      "Fev"
  month_3   = "Março",          "Mar"
  month_4   = "Abril",          "Abr"
  month_5   = "Maio",           "Mai"
  month_6   = "Junho",          "Jun"
  month_7   = "Julho",          "Jul"
  month_8   = "Agosto",         "Ago"
  month_9   = "Setembro",       "Set"
  month_10  = "Outubro",        "Out"
  month_11  = "Novembro",       "Nov"
  month_12  = "Dezembro",       "Dez"

Grave as alterações, e reinicie o Handheld Basic para que as alterações no arquivo sejam carregadas. Abra seu projeto, vá ao menu "Project / Settings" e perceba que agora o idioma "Português (Brasil)" já aparece na lista.

MsgBox em Português

Adicionar Outros Idiomas

Repetindo o procedimento acima, podemos adicionar muitos outros idiomas para serem utilizados em seus projetos. Cada idioma é definido por um número conhecido como Locale ID (Identificação da Localização). Por exemplo, o Locale ID do idioma Português (Brasil) é 1046, enquanto o Locale ID do idioma Português (Portugal) é 2070. Assim, para adicionar novos idiomas, basta utilizar a tabela abaixo, que contém todos os idiomas suportados pelo Handheld Basic.

  • 1078 - Afrikaans
  • 1052 - Albanian
  • 5121 - Arabic - Algeria
  • 15361 - Arabic - Bahrain
  • 3073 - Arabic - Egypt
  • 2049 - Arabic - Iraq
  • 11265 - Arabic - Jordan
  • 13313 - Arabic - Kuwait
  • 12289 - Arabic - Lebanon
  • 4097 - Arabic - Libya
  • 6145 - Arabic - Morocco
  • 8193 - Arabic - Oman
  • 16385 - Arabic - Qatar
  • 1025 - Arabic - Saudia Arabia
  • 10241 - Arabic - Syria
  • 7169 - Arabic - Tunisia
  • 14337 - Arabic - U.A.E.
  • 9217 - Arabic - Yemen
  • 1069 - Basque
  • 1059 - Belarusian
  • 1026 - Bulgarian
  • 1027 - Catalan
  • 3076 - Chinese - Hong Kong
  • 2052 - Chinese - PRC
  • 4100 - Chinese - Singapore
  • 1028 - Chinese - Taiwan
  • 4 - Chinese
  • 1050 - Croatian
  • 1029 - Czech
  • 1030 - Danish
  • 2067 - Dutch - Belgium
  • 1043 - Dutch
  • 3081 - English - Australia
  • 10249 - English - Belize
  • 4105 - English - Canada
  • 6153 - English - Ireland
  • 8201 - English - Jamaica
  • 5129 - English - New Zealand
  • 7177 - English - South Africa
  • 11273 - English - Trinidad
  • 2057 - English - United Kingdom
  • 1033 - English - United States
  • 9 - English
  • 1061 - Estonian
  • 1080 - Faeroese
  • 1065 - Farsi
  • 1035 - Finnish
  • 2060 - French - Belgium
  • 3084 - French - Canada
  • 5132 - French - Luxembourg
  • 1036 - French - Standard
  • 4108 - French - Switzerland
  • 1084 - Gaelic - Scotland
  • 3079 - German - Austrian
  • 5127 - German - Lichtenstein
  • 4103 - German - Luxembourg
  • 1031 - German - Standard
  • 2055 - German - Switzerland
  • 1032 - Greek
  • 1037 - Hebrew
  • 1081 - Hindi
  • 1038 - Hungarian
  • 1039 - Icelandic
  • 1057 - Indonesian
  • 1040 - Italian - Standard
  • 2064 - Italian - Switzerland
  • 1041 - Japanese
  • 1042 - Korean
  • 1062 - Latvian
  • 1063 - Lithuanian
  • 1071 - Macedonian
  • 1086 - Malay - Malaysia
  • 1082 - Maltese
  • 1044 - Norwegian - Bokmål
  • 1045 - Polish
  • 1046 - Portuguese - Brazil
  • 2070 - Portuguese - Standard
  • 1047 - Raeto-Romance
  • 2072 - Romanian - Moldova
  • 1048 - Romanian
  • 2073 - Russian - Moldova
  • 1049 - Russian
  • 3098 - Serbian - Cyrillic
  • 1074 - Setsuana
  • 1051 - Slovak
  • 1060 - Slovenian
  • 2074 - Serbian
  • 11274 - Spanish - Argentina
  • 16394 - Spanish - Bolivia
  • 13322 - Spanish - Chile
  • 9226 - Spanish - Columbia
  • 5130 - Spanish - Costa Rica
  • 7178 - Spanish - Dominican Republic
  • 12298 - Spanish - Ecuador
  • 17418 - Spanish - El Salvador
  • 4106 - Spanish - Guatemala
  • 18442 - Spanish - Honduras
  • 2058 - Spanish - Mexico
  • 19466 - Spanish - Nicaragua
  • 6154 - Spanish - Panama
  • 15370 - Spanish - Paraguay
  • 10250 - Spanish - Peru
  • 20490 - Spanish - Puerto Rico
  • 1034 - Spanish - Standard
  • 14346 - Spanish - Uruguay
  • 8202 - Spanish - Venezuela
  • 1072 - Sutu
  • 2077 - Swedish - Finland
  • 1053 - Swedish
  • 1054 - Thai
  • 1073 - Tsonga
  • 1055 - Turkish
  • 1058 - Ukranian
  • 1056 - Urdu - Pakistan
  • 1066 - Vietnamese
  • 1076 - Xhosa
  • 1085 - Yiddish
  • 1077 - Zulu

Histórico

  • 08/06/2007 - Primeira versão deste artigo.
Caio Proiete

Caio Proiete - Diretor Técnico da PDAExpert Tecnologia, empresa especializada no desenvolvimento de softwares para PDAs e telefones celulares nas plataformas Palm OS, Windows Mobile, Symbian OS e J2ME.
http://www.pdaexpert.net