Еще нет подгонки содержимого ListView под размер окна...
Нашел решение :
IconOptions.AutoArrange = True и ScrollBars = ssAutoVertical
Но вылезла новая "проблема" Выделение элемента совсем не то что нужно для галереи ...
Старое "прибил" так :
- Код: Выделить всё
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
Item.Selected:=False;
end;
Но нужна "рамка вокруг миниатюры".
Добавлено спустя 1 час 15 минут 56 секунд:- Код: Выделить всё
const
LVM_SETEXTENDEDLISTVIEWSTYLE = $1036;
LVS_EX_BORDERSELECT = $8000;
...
SendMessage(ListView.Handle, LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_BORDERSELECT)
Хм ! Как-то это странно (Вроде расхожая фишка а приходится через WinAPI лезть ) ... но работает .
Добавлено спустя 17 часов 39 минут 54 секунды:Всю ночь провозился пытаясь сменить цвета выделения выбранного элемента....
Брр... И ведь в дельфи работает! ( например так .)
SysListView32.zipА в лазарусе хоть тресни нет .
Добавлено спустя 2 часа 7 минут 41 секунду:"Муки творчества" блин !

- Код: Выделить всё
procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
Var A_Rect: TRect;
begin
case (Stage) of
cdPrePaint : begin
if cdsSelected in State then
with Sender.Canvas do begin
Item.Selected := False;
font.Color:= clWhite;
Brush.Color := clRed;
Pen.Color:=ClGreen;
end;
end;
cdPostPaint : begin
if cdsSelected in State then
with Sender.Canvas do begin
Item.Selected := True;
A_Rect:=Item.DisplayRect(drSelectBounds);
Pen.Color:=ClRed;
Pen.Width:=2;
Brush.Color :=ClGreen;
Frame(A_Rect.Left+1,A_Rect.Top+1,
A_Rect.Right-1,A_Rect.Bottom);
Brush.Color := clWindow;
Pen.Color:= clWindow;
end;
end;
end;
end;
Зы
Совсем чисто "без рисования" не обошлось ( рамку рисую сам ), но в принципе это самый простой и по идее надежный вариант из всех опробованных.