Различные примеры кода на C++Builder
<< обратно
1. Иногда для работы бывает
полезнее хранить и обрабатывать даты в виде целых чисел
Предлагаемая функция переводит указанную дату: число, месяц и год в целое число
int
от начала года (так например 1 января 2002 — это число 1, и т.д. до 365 или
366)
// ----- перевод даты Год-Месяц-Число в число int номер от начала года
int TFMain::FindDateNum(int Year, int Month, int Day)
{
int kdm[] = {31,28,31,30,31,30,31,31,30,31,30,31};
// если год високосный, то в феврале 29 дней
if(Year%4 == 0) kdm[1] = 29;
int NumDay = 0;
for(int i=1; i<Month; i++) NumDay += kdm[i-1];
NumDay += Day;
return NumDay;
}
//----- использование этой функции
{
Word Year1, Day1, Month1, Year2, Day2, Month2;
DecodeDate(DateTimePicker1->Date, Year1, Month1, Day1);
DecodeDate(DateTimePicker2->Date, Year2, Month2, Day2);
int dat1 = FindDateNum(Year1, Month1, Day1);
int dat2 = FindDateNum(Year2, Month2, Day2);
}
2. Программый переход в последовательности табуляции на следующий
элемент,
например по нажатию кнопки ENTER
//----- переход в последовательности табуляции для оконных
компонентов по Enter
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(Key == VK_RETURN) {
TWinControl* tabU = Form1->ActiveControl;
FindNextControl(tabU,true,true,false)->SetFocus();
}
}
//----- или так для одного компонента
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
{
if(Key == VK_RETURN){
FindNextControl((TWinControl*)Sender,true,true,false)->SetFocus();
}
}
Используя функции GetDeviceCaps() и ChangeDisplaySettings().
Смотрите пример (4 Кб ) для C++Builder.
4. Как вообще получить сведения о системе (число кнопок у мыши и т.д.)
Используйте функцию GetSystemMetrics().
Смотрите пример ( 4 Кб ) для C++Builder.
5. Запустить почтовый клиент
void __fastcall TForm1::Button1Click(TObject *Sender)
{
ShellExecute(Handle,NULL,"mailto:support@cbuilder.ru?subject=Tema",
NULL,NULL,SW_SHOWNORMAL);
}
6. Запустить браузер Internet Explorer (или Netscape Navigator или Opera или ...)
void __fastcall TForm1::Button2Click(TObject *Sender)
{
ShellExecute(Handle,NULL,"http://rxlib.ru",NULL,NULL,SW_SHOWNORMAL);
}
7. Узнать откуда запускается программа можно разными способами
Label1->Caption = Application->ExeName;
Label2->Caption = ParamStr(0);
Label3->Caption = GetCurrentDir(); // текущая папка ( может измениться !)
8. Программная очистка корзины ( для Windows 98 )
void __fastcall TForm1::Button8Click(TObject *Sender)
{
/* Очистка корзины
Есть флаги — NULL — как обычно, т.е. по умолчанию
SHERB_NOCONFIRMATION 0x00000001 — без запроса на удаление
SHERB_NOPROGRESSUI 0x00000002 — без показа удаления
SHERB_NOSOUND 0x00000004 — без звука
при желании флаги можно сочетать через |
*/
char sh[500];
SHEmptyRecycleBin(Handle, sh, SHERB_NOSOUND|SHERB_NOCONFIRMATION);
}
9. Получить данные о пользователе и имени компьютере, например в компонент типа TMemo
// получение имени пользователя компьютера и т.д. // получение информации об использовании ОЗУ памяти
MEMORYSTATUS ms;
GlobalMemoryStatus(&ms);
Memo2->Clear();
Memo2->Lines->Add("\tMemory Status:"); Memo2->Lines->Add("");
Memo2->Lines->Add(IntToStr(ms.dwLength)+" — sizeof(MEMORYSTATUS)");
Memo2->Lines->Add(IntToStr(ms.dwMemoryLoad)+" — percent of memory
in use");
Memo2->Lines->Add(IntToStr(ms.dwTotalPhys/1024) +" — Kbytes of physical
memory");
Memo2->Lines->Add(IntToStr(ms.dwAvailPhys/1024)+" — physical memory
Kbytes");
Memo2->Lines->Add(IntToStr(ms.dwTotalPageFile/1024)+" — Kbytes of
paging file");
Memo2->Lines->Add(IntToStr(ms.dwAvailPageFile/1024)+" — free Kbytes
of paging file");
Memo2->Lines->Add(IntToStr(ms.dwTotalVirtual/1024) +" — user Kbytes
of address space");
Memo2->Lines->Add(IntToStr(ms.dwAvailVirtual/1024) +" — free user
Kbytes");
10. Запуск внешней программы методом Create Process
TStartupInfo si;
TProcessInformation pi;
AnsiString cmdline;
ZeroMemory(&si,sizeof(si)); si.cb = sizeof(si);
cmdline = "c:\\Proga.exe"; // запускаем эту программу
if (!CreateProcess( NULL, // No module name (use command line).
cmdline.c_str(), // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
false, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi )) // Pointer to PROCESS_INFORMATION structure.
{ ShowMessage("CreateProcess failed."); }
else { ShowMessage("Ok !"); }
11. Часы на экране, точность — минуты
//----- компонент LTime типа TLabel
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
LTime->Caption = FormatDateTime("hh:nn",Time());
Timer1->Interval=60000; // меньше число, больше точность
}
//-----
12. Программное переключение раскладки клавиатуры
LoadKeyboardLayout("00000409", KLF_ACTIVATE); //
Английская
LoadKeyboardLayout("00000419", KLF_ACTIVATE); // Русская