Postagens

Mostrando postagens com o rótulo Delphi

Manipule mensagens Broadcast no Delphi

Imagem
  Broadcasts são mensagens enviadas pelo sistema operacional Android para notificar os aplicativos sobre eventos importantes do sistema, como mudanças no estado da bateria, conexões de rede, eventos de SMS, entre outros. Esses broadcasts são enviados em nível de sistema, o que significa que todos os aplicativos instalados no dispositivo podem receber essas mensagens e agir de acordo com elas. O componente DelphiAndroidBroadcastReceiver foi desenvolvido com o objetivo de facilitar o processo de recebimento e processamento de broadcasts no Delphi, permitindo que os desenvolvedores implementem de forma fácil e rápida a lógica de negócio necessária para responder a esses eventos do sistema. O componente é fácil de usar e pode ser adicionado ao formulário do Delphi arrastando e soltando o componente na janela de design. O componente possui uma propriedade chamada "Actions", que permite que o desenvolvedor adicione eventos personalizados para responder aos diferentes tipos de broad...

Delphi+Android : Evitando travamento do APP ao rotacionar a tela

Salve pessoal, Depois de muito tempo estou de volta. Muito trabalho e pouco tempo! Essa dica vai para quem criou um app Android com Delphi XE8+ ou migrou para uma nova versão da IDE e sua aplicação trava ou encerra subitamente ao rotacionar a tela. A solução é simples: Basta editar o template do seu android.manifest: siga os passos: Vá na pasta dos fontes do seu projeto Edite o arquivo "AndroidManifest.template.xml" no Wordpad, Sublime ou qualquer outro editor. Localize a linha:  android:configChanges= Possivelmente essa linha estará assim:  android:configChanges="orientation|keyboardHidden" Agora, modifique para  android:configChanges="orientation|keyboardHidden |screenSize " Salve e dê um novo "Build" na sua aplicação. Problema resolvido! Desse modo você evita que a aplicação reinicie a cada mudança de rotação da tela.  Até a próxima!

TMemoryStream: Resolva o problema para imagens grandes

Essa dica vai ajudar muita gente! Já aconteceu com você de precisar transferir uma imagem (principalmente JPEG) ou qualquer outro Stream (seja via datasnap ou qualquer outro meio) e se deparar com vários erros gerados pelo Delphi? Um deles é o "Out of memory while expanding..." Acontece que o TMemoryStream só aceita até 40kb, segundo o docwiki da embarcadero e isso é um problema sério pra nós programadores. Mas vamos lá, sem mais, declare a função abaixo no seu código e quando for salvar ou carregar seu Stream, use-a. Vou dar exemplos abaixo. function CopyStream( const source: TStream ): TStream; //resolve o problema de memory stream com mais de 40kb var BytesRead: Integer; Buffer: PByte; const MaxBufSize = $F000; begin { ** Criando a instância do objeto TMemoryStream para retorno do método ** } result := TMemoryStream.Create; { ** Reposicionando o stream para o seu início ** } source.Seek( 0, TSeekOrigin.soBeginning ); sou...

Capitalizar Strings no Delphi

Pessoal, segue uma função para quem quiser colocar somente a primeira letra maiúscula na string. Legal para padronizar descrições em cadastros. function Capitaliza(const s: string): string; //capitaliza a string passada como parametro var   flag: boolean;   i : Byte;   t : string; BEGIN   flag := TRUE;   t := '';   for i := 1 to LENGTH(s) do   begin     if flag then       AppendStr(t, UpCase(s[i]))     else       AppendStr(t, s[i]);     flag := (s[i] = ' ')   end;   Result := t end ;

Validar CPF/CNPJ e CEI no Delphi

Esta função valida o CNPJ/CPF ou CEI passado como parâmetro, retornando ou não uma mensagem de erro ao usuário. Ela usa a função somentenumerosnastring, postado anteriormente. Aconselho formatar o Cnpj/CPF direto no banco numa trigger beforeinsert/update, usando a Stored procedure postada anteriormente

Retornar somente números na string

Essa função retorna somente números passados na string. Útil para validação de documentos, testes,etc. function ApenasNumerosNaString(pStr:String): String; //Converte uma cadeia de string onde se tenha numeros e caracteres em uma cadeia de strings onde so tenha numeros Var   I: Integer; begin   Result := '';   For I := 1 To Length(pStr) do    If pStr[I] In ['1','2','3','4','5','6','7','8','9','0'] Then      Result := Result + pStr[I]; end ;

Resolvendo Runtime Error 216 ao instalar RAD/Delphi XE e XE2

[Portugese and English] Provavelmente alguem já passou por este problema ou vai passar: Ter as versões RAD/Delphi XE2 e XE instaladas na mesma máquina e após a instalação a IDE do XE não inicializar com o erro abaixo: Nome do evento do problema:   APPCRASH Nome da aplicação:   bds.exe Versão da aplicação:   15.0.3953.35171 Nome do módulo com erro :   coreide150.bpl e em seguida: Runtime error 216 at 20A784BF Resolução: O problema está nos Arquivos Comuns (Common Files) das duas IDE´s. Você deve especificar caminhos diferentes na instalação das duas para que não haja conflito. Se você já instalou o XE2 e tem o XE instalado, terá que remover os dois e reiniciar a máquina Veja se não existe nenhum lixo que a instalação não apagou na pasta Common Files (C:\Program Files (x86)\Embarcadero\RAD Studio\8.0 e 9.0). Se houver, delete. Instale o XE e na tela que pedir os caminhos de CommonFiles informe outro endereço sempre dentro da past...

Formatar telefone no Delphi

Esta função formata o telefone digitado em diversos formatos, a partir da quantidade de dígitos do valor passado como parâmetro. Use na função onexit do seu TEdit

Chamar um programa e esperar a finalização

Para executar um programa e esperar até esse programa finalizar, use a rotina abaixo: Acrescente na cláusula  uses  as units:  uses System,Windows,SysUtils; function Executa (Arquivo : String; Estado : Integer) : Integer; var

Abreviando nomes no Delphi

Dica para quem quer abreviar nomes no Delphi function AbreviaNome(Nome: String): String; var   Nomes: array[1..20] of string;   i, TotalNomes: Integer;

RAD XE2 (Delphi, RAD PHP e C++). Primeiras impressões

Imagem
por Nilcemar Ferreira Pessoal, depois de voltar do Delphi Tour em BH com Adreano Lanusse, fiquei muito empolgado na revolução que o novo RAD XE2 vai trazer para nós, dephinianos. O principal: Windows, MacOS, iOS tudo numa mesma IDE! Veja algumas novidades:

Cuidados ao usar o OnExit

É comum fazermos uso do evento OnExit quando queremos validar o conteúdo de um Edit. E essa pode ser uma boa prática quando necessitamos verificar o que foi digitado apenas quando o usuário terminar de fazer a entrada de dados, como, por exemplo, um Edit que vai receber o CPF ou CNPJ. Ao colocarmos um código qualquer no evento OnExit ele sempre será executado quando o usuário sair do Edit, o que acontece quando ele pressiona a tecla TAB, clica com o mouse em um outro Edit ou pressiona um botão OK, por exemplo:

Trocando a cor de uma célula num DBGrid

Este código é útil para se trocar a cor de uma única célula no DbGrid, para se destacar, por exemplo um valor editado manualmente numa tabela de pedidos.  [Continue lendo]

"Clicando" um componente sem clicar nele

1 - Insira um ListBox e preencha-o com alguns itens; 2 - Insira um botão qualquer; 3 - No evento OnDblClick do ListBox, digite: Button1.Perform(WM_LBUTTONDOWN, 0, 0);

Centralizando uma string

Function Center(StrX : string; IntX : ShortInt) : string; begin    Center := Middle (StrX, IntX, EspacoBranco); end;

Alterar fonte do hint

Para testar este exemplo inclua no seu form alguns componentes. Nestes componentes coloque informações na propriedade Hint de cada componente e altere a propriedade ShowHint para True.