VahaC

Forum Replies Created

Viewing 20 posts - 181 through 200 (of 270 total)
  • Author
    Posts
  • VahaC
    Participant

    проект с медленной отрисовкой бросил на почту

    VahaC
    Participant

    Может есть какие то идеи по #114

    VahaC
    Participant

    бросьте свое мыло мне в личку чтобы я смог отправить вам проект в котором это происходит.

    VahaC
    Participant

    Другая ситуация с тем же примером добавляем в проект фрейм и копируем в него наш листвюв

    после чего бросаем фрейм на форму и получаем

    [attachment=4691:bug03.png]

    почему они по разному скинируются 😮

    да и при дальнейших вкл/выкл скинов листвюв в фрейме скинится нормально а его колега который лежит на форме не скинится (а у меня в одном из проектов листвювы в фреймах вообще не скинятся нормально, то есть проблемы с выделенной строкой) :wacko:

    VahaC
    Participant

    Да вот еще

    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 картинках первого поста.

    in reply to: FWVistaPathEdit #45176
    VahaC
    Participant

    Кстати заскинировав этот компонент можно решить проблему со скинированием TFileOpenDialog и TFileSaveDialog (создав свои аналоги с FWVistaPathEdit) но эти самописные компоненты будут работать и ХР в отличии от нативных (TFileOpenDialog и TFileSaveDialog)

    VahaC
    Participant

    К сожалению не работают 🙁

    VahaC
    Participant

    Обнаружил один весьма неприятный момент, если в рантайм очистить acListView и начать его заполнять то отрисовка происходит довольно медленно. Если перед этим установить acListView.Visible := False; а после добавления True то получаем выиграш по времени но этот вариант не очень красивый так как acListView скрывается с экрана.

    Может есть какой то другой способ ускорить отрисовку?

    in reply to: Странная работа sListView #45165
    VahaC
    Participant

    версия 7,33

    тройная прорисовка осталась, но все костыль с пустым OnDrawItem спасает

    при ViewStyle := vsSmallIcon получаем

    [attachment=4684:small_icon.PNG]

    VahaC
    Participant

    К сожалению не могу сказать что в версии 7,33 баг полностью исправили, имхо его просто поменяли 🙄

    Собираем и запускаем выше выложенный пример с отключенными скинами

    [attachment=4680:001.PNG]

    включаем скины в рантайм

    [attachment=4681:002.PNG]

    выключаем скины в рантайм

    [attachment=4682:003.PNG]

    включаем скины в рантайм

    [attachment=4683:004.PNG]

    Как видим с отрисовкой выделенного айтема не все впорядке

    VahaC
    Participant

    7,33

    Проблема осталась

    in reply to: TsListView.OnAdvancedCustomDrawItem #45162
    VahaC
    Participant

    Спасибо, решено в 7,33

    VahaC
    Participant

    Спасибо, решено в 7,33

    VahaC
    Participant

    Спасибо решено

    VahaC
    Participant

    В текущем проекте после сборки с неактивными скинами вываливается AV на вот этой строчке FListGroups.CalcBounds(iP); в procedure TacListView.BuildAndPaint(BuildOnly: Boolean = False) если закомментировать эту строку то AV пропадает но группы не рисуются вообще а итемы в них черти как (в смысле нет позиционирования).

    если собрать с активными скинами все работает нормально.

    Может есть идеи почему так происходит?

    VahaC
    Participant

    Пожалуйста exe-шник [attachment=4667:Project1.zip]

    VahaC
    Participant
    'Support' wrote:

    У ListView из этой демки нет айтемов, можно самому добавить?

    😮 как нет айтемов, специально скачал и проверил

    VahaC
    Participant

    из этой темы только если хотите можете убрать обработчик OnAdvancedCustomDrawItem

    но у меня он ни на что не влияет

    VahaC
    Participant

    постучал к вам в асю. Там и договоримся когда можно будет тимом посмотреть потому что сейчас на другом компе.

    VahaC
    Participant

    Хотел организовать возможность выравнивания 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;

Viewing 20 posts - 181 through 200 (of 270 total)