Mudando a função da tecla ENTER para funcionar como TAB em um Form
Para qua a tecla ENTER funcione com TAB, você deverá:
Setar a propriedade KeyPreview do Form para true;
Setar a propiedade Default de todos os botões do Form para false;
Incluir o código abaixo no evento OnKeyPreview do Form.
if( Key == 13 ) { Perfom( WM_NEXTDLGCTL, 0, 0 ); Key = 0; }
Como verificar o estado das teclas Num lock, Caps lock e Scroll lock
A função GetKeyState( ) retornará true se a tecla estiver ON ou false se estive OFF
GetKeyState( VK_NUMLOCK ) GetKeyState( VK_SCROLL ) GetKeyState( VK_CAPITAL )
Determine a localização do mouse
Chame a função da API GetCursorPos. Você passa a função o ponteiro de uma classe TPoint.
void __fastcall TForm1::Timer1Timer(TObject *Sender) { // este exemplo irá mostrar as coordenadas do mouse TPoint pt; GetCursorPos(&pt); Label1->Caption = "("+IntToStr(pt.x)+")("+IntToStr(pt.y)+")"; }
Habilitando e desabilitando Ctrl+Alt+Del
Chame a função SystemParametersInfo( ) passando
os seguintes parâmetros:
SystemParametersInfo( 97, opção1, &opção2, 0
);
Onde:
opção1 é true para desabilitar e false para habilitar.
opção2 é o endereço de um int qualquer.
Determine se o sistema esta usando fontes grande ou pequena
A maneira mais fácil de fazer isto é ler a propriedade PixelsPerInch do objeto global Screen. Se o valor é 96, então o sistema esta ajustado para fontes pequena. Se PixelsPerInch é 120, então esta ajustado para fonte grande. É possível que PixelsPerInch seja diferente de 96 ou 120 porque o usuário pode ter ajustado diretamente por escala.
__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { if(Screen->PixelsPerInch == 96) Label1->Caption = "Fonte pequena em uso"; else if(Screen->PixelsPerInch == 120) Label1->Caption = "Fonte grande em uso"; else { float Ratio = ((float)Screen->PixelsPerInch) / 96.0; Ratio *= 100.0; Label1->Caption = "Fontes ajustadas para " + IntToStr((int)Ratio) + " %"; } }
Determine a configuração de cores da tela(256 cores, 16 bit, etc)
Determine a data e hora corrente
A classe VCL TDateTime é a maneira mais fácil de obter a data e o hora corrente. O código exemplo abaixo, mostra como fazer isto. O primeiro bloco do código mostra como recuperar a data e a hora. O restante do código mostra outros usos para TDateTime.
// Obtêm a hora e a data corrente Label1->Caption = TDateTime::CurrentDateTime().TimeString(); Label2->Caption = TDateTime::CurrentDateTime().DateString(); // Ajusta um intervalo de tempo // Primeiro, declara uma constante TDateTime que representará // o intervalo de 1000 segundos. TDateTime possui diferentes // construtores. Este inicializa as horas, minutos, segundos // e milisegundos const TDateTime OneThousandSeconds = TDateTime(0, 16, 40, 0); // cria um TDateTime object para a hora corrente TDateTime CurrentTime(TDateTime::CurrentDateTime()); // adiciona o intervalo a hora corrente TDateTime EndTime = CurrentTime + OneThousandSeconds; // adicione código para verificar se // o intervalo foi expirado if(TDateTime::CurrentDateTime() > EndTime) Application->MessageBox("Intervalo de tempo expirado", "Tempo" , MB_OK); // Ajusta um intervalo de 60 dias a partir da data corrente // Primeiro, armazene a data corrente TDateTime CurrentDate(TDateTime::CurrentDate()); // adiciona 60 dias a data corrente TDateTime EndDate = CurrentDate + (double)60; // verifica se o intervalo expirou if(TDateTime::CurrentDateTime() > EndDate) Application->MessageBox("Periodo de avalização expirado", "Demo",MB_OK); // Obtendo o ano, mês e dias de uma data TDateTime ElapsedFreedomTime = TDateTime::CurrentDate(); unsigned short years, months, days; ElapsedFreedomTime.DecodeDate(&years, &months, &days); years -= 1900; // ano inicia em 1900 AnsiString msg = IntToStr( years) + " anos, " + IntToStr( months) + " meses, e " + IntToStr( days) + " dias."; Application->MessageBox(msg.c_str(), "Tempo",MB_OK);
Obtenha a localização do diretório do Windows e System
Chame a função da API GetWindowsDirectory para obter o diretório do Windows. Chame GetSystemDirectory se você quer o diretório system.
AnsiString WinDir; UINT BufferSize = GetWindowsDirectory(NULL,0); WinDir.SetLength(BufferSize+1); GetWindowsDirectory(WinDir.c_str(),BufferSize+1); AnsiString SysDir; BufferSize = GetSystemDirectory(NULL,0); SysDir.SetLength(BufferSize+1); GetSystemDirectory(SysDir.c_str(),BufferSize+1);
O segundo argumento de ambas, GetWindowsDirectory e GetSystemDirectory especifica quantos caracteres serão copiados para o buffer. A variável AnsiString aloca o espaço necessário.
Obtenha a localização do diretório temporário do windows
O Windows contem um diretório temp que você pode armazenar arquivos temporários. A API possui uma função chamada GetTempPath que permite que seja determinado a localização do diretório temp.
AnsiString TempDir; UINT BufferSize = GetTempPath(0,NULL); TempDir.SetLength(BufferSize+1); GetTempPath(BufferSize+1,TempDir.c_str());
A API também possui uma função chamada GetTempFileName que permite que você crie arquivos temporários únicos. Entretanto, é de sua responsabilidade deleta-los.
Mudando a função da tecla ENTER com TAB em um DBGrid
void_fastcall TForm1::DBGrid1KeyPress(TObject *Sender, char &Key)
{
if( Key == 13 ) { PostMessage(DBGrid1->Handle,WM_KEYDOWN,VK_TAB,1 ); Key = 0; }
}