Страница 7 из 13
Запись содержимого BLOB-поля в файл Для сохранения содержимого BLOB-поля в файл можно воспользоваться следующим кодом:
TMemoryStream *M1 = new TMemoryStream(); TStream *B1 = ADOTable1->CreateBlobStream(ADOTable1->FieldByName("My_field"),bmRead); M1->CopyFrom(B1,B1->Size); M1->SaveToFile("h:\\My_file.doc"); delete B1; delete M1;
Вывод текста по окружности Нижеприведенная функция выводит текст по кругу:
void DrawCircularText (TCanvas *Canvas, AnsiString asFontName, int iHeight, char *szText, int iAngle, int iR, int iCX, int iCY, int iSector) { LOGFONT lf; HFONT hPrevFont, hFont; int iPass;
iPass = iSector/lstrlen (szText); ZeroMemory (&lf, sizeof (lf)); for (int i = 0; i < lstrlen (szText); i ++) { lf.lfEscapement = 10*iAngle-(10*iPass*(i-1)); lstrcpy (lf.lfFaceName, asFontName.c_str()); lf.lfHeight = iHeight; hFont = CreateFontIndirect (&lf); hPrevFont = SelectObject (Canvas->Handle, hFont); Canvas->TextOut (iCX+iR*sin((-180+iAngle-(i-1)*iPass)*3.14/180), iCY+iR*cos((-180+iAngle-(i-1)*iPass)*3.14/180), szText [i]); hFont = SelectObject(Canvas->Handle, hPrevFont); DeleteObject (hFont); } }
Изменяя аргумент iAngle, вы получаете возможность вращать начальную точку вывода текста, а если изменять агрумент iSector, то можно рисовать текст как по дуге, так и по окружности.
Определение размера свободного пространства на диске Для определения размера свободного пространства на диске используйте функцию DiskFree, объявленную в Sysutils.hpp. В параметрах функции диску А соответствует 1, диску В - 2, и т. д., 0 - текущий диск.
Следующий код определит размер свободного пространства на диске С в байтах:
__int64 FreeSpace = DiskFree(3);
Как узнать, какой процессор установлен в системе? Чтобы узнать, какой процессор установлен в системе, используйте следующий код:
AnsiString ProcessorName; TRegistry *reg = new TRegistry; reg->RootKey = HKEY_LOCAL_MACHINE; reg->OpenKey("Hardware\\Description\\System\\CentralProcessor\\0", false); ProcessorName=reg->ReadString("ProcessorNameString"); delete reg;
В ProcessorName будет находиться название процессора.
Не забудьте подключить в проект Registry.hpp.
Как узнать, присутствует ли мышь в системе? Чтобы узнать, присутствует ли мышь в системе, прочитайте значение свойства MousePresent класса TMouse, воспользовавшись глобальной переменной Mouse и следующим кодом:
if(Mouse->MousePresent) // мышь в системе присутствует else // мышь в системе отсутствует
Как узнать, присутствует ли у мыши колесико?Чтобы узнать, присутствует ли у мыши колесико, прочитайте значение свойства WheelPresent класса TMouse, воспользовавшись глобальной переменной Mouse и следующим кодом:
if(Mouse->WheelPresent) // у мыши есть колесико else // колесико у мыли отсутствует
Как определить, над каким элементом в ListBox находится курсор мыши? Поместите на форму (Form1) компонент TListBox (ListBox1) и напишите следующий обработчик события OnMouseMove:
void __fastcall TForm1::ListBox1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if(ListBox1->ItemAtPos(TPoint(X, Y), true) != -1) Form1->Caption = ListBox1->Items->Strings[ListBox1->ItemAtPos(TPoint(X, Y), true)]; }
В заголовке формы при движении мыши будут отображаться элементы ListBox1.
|