Нужен визуальный компонент Delphi, аналог отображения дефрагментации диска в старых версиях Windows
Требования
Описание: Нужен визуальный компонент, который отображает в окне упорядоченное количество элементов в виде цветных прямоугольников
Количество элементов: 1024 макс, линейное с лева на право заполнение до конца видимой области, далее с новой строки
У каждого элемента: программно возможность изменения позиции в списке и цвета, всплывающая подсказка, popup меню
Как бонус: масштабирование и прокрутка видимой области отображения
Вид: Аналог отображения дефрагментации
Вопрос: Таких компонентов не знаю, может подскажете если есть? А если нет, то посоветуйте как написать?
= Windows 10 Ent 1607, Embarcadero Delphi 10.3
Ответы (1 шт):
TDrawGrid + простенькое хранилище информации в списке
procedure TForm1.DrawGrid1ContextPopup(Sender: TObject; MousePos: TPoint;
var Handled: Boolean);
var
ar, ac: Integer;
begin
TDrawGrid(Sender).MouseToCell(MousePos.X, MousePos.Y, ac, ar);
PopupMenu1.Items[0].Caption := Format('%d %d', [ar, ac]);
end;
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
c: TCanvas;
begin
c := TDrawGrid(Sender).Canvas;
if ARow > 3 then
c.Brush.Color := clWindow
else
c.Brush.Color := Random($1000000);
Rect.Inflate(-2, -2);
c.FillRect(Rect);
end;

