Ofereço ajuda em Java, C/C++, Python, C#, LISP, AutoLisp, AutoCAD
+55 (062) 98553-6711
Ofereço ajuda em PHP, Python, C#, JavaScript, Laravel, Google Ads e SEO
+55 (062) 98243-1195

Você está aqui: Delphi ::: Dicas & Truques ::: Rotinas de Conversão

Como converter strings em valores TDateTime usando as funções StrToDate() e StrToDateDef() do Delphi

Quantidade de visualizações: 18351 vezes
A função StrToDate() da unit SysUtils é usada quando queremos converter strings em valores TDateTime. No Delphi 2009 esta função possui duas assinaturas:

function StrToDate(const S: string): TDateTime; overload;
function StrToDate(const S: string; const FormatSettings: 
  TFormatSettings): TDateTime; overload;


A primeira versão de StrToDate() recebe uma string contendo uma data e retorna um objeto TDateTime. Veja o seguinte trecho de código:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  data: string;
  data2: TDateTime;
begin
  // vamos converter a data 22/02/2005
  data := '22/02/2005';

  // a conversão acontece aqui. Note que, caso a conversão
  // não seja possível, uma exceção do tipo EConvertError será
  // disparada (lançada)
  try
    data2 := StrToDate(data);
    ShowMessage(DateTimeToStr(data2));
  except
    on e: EConvertError do
      ShowMessage('Não foi possível efetuar a conversão: ' +
        e.Message);
  end;
end;


Note que a função StrToDate() lançará uma exceção do tipo EConvertError se a string não possuir uma data válida. Os valores de strings representando datas válidas incluem mês/dia/ano, dia/mês/ano e ano/mês/dia. A ordem de dia, mês e ano é determinada pela variáve global ShortDateFormat. Se fornecermos valores apenas para o dia e o mês a função incluirá o ano atual. Não podemos esquecer a barra de separação de datas. Se seu aplicativo foi desenvolvido para rodar em outras localidades, obtenha o separador de datas por meio da variável global DateSeparator.

A primeira versão da função StrToDate() não é segura em relação a threads (thread-safe) devido ao uso de informações de localização contidas em variáveis globais, ou seja, se uma thread modificar os valores de tais variáveis, código sendo executado em outras threads sofrerão as consequencias. Para evitar isso podemos usar a segunda versão de StrToDate(), que usa um objeto FormatSettings para guardar as informações de localização. Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  data: string;
  data2: TDateTime;
  formato: TFormatSettings;
begin
  // vamos converter a data 22/02/2005
  data := '22/02/2005';

  // a conversão acontece aqui. Note que, caso a conversão
  // não seja possível, uma exceção do tipo EConvertError será
  // disparada (lançada)
  try
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formato);
    data2 := StrToDate(data, formato);
    ShowMessage(DateTimeToStr(data2));
  except
    on e: EConvertError do
      ShowMessage('Não foi possível efetuar a conversão: ' +
        e.Message);
  end;
end;

A função StrToDateDef() é similar à função StrToDate(). A diferença é que, se a string possuir uma data inválida, a função StrToDateDef() retorna uma data padrão, ou seja, não haverá nenhuma exceção atirada. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  data: string;
  data2: TDateTime;
begin
  // vamos converter a data 2s2/02/2005 (inválida)
  data := '2s2/02/2005';

  // a conversão acontece aqui. Note que, caso a conversão
  // não seja possível, a data atual será retornada
  data2 := StrToDateDef(data, Now);
  ShowMessage(DateTimeToStr(data2));
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.

Link para compartilhar na Internet ou com seus amigos:

Delphi ::: VCL - Visual Component Library ::: TListBox

Como retornar o item selecionado em uma ListBox do Delphi usando a propriedade ItemIndex

Quantidade de visualizações: 20303 vezes
O item selecionado em uma TListBox pode ser obtido fornecendo-se o índice do ítem selecionado como índice para a propriedade Items (do tipo TStrings) da ListBox. Veja como isso é feito no trecho de código abaixo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  item_selecionado: String;
begin
  // vamos obter o item selecionado na ListBox
  item_selecionado := ListBox1.Items[ListBox1.ItemIndex];

  // mostra o resultado
  ShowMessage('O item selecionado é: ' + item_selecionado);
end;

Contudo, este código provocará uma exceção do tipo EStringListError com a mensagem "List index out of bonds(-1)" se nenhum item estiver selecionado na ListBox. Para evitar tal erro, certifique-se de verificar se algum item foi selecionado antes de tentar obtê-lo. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  item_selecionado: String;
begin
  // vamos obter o item selecionado na ListBox
  if ListBox1.ItemIndex > -1 then
    begin
      item_selecionado := ListBox1.Items[ListBox1.ItemIndex];

      // mostra o resultado
      ShowMessage('O item selecionado é: ' + item_selecionado);
    end
  else
    ShowMessage('Nenhum item selecionado.');
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Delphi ::: Dicas & Truques ::: Matemática e Estatística

Delphi para matemática - Como arredondar valores de ponto-flutuante para cima usando a função Ceil()

Quantidade de visualizações: 16783 vezes
A função Ceil(), presente na unit Math, é útil quando queremos arrendondar valores de ponto-flutuante (valores com casas decimais) para cima, ou seja, para o menor inteiro maior ou igual ao valor fornecido. Veja um exemplo:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm2.Button1Click(Sender: TObject);
var
  valor: Real;
  resultado: Integer;
begin
  // uses Math

  valor := 8.3;

  // vamos arredondar o valor para cima
  // o resultado será 9
  resultado := Ceil(valor);

  // exibe o resultado
  ShowMessage('O valor arredondado para cima é: ' +
    IntToStr(resultado));
end;

Note que os valores 8.0001, 8.3, 8.1, 8.99, etc, serão todos arredondados para 9. No entanto, 8.0 é arredondado para 8.

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Delphi ::: VCL - Visual Component Library ::: TEdit

Como obter a quantidade de caracteres em um TEdit do Delphi usando a função GetTextLen()

Quantidade de visualizações: 12573 vezes
Em algumas ocasiões nós precisamos descobrir a quantidade de caracteres contidos em uma caixa de texto do tipo TEdit. Para isso podemos usar o método GetTextLen(), definido originalmente na classe TControl. Esta função retorna um valor inteiro contendo o tamanho do texto da caixa de texto.

Veja um exemplo do uso do método GetTextLen() no trecho de código a seguir:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  tamanho: Integer;
begin
  // vamos obter a quantidade de caracteres no TEdit
  tamanho := Edit1.GetTextLen();

  // vamos mostrar o resultado
  ShowMessage('O Edit contém ' + IntToStr(tamanho) + ' caracteres.');
end;

Ao executar este exemplo você terá um resultado parecido com:

O Edit contém 5 caracteres.


Delphi ::: Imagens, Gráficos e Cores ::: TCanvas (Classe TCanvas)

Computação gráfica em Delphi - Como desenhar linhas usando o método LineTo() da classe TCanvas do Delphi

Quantidade de visualizações: 16328 vezes
Podemos desenhar linhas em Delphi usando o método LineTo() da classe TCanvas. Este método desenha uma linha partindo da posição inicial da caneta (PenPos), ou seja, as coordenadas x e y iniciais, até as coordenadas finais que fornecemos ao método durante a realização do desenho.

Veja um exemplo no qual desenhamos uma linha horizontal no formulário:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm2.Button1Click(Sender: TObject);
var
  areaDesenho: TCanvas;
begin
  // este trecho de código mostra como desenhar uma
  // linha horizontal no formulário

  // vamos obter o canvas do formulário
  areaDesenho := Form2.Canvas;

  // vamos mover a caneta para as coordenadas x = 30; y = 100
  areaDesenho.MoveTo(30, 100);

  // vamos desenhar uma linha no formulário partindo
  // das coordenadas anteriores até as coordenadas
  // x = 300; y = 100
  areaDesenho.LineTo(300, 100);
end;

Note que, na maioria dos casos, este código é escrito de forma mais compacta:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm2.Button1Click(Sender: TObject);
begin
  // este trecho de código mostra como desenhar uma
  // linha horizontal no formulário

  // vamos obter o canvas do formulário
  with Form2.Canvas do
    begin
      // vamos mover a caneta para as coordenadas x = 30; y = 100
      MoveTo(30, 100);

      // vamos desenhar uma linha no formulário partindo
      // das coordenadas anteriores até as coordenadas
      // x = 300; y = 100
      LineTo(300, 100);
    end;
end;

É importante observar que a nova posição da caneta (propriedade PenPos) é definida ao final da chamada ao método LineTo().

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Delphi ::: VCL - Visual Component Library ::: TListBox

Como usar o controle TListBox em suas aplicações Delphi

Quantidade de visualizações: 13868 vezes
Objetos da classe TListBox, da unit StdCtrls, são controles do tipo lista de seleção. Este componente exibe uma lista com barras de rolagem contendo items que podem ser selecionados, adicionados ou excluídos. A classe TListBox é um wrapper (invólucro) para o controle LISTBOX da plataforma Windows. Em controles do tipo ListBox o usuário pode selecionar apenas um ítem ou vários itens de uma vez.

Em Delphi, a classe TListBox implementa o comportamento genérico definido em TCustomListBox. É esta classe que devemos usar para derivar nossa própria ListBox caso o controle TListBox não satisfaça as nossas necessidades. É claro que podemos partir de qualquer classe que herde de TCustomListBox.

A forma mais comum de adicionarmos um controle TListBox em nossos formulários é selecionando este componente na aba Standard e arrastando-o para a posição desejada na janela. Em seguida podemos adicionar itens na lista acessando sua propriedade Items, que são do tipo TStrings, ou seja, uma lista de strings. Ao clicarmos na propriedade Items no Object Inspector, um String List Editor será exibido. Basta inserir algumas strings nesta caixa de texto, pressionar o botão OK e verificar como o controle já exibe os itens que acabamos de inserir.

Em tempo de execução, itens podem ser adicionados à uma TListBox usando códigos parecidos com:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
begin
  // vamos inserir um novo item na TListBox
  ListBox1.Items.Add('Osmar J. Silva');
end;

Se precisarmos obter o texto do ítem selecionado em uma TListBox, podemos usar:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
begin
  // vamos obter o texto do item selecionado na TListBox
  ShowMessage(ListBox1.Items[ListBox1.ItemIndex]);
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Delphi ::: Fundamentos da Linguagem ::: Estruturas de Controle

Delphi para iniciantes: Como usar o laço de repetição for do Delphi

Quantidade de visualizações: 22111 vezes
O laço for do Delphi (linguagem Object Pascal) é usado quando queremos que um determinado bloco de instruções seja executado um determinado número de vezes. Na maioria das vezes a execução deste laço é controlada por uma variável de controle, que deve ser declarada antes de seu uso.

Veja um laço for que contará de 0 até 10 (incluído):

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer; // variável de controle
begin
  for i := 0 to 10 do
    begin
      ShowMessage(IntToStr(i)); // mostra a mensagem 10 vezes
    end;
end;

Veja que o valor da variável de controle i começa em 0 e é incrementado a cada iteração até que seu valor seja igual a 10, o que faz com que a execução do laço seja interrompida. A variável de controle de um laço for deve ser do tipo ordinal (inteiro, caractere, Boolean, enumerações ou sub-faixas) e não pode ser alterada dentro do laço. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer; // variável de controle
begin
  // este laço for pretende exibir os números pares de 0 a 10
  for i := 0 to 10 do
    begin
      ShowMessage(IntToStr(i));
      i := i + 2;  // vamos ter problemas aqui
    end;
end;

Ao tentarmos compilar este código teremos o seguinte erro:

[DCC Error] Unit1.pas(107): E2081 Assignment to FOR-Loop variable 'i'

Este erro nos informa que não é possível atribuir valor a uma variável de controle dentro do laço for. Se quisermos que o laço "conte" de trás para frente, podemos substituir a palavra-chave to por downto. Veja:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button3Click(Sender: TObject);
var
  i: Integer; // variável de controle
begin
  // este laço for conta de 10 até 0
  for i := 10 downto 0 do
    begin
      ShowMessage(IntToStr(i));
    end;
end;


Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Delphi ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI

Como retornar uma lista dos dispositivos de entrada MIDI no sistema usando Delphi

Quantidade de visualizações: 11186 vezes
Em algumas ocasiões nós precisamos obter uma lista dos dispositivos de entrada MIDI no sistema, talvez com o propósito de selecionar um determinado dispositivo em uma ListBox ou ComboBox. O trecho de código abaixo mostra como isso pode ser feito.

O primeiro passo é declarar uma variável do tipo TMidiInCaps. Este registro está declarado na unit MMSystem.pas e é uma tradução da estrutura MIDIINCAPS da API do Windows. Entre outros tipos de dados, esta estrutura possui um membro szPname que retorna o nome do dispositivo. Na unit MMSystem.pas este membro está declarado como array[0..MAXPNAMELEN-1] of AnsiChar, ou seja, uma matriz de AnsiChar que será preenchida pela API do Windows e terá seu final marcado com o caractere null (NULL terminated string). Note a conversão deste valor para o tipo String no momento de inserí-lo no ComboBox. Em versões anteriores do Delphi (estou escrevendo este código no Delphi 2009) podíamos usar a função StrPas() para esta finalidade.

O passo seguinte é obter a quantidade de dispositivos de entrada MIDI. Isso é feito com uma chamada à função midiInGetNumDevs da API do Windows. Uma vez obtida a quantidade de dispositivos nós usamos um laço for e, no corpo deste laço, usamos o valor da variável de controle i para efetuar uma chamada à função midiInGetDevCaps(), também da API do Windows:

midiInGetDevCaps(i, @MidiInCaps, sizeof(TMidiInCaps));

Esta função recebe o identificador do dispositivo (um valor inteiro começando em 0 e indo até a quantidade de dispositivos - 1), um ponteiro para um registro MidiInCaps e o tamanho em bytes do registro. Se a função for executada com sucesso, o registro MidiInCaps será preenchido com várias informações úteis, tais como o nome do dispositivo, o ID do fabricante, o ID do produto, versão do driver, etc.

Para finalizar, nós acessamos o campo szPname do registro MidiInCaps e o adicionamos no ComboBox. Veja o código completo a seguir:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  MidiInCaps: TMidiInCaps; // este record está definido em MMSystem.pas
  erro: Word;
begin
  // uses MMSystem  

  ComboBox1.Clear;
  // midiInGetNumDevs retorna a quantidade de dispositivos de entrada
  // MIDI no sistema
  for i := 0 to midiInGetNumDevs - 1 do
  begin
    // vamos obter o dispositivo identificado pela variável i (uDeviceID)
    erro := midiInGetDevCaps(i, @MidiInCaps, sizeof(TMidiInCaps));
    if erro <> MMSYSERR_NOERROR then
       raise Exception.Create('Não foi possível obter a lista de dispositivos ' +
         'de entrada MIDI');

    // vamos adicionar o nome do dispositivo no ComboBox
    ComboBox1.Items.Add(String(MidiInCaps.szPname));
  end;
end;

Ao executar este código o ComboBox será preenchido no mínimo com o valor:

MPU-401

Este é o MPU 401-compatible MIDI input port, um dos dispositivos de entrada MIDI mais comuns nos PCs, embora já não esteja tão presente nos computadores mais atuais.

Para fins de compatibilidade esta dica ou anotação foi escrita usando Delphi 2009.


Delphi ::: VCL - Visual Component Library ::: TStringGrid

Como centralizar os títulos das colunas (ou o conteúdo de qualquer célula) de um TStringGrid do Delphi

Quantidade de visualizações: 13610 vezes
Em algumas situações nós precisamos centralizar os títulos das colunas de um TStringGrid. Em geral os títulos das colunas são exibidos nas células da primeira linha fixa do TStringGrid. Nesta dica eu mostrarei a forma mais comum de alcançar este efeito. Note que a técnica pode ser usada para centraliar o conteúdo de qualquer célula da grid:

----------------------------------------------------------------------
Se precisar de ajuda para ajustar o código abaixo de acordo com as
suas necessidades, chama a gente no WhatsApp +55 (62) 98553-6711 (Osmar)

Ah, e se puder, faça uma DOAÇÃO de qualquer valor para nos ajudar
a manter o site livre de anúncios. Ficaremos eternamente gratos ;-)
Nosso PIX é: osmar@arquivodecodigos.com.br 
----------------------------------------------------------------------

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  conteudo: String;
  alinhamento_anterior: Word;
begin
  // vamos centralizar os títulos das colunas, ou seja, o conteúdo
  // das células na primeira linha
  if ARow = 0 then
    begin
      // vamos obter o conteúdo da célula
      conteudo := (Sender as TStringGrid).Cells[ACol, ARow];

      // vamos obter o alinhamento atual
      alinhamento_anterior := SetTextAlign((Sender as TStringGrid).Canvas.Handle,
        TA_CENTER);

      // vamos colocar o conteúdo de volta na célula
      (Sender as TStringGrid).Canvas.TextRect(Rect,
        Rect.Left + (Rect.Right - Rect.Left) div 2, Rect.Top + 5, conteudo);

      // vamos voltar o alinhamento anterior para as demais células
      SetTextAlign((Sender as TStringGrid).Canvas.Handle, alinhamento_anterior);
    end;
end;

Aqui nós temos duas chamadas à função SetTextAlign() da API do Windows. Na primeira vez nós obtemos o alinhamento atual e definimos o novo alinhamento como TA_CENTER. Na segunda chamada nós voltamos o alinhamento anterior. Se não fizermos este procedimento, todas as demais células da grid terão seus conteúdos também alinhados ao centro.


Vamos testar seus conhecimentos em

Resistência do concreto

Em uma edificação, foi executada a concretagem de um pavimento há exatamente duas semanas. Deseja-se determinar a resistência atingida pelo concreto até o momento, de maneira a verificar a possibilidade de retirada do escoramento para utilização em outro ponto da mesma obra. Para a elaboração deste concreto, foi utilizado um cimento CP II e, como critério de projeto, foi considerado um valor de resistência do concreto aos 28 dias igual a fck = 35 MPa.

Com base na NBR 6118/2014 - Projeto de Estruturas de Concreto - Procedimento, determine o valor da resistência de cálculo (fcd) atingida até o momento.

A) fcd = 17,5 MPa.

B) fcd = 22,5 MPa.

C) fcd = 25 MPa.

D) fcd = 26,3 MPa.

E) fcd = 35 MPa.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Ética e Legislação Profissional

A responsabilidade moral

A ética leva o homem a questionar constantemente suas ações e as atitudes alheias, tentando definir se elas são boas ou más, corretas ou incorretas. Na condição de disciplina, essa ciência se preocupa com a análise das ideias que envolvem a produção do bem e do mal, ou seja, dedica-se aos seus aspectos teóricos. Em tal perspectiva, pode-se afirmar que o conceito de ética se refere a:

A) quando o ser humano não pode falhar.

B) um conjunto de conhecimentos extraídos dos meios de comunicação.

C) um conjunto de conhecimentos extraídos da investigação do comportamento humano.

D) um conjunto de conhecimentos extraídos da investigação da moral.

E) quando o ser humano falha.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em Python

Qual é a forma correta de se declarar uma variável do tipo real em Python?

A) valor = float(6.3)

B) valor = Float(6.3)

C) valor = 6.3

D) As formas A, B e C estão corretas

E) As formas A e C estão corretas
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em

Pilares centrais: dimensionamento e detalhes construtivos

Durante o projeto de um pilar central, deve-se cuidar alguns parâmetros para que não ocorram falhas no resultado final, desde a parte de cálculo até a parte de execução. Em relação a pilares centrais, qual a reposta correta?

A) Calculando-se apenas a esbeltez do pilar já é possível estimar o comportamento.

B) Este tipo de pilar não tem continuidade nos dois eixos.

C) Quando se dimensiona o aço, deve-se utilizar as piores situações de cálculo, com armaduras simétricas.

D) O efeito do momento fletor em pilares centrais deve ser desprezado.

E) Pilares centrais são submetidos à flexão composta oblíqua.
Verificar Resposta Estudar Cards Todas as Questões

Vamos testar seus conhecimentos em AutoCAD Civil 3D

O painel Toolspace

Qual aba do painel Toolspace do AutoCAD Civil 3D é usada para revisar ou editar as definições que controlam os estilos de exibição dos tipos de objetos, estilos de rótulos e outras propriedades?

A) Prospector

B) Toolbox

C) Survey

D) Settings
Verificar Resposta Estudar Cards Todas as Questões

Desafios, Exercícios e Algoritmos Resolvidos de Delphi

Veja mais Dicas e truques de Delphi

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 25 usuários muito felizes estudando em nosso site.