
(если взять чуть более широкую панель, то все будет прекрасно отображаться, здесь масштаб маловат, поэтому одно налезает на другое...)
А теперь, собственно, КАК оно делалось:
1) в класс MyCluster введен еще один member под названием center, который хранит смещение от верха панели (фактически - координату Y кластера. Координата X нам не особенно нужна, есть srez). Ну, а потом, как только нашли очередной минимум:
outCanvas->Pen->Color = clBlack;
outCanvas->MoveTo(visLabelWidth + 30 + clusters[ii].sr, clusters[ii].center);
outCanvas->LineTo(visLabelWidth + 30 + min, clusters[ii].center);
outCanvas->MoveTo(visLabelWidth + 30 + clusters[jj].sr, clusters[jj].center);
outCanvas->LineTo(visLabelWidth + 30 + min, clusters[jj].center);
outCanvas->LineTo(visLabelWidth + 30 + min, clusters[ii].center);
clusters[ii] += clusters[jj]; // Сливаем кластеры
clusters[ii].sr = min; // запоминаем, когда произошло слияние
std::for_each(clusters.begin(), clusters.end(),
Updator(std::make_pair(jj, ii))); // Обновляем ссылки на старый кластер
clusters[jj].disabled = true; // jj кластер убран
// Рисуем центр "Объединенного" кластера
outCanvas->Pen->Color = clRed;
int px = visLabelWidth + 30 + min, py = clusters[ii].center;
outCanvas->Ellipse(px - 2, py - 2, px + 2, py + 2);
res.push_back(clusters[ii]);
// Ну и так далее...
Это отрисует "дерево". А уж на перемещение TrackBar-а вешаем:void UpdateClusterList(int srez, std::vector<MyCluster>& vec, TMemo* memo)
{
std::vector<MyCluster>::iterator it;
memo->Clear();
for(it = vec.begin(); it != vec.end(); it++)
{
if(it->sr >= srez)
{
memo->Lines->Add(it->ShowInfo());
// Показываем нужную информацию, я заменил вывод << методом ShowInfo()
}
}
}
void __fastcall TForm1::TrackBar1Change(TObject *Sender)
{
UpdateClusterList(((TTrackBar *)Sender)->Position, res, memResults);
}
Вот и все, теперь список кластеров будет содержать только те элементы, поле sr которых не меньше текущей позиции ТрэкБара, что и нужно было. Останется только рисовать эту красную линию при движении бегунка, для наглядности...

Сообщение отредактировано: volvo -