Forum Replies Created
-
AuthorPosts
-
VahaCParticipant
проект с медленной отрисовкой бросил на почту
March 20, 2011 at 12:18 pm in reply to: ListView с поддержкой групп; ProgressBar с градиентом #45187March 20, 2011 at 12:17 pm in reply to: ListView с поддержкой групп; ProgressBar с градиентом #45186VahaCParticipantбросьте свое мыло мне в личку чтобы я смог отправить вам проект в котором это происходит.
March 20, 2011 at 8:15 am in reply to: TsListView при отключеных скинах неверно рисуеться выбраный итем #45178VahaCParticipantДругая ситуация с тем же примером добавляем в проект фрейм и копируем в него наш листвюв
после чего бросаем фрейм на форму и получаем
[attachment=4691:bug03.png]
почему они по разному скинируются 😮
да и при дальнейших вкл/выкл скинов листвюв в фрейме скинится нормально а его колега который лежит на форме не скинится (а у меня в одном из проектов листвювы в фреймах вообще не скинятся нормально, то есть проблемы с выделенной строкой) :wacko:
March 20, 2011 at 7:59 am in reply to: TsListView при отключеных скинах неверно рисуеться выбраный итем #45177VahaCParticipantДа вот еще
Code:procedure TForm1.ListView1AdvancedCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; Stage: TCustomDrawStage;
var DefaultDraw: Boolean);
begin
if cdsSelected in State then
Sender.Canvas.Font.Color := clRed;
else
Sender.Canvas.Font.Color := clWindowText;
end;Получаем
[attachment=4689:bug01.png]
[attachment=4690:bug02.png]
при дальнейшем вкл/выкл скирования получаем эфект на 3 и 4 картинках первого поста.
VahaCParticipantКстати заскинировав этот компонент можно решить проблему со скинированием TFileOpenDialog и TFileSaveDialog (создав свои аналоги с FWVistaPathEdit) но эти самописные компоненты будут работать и ХР в отличии от нативных (TFileOpenDialog и TFileSaveDialog)
VahaCParticipantК сожалению не работают 🙁
March 16, 2011 at 10:04 pm in reply to: ListView с поддержкой групп; ProgressBar с градиентом #45166VahaCParticipantОбнаружил один весьма неприятный момент, если в рантайм очистить acListView и начать его заполнять то отрисовка происходит довольно медленно. Если перед этим установить acListView.Visible := False; а после добавления True то получаем выиграш по времени но этот вариант не очень красивый так как acListView скрывается с экрана.
Может есть какой то другой способ ускорить отрисовку?
VahaCParticipantверсия 7,33
тройная прорисовка осталась, но все костыль с пустым OnDrawItem спасает
при ViewStyle := vsSmallIcon получаем
[attachment=4684:small_icon.PNG]
March 16, 2011 at 4:14 pm in reply to: TsListView при отключеных скинах неверно рисуеться выбраный итем #45164VahaCParticipantК сожалению не могу сказать что в версии 7,33 баг полностью исправили, имхо его просто поменяли 🙄
Собираем и запускаем выше выложенный пример с отключенными скинами
[attachment=4680:001.PNG]
включаем скины в рантайм
[attachment=4681:002.PNG]
выключаем скины в рантайм
[attachment=4682:003.PNG]
включаем скины в рантайм
[attachment=4683:004.PNG]
Как видим с отрисовкой выделенного айтема не все впорядке
VahaCParticipant7,33
Проблема осталась
VahaCParticipantСпасибо, решено в 7,33
VahaCParticipantСпасибо, решено в 7,33
VahaCParticipantСпасибо решено
VahaCParticipantВ текущем проекте после сборки с неактивными скинами вываливается AV на вот этой строчке FListGroups.CalcBounds(iP); в procedure TacListView.BuildAndPaint(BuildOnly: Boolean = False) если закомментировать эту строку то AV пропадает но группы не рисуются вообще а итемы в них черти как (в смысле нет позиционирования).
если собрать с активными скинами все работает нормально.
Может есть идеи почему так происходит?
March 9, 2011 at 3:15 pm in reply to: TsListView при отключеных скинах неверно рисуеться выбраный итем #45107VahaCParticipantПожалуйста exe-шник [attachment=4667:Project1.zip]
March 9, 2011 at 12:07 pm in reply to: TsListView при отключеных скинах неверно рисуеться выбраный итем #45104VahaCParticipant'Support' wrote:У ListView из этой демки нет айтемов, можно самому добавить?
😮 как нет айтемов, специально скачал и проверил
March 9, 2011 at 9:58 am in reply to: TsListView при отключеных скинах неверно рисуеться выбраный итем #45100VahaCParticipantиз этой темы только если хотите можете убрать обработчик OnAdvancedCustomDrawItem
но у меня он ни на что не влияет
VahaCParticipantпостучал к вам в асю. Там и договоримся когда можно будет тимом посмотреть потому что сейчас на другом компе.
VahaCParticipantХотел организовать возможность выравнивания ExpandeButton и Footer по левому, правому краях или по центру но реализовал только для последнего. Причиной этого стало то что в процедуре отрисовки группы достаточно запутанный (как мне показалось) код и поэтому не решился этого делать боясь что могу наделать кучу потенциальных глюков.
Code://Изменеия необходимые для реализации возможности выравнивания (по левому, правому краях или по центру)
//Footer-а груп. При этом у каждой групы свои настройки выравнивания.
//
////aceListView.pas
TacListGroup = class(TacListElement)
private
….
FFooterAlignment: TAlignment;
….
procedure SetFooterAlignment(const Value: TAlignment);
….
public
….
published
….
property FooterAlignment: TAlignment read FFooterAlignment write SetFooterAlignment default taLeftJustify;
….
end;…..
procedure TacListGroup.SetFooterAlignment(const Value: TAlignment);
begin
if FFooterAlignment Value then
begin
FFooterAlignment := Value;
DoChange;
end;
end;procedure TacListGroup.PaintFooter(Canvas: TCanvas; BgErase, PaintSelectionFrame: Boolean);
….
PaintGridLines(OutCanvas, Canvas, FFooterBounds);
OutCanvas.Brush.Style := bsClear;
// начало изменений
// OutCanvas.TextOut(TxtRec.Left, TxtRec.Top, OutText);
case FFooterAlignment of
taLeftJustify: OutCanvas.TextOut(TxtRec.Left, TxtRec.Top, OutText);
taRightJustify: OutCanvas.TextOut(TxtRec.Right – Canvas.TextWidth(OutText) – 4, TxtRec.Top, OutText);
taCenter: OutCanvas.TextOut((TxtRec.Right – Canvas.TextWidth(OutText)) div 2, TxtRec.Top, OutText);
end;
// конец измененийif FBounds.Top < acListView.GetListRect.Top then begin
….
end; -
AuthorPosts