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



Как удалить выбранные элементы в TListBox?

Для удаления нескольких выбранных элементов в TListBox воспользуйтесь следующим кодом (ListBox1 - ваш TListBox):
for(int i = ListBox1->Items->Count-1; i >= 0; i--)
if(ListBox1->Selected[i])
ListBox1->Items->Delete(i);


Изменение стиля шрифта у TTreeNode

Если существует необходимость изменить стиль шрифта у узла дерева (класс TTreeNode VCL), то можно воспользоваться следующим кодом (в данном примере устанавливается жирный шрифт в событии OnMouseMove TTreeView):
void __fastcall TForm1::TreeView1MouseMove(TObject *Sender,
TShiftState Shift, int X, int Y)
{
TTreeNode *Node = TreeView1->GetNodeAt(X, Y);
if(Node)
{
TV_ITEM tvItem;
tvItem.hItem = Node->ItemId;
tvItem.mask = TVIF_STATE;
tvItem.state = TVIS_BOLD;
tvItem.stateMask = TVIS_BOLD;
SendMessage(TreeView1->Handle, TVM_SETITEM, 0, (LPARAM)&tvItem);
}
// конец оператора if(Mode)
}


Очистка ячеек в StringGrid (вариант 1)

Для очистки содержимого ячеек в StringGrid (TStringGrid) напишите следующий обработчик (StringGrid1 - сетка, в которой очищаем ячейки, Button1 - кнопка на форме):
void __fastcall TForm1::Button1Click(TObject *Sender)
{
for(int i = 0; i < StringGrid1->ColCount; i++)
for(int j = 0; j < StringGrid1->RowCount; j++)
StringGrid1->Cells[i][j] = "";
}


Удаление пустой директории

Для удаления пустой директории вы можете воспользоваться функцией RemoveDir из модуля Sysutils.hpp:
bool Result = RemoveDir("C:\\MyDir");
В случае успеха функция вернет true, в случае неудачи - false.

Отладка DLL

Для начала отладки динамически подключаемой библиотеки в проекте библиотеки надо в опциях включить Full Debug, а затем в пункте меню Run-Parameters указать в Host Application исполняемый файл приложения, которое использует dll. Дальнейшая отладка ведется обычным образом.

Как узнать размер папки?

Для получения размера папки со всеми ее подпапками можно воспользоваться следующей функцией:
void FolderSize(AnsiString Folder,int &Size,int &fCount,int &folCount) 
{
//Функция записывает в параметры Size - размер папки в байтах
//fCount - общее количество файлов в папке
//folCount - общее количество подпапок в папке

TSearchRec SR;
//Проверяем, заканчивается ли путь к папке на \, если да, то удаляем его,
if(Folder[Folder.Length()] == '\\')
Folder.SetLength(Folder.Length()-1);
if(FindFirst(Folder+"\\*.*",faAnyFile,SR) == 0)//Делаем первый поиск
do
{ //Если то что мы нашли не является обратными ссылками...
if(SR.Name != "." && SR.Name != "..")
{ //Если то что мы нашли является папкой, функция вызывает саму себя
//и увеличивает счетчик кол-ва подпапок
if((SR.Attr & faDirectory)!=0)
{
FolderSize(Folder+"\\"+SR.Name,Size,fCount,folCount);
folCount++;
}
else //Если это файл - прибавляем его размер к общему размеру
{
Size = Size + SR.Size;
fCount++;
}
}
}
while(FindNext(SR)==0);
FindClose(SR);
}

 
« Предыдущая статья   Следующая статья »