Borland C++ VCL FAQ
Страница 11.



Ошибка при регистрации собственного класса всплывающих подсказок

В шестой версии С++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 - порядковый номер столбца. Помните, что нумерация столбцов начинается с нуля.
 
« Предыдущая статья   Следующая статья »