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;
}
}