Страница 11 из 13
Ошибка при регистрации собственного класса всплывающих подсказокВ шестой версии С++Builder при регистрации собственного класса всплывающих подсказок с использованием кода
HintWindowClass = __classid(TMyHintWindow);
где TMyHintWindow - класс ваших всплывающих подсказок, возникает ошибка:
[Linker Error] Unresolved external '__fastcall Controls::THintWindow::NCPaint(void *)' referenced from C:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\OWNHINTS\STHINTWINDOW.OBJ.
Для того, чтобы исправить данную ошибку, в код проекта перед вызовом функции
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
добавьте функцию THintWindow::NCPaint следующим образом:
void __fastcall Controls::THintWindow::NCPaint(HDC DC) { TRect R(0, 0, Width, Height); DrawEdge(DC, &R, BDR_RAISEDOUTER, BF_RECT); }
Как пpи стаpте пpогpаммы включить киpиллицу?Для того, чтобы программа при старте запускалась с русской раскладкой клавиатуры, воспользуйтесь следующим кодом:
ActivateKeyboardLayout(LoadKeyboardLayout(IntToHex(MAKELANGID(LANG_RUSSIAN, SUBLANG_DEFAULT), 8).c_str(), 0), 0);
Обработка событий динамически созданных компонентовРассмотрим обработку событий динамически созданных компонентов на примере кнопки (TButton) и ее события OnClick. Чтобы привязать обработчик события к кнопке объявите в классе формы функцию void __fastcall MyClick(TObject *Sender) и в конструкторе формы (или в обработчике события OnCreate формы) назначьте ее вашему компоненту (предположим, он называется MyButton):
MyButton->OnClick = MyClick
В определении функции MyClick напишите код, который дожен вызываться при нажатии на кнопку MyButton.
Для остальных событий все выполняется аналогичным образом, с той лишь разницей, что сигнатура объявляемой функции-обработчика должна соответствовать выбранному вами событию.
Ошибка при компиляции проекта с использованием VirtualTreeView в C++Builder 6При использовании в проекте компонента VirtualTreeView от Майка Лишке (https://www.delphi-gems.com/VirtualTreeview/VT.php) в проекте возникает ошибка [C++ Error] VirtualTrees.hpp(1898): E2076 Overloadable operator expected. Для ее исправления в файл VirtualTrees.hpp перед строкой:
#include <UxTheme.hpp> // Pascal unit
добавьте строку: #include
и пересоберите проект.
Получение версии файлаДля получения версии файла в C++Builder воспользуйтесь следующим кодом:
DWORD h; DWORD Size=GetFileVersionInfoSize(Application->ExeName.c_str(), &h); if(Size==0) return ; char *buf; buf=(char *)GlobalAlloc(GMEM_FIXED, Size); if (GetFileVersionInfo(Application->ExeName.c_str(),h,Size,buf)!=0) { char *ValueBuf; UINT Len; VerQueryValue(buf, "\\VarFileInfo\\Translation", &(void *)ValueBuf,&Len); if (Len>=4) { AnsiString CharSet=IntToHex((int )MAKELONG(*(int *)(ValueBuf+2),*(int *)ValueBuf), 8);
if (VerQueryValue(buf,AnsiString "\\StringFileInfo\\"+CharSet+"\\ProductName").c_str(),&(void *)ValueBuf,&Len) !=0) AppName->Caption=ValueBuf;
if (VerQueryValue(buf,AnsiString("\\StringFileInfo\\"+CharSet+"\\FileVersion").c_str(),&(void *)ValueBuf,&Len)!=0) Version->Caption=ValueBuf;
if (VerQueryValue(buf,AnsiString("\\StringFileInfo\\"+CharSet+"\\LegalCopyright").c_str(),&(void *)ValueBuf,&Len)!=0) Copyright->Caption=ValueBuf;
if (VerQueryValue(buf,AnsiString("\\StringFileInfo\\"+CharSet+"\\CompanyName").c_str(),&(void *)ValueBuf,&Len)!=0) Company->Caption=ValueBuf; } }
GlobalFree(buf);
где AppName, Version, Company - имена компонентов TLabel, которые расположены на вашей форме, и которые отображают полученную информацию.
Как скрыть закладку в TPageControl?Для сокрытия закладки в компоненте TPageControl воспользуйтесь следующим кодом:
PageControl1->Pages[1]->TabVisible = false;
где PageControl1 - ваш компонент TPageControl, расположенный на форме. Данный код скрывает закладку с индексом 1. Для сокрытия другой закладки вместо единицы должен стоять соответствующий индекс.
Как скрыть столбец в TStringGrid?Для сокрытия какого-либо из столбцов компонента TStringGrid воспользуйтесь кодом:
StringGrid1->ColWidths[Index] = -1;
где StringGrid1 - компонент TStringGrid, размещенный на форме, Index - порядковый номер столбца. Помните, что нумерация столбцов начинается с нуля.
|