TCount

Forum Replies Created

Viewing 20 posts - 81 through 100 (of 560 total)
  • Author
    Posts
  • in reply to: Проблема с FrameBar #56679
    TCount
    Participant

    void __fastcall TForm9::sFrameBar1Items0CreateFrame(TObject *Sender, TCustomFrame *&Frame)

    {

    Frame = new TFrame13(this);

    }


    Попробуйте при создании фрейма не указывать THIS…

    Не помню, как там в C++, вроде NULL:

    Frame = new TFrame13(NULL);


    то есть, не должно быть никакой привязки.

    in reply to: Проблема с FrameBar #56677
    TCount
    Participant
    'Shepard' wrote:

    В событии OnCreateFrame для 0-го Item-а в sFrameBar1.

    Code:
    void __fastcall TForm9::sFrameBar1Items0CreateFrame(TObject *Sender, TCustomFrame *&Frame)
    {
    Frame = new TFrame13(this);
    }

    Form9 тут, соответственно, главная форма программы, на которой и расположен сам sFrameBar1.

    Я одним глазом посмотрел на всю эту химию с sFrameBar и пришел к выводу, что вы вставляете фрейм в методе итема FrameBar OnCreateFrame…

    Так вот, сами фрейиы, которые принадлежат итемам, они не создаются по умолчанию. OnCreateFrame вызывается только при клике по самому итему, а до этого момента фрейм итема не существует и, соответственно, обращение к нему вызовет ошибку.

    Более того, фрейм уничтожается сразу после закрытия итема во FrameBar.

    Я хочу сказать о том, что к фрейму определенного итема можно обращаться только тогда, когда сам итем FrameBar открыт и видно его содержимое. То есть, когда он существует и не равен NIL (NULL).

    А обращатесь к фрейму вы правильно, но можно чуть короче:

    TFrame13(sFrameBar1->Items[0]->Frame).sButton1->Caption;

    in reply to: Проблема с FrameBar #56675
    TCount
    Participant
    'Shepard' wrote:

    Здесь: Frame13 – фрейм, вставляемый во FrameBar. sButton1 – кнопка внутри Frame13.

    Каким образом данный фрейм вставляется в FrameBar?

    Я одним глазом посмотрел на всю эту химию с sFrameBar и пришел к выводу, что вы вставляете фрейм в методе итема FrameBar OnCreateFrame…

    Так вот, сами фрейиы, которые принадлежат итемам, они не создаются по умолчанию. OnCreateFrame вызывается только при клике по самому итему, а до этого момента фрейм итема не существует и, соответственно, обращение к нему вызовет ошибку.

    Более того, фрейм уничтожается сразу после закрытия итема во FrameBar.

    Я хочу сказать о том, что к фрейму определенного итема можно обращаться только тогда, когда сам итем FrameBar открыт и видно его содержимое. То есть, когда он существует и не равен NIL (NULL).

    А обращатесь к фрейму вы правильно, но можно чуть короче:

    TFrame13(sFrameBar1->Items[0]->Frame).sButton1->Caption;

    TCount
    Participant
    'Support' wrote:

    Попробую повторить ситуацию в тесте и решить проблему к следующему релизу.

    Версия 12.08 – все как полагается)

    Правда, если, например, при анимации на переключаемой вкладке TsPageControl имеются кнопки TsSpeedButton, то они просто не прорисовываются. Появляются только если на них навести курсор.

    in reply to: Баг с TsMaskEdit #56649
    TCount
    Participant
    'Cinemaizer' wrote:

    Баг присутствует с версии 11.22 или 11.23. В версии 11.21 точно все было в порядке.

    Итак, в компоненте TsMaskEdit при включенной опции password char='*' возникают какие то странные символы “ППППП”. С компонентом TMaskEdit все хорошо.

    Скачал демку, запустил – вообще ничего не видно. Но оно и понятно, в отладчике вы не прописали пароль, то есть, поля Text у компонентов пустые.

    Но не в этом дело.

    Дело в том, что я поиздевался по-всякому, но так описываемый баг не словил, все отображается корректно.

    Возможно, дело в железе и версии Delphi?

    in reply to: sPageControl closeBtn #56589
    TCount
    Participant
    'Ildar' wrote:

    Я пробовал, данная обработка лишь добавляет действие к уже имеющемуся, или я что-то недопонял?

    Пробовали в данной процедуре устанавливать?

    Action:=acaHide;

    in reply to: sPageControl closeBtn #56587
    TCount
    Participant
    'Ildar' wrote:

    Подскажите пожалуйста можно ли как-то изменить действие closeBtn в sPageControl? чтобы вкладки не удалялись а скрывались, с возможностью их восстановить.

    Сам не пробовал, но в sPageControl есть событие OnCloseBtnClick…и в этой процедуре можно переопределить действие Action.

    procedure …(Sender: TComponent; TabIndex: Integer; var CanClose: Boolean; var Action: TacCloseAction);

    TCount
    Participant
    'Support' wrote:

    Как ведет себя версия 12.07?

    Установил. Спасибо, ошибок более не наблюдается)

    in reply to: Ошибка в дизайнере. Что делать? #56557
    TCount
    Participant
    'Support' wrote:

    Я нашел несколько ошибок в дизайн-тайм, постараюсь исправить в ближайшем релизе.

    Спасибо, буду ждать.

    in reply to: Беда с анимациями в Win10! #56491
    TCount
    Participant

    Проверил версию 12.05 на ту проблему, о которой данный топик…и вроде как анимации уже работают отлично!

    Еще потестю. Если все будет норм – топик закрою.

    P.S. Да будет AC без глюков! :a7:

    in reply to: Беда с анимациями в Win10! #56445
    TCount
    Participant
    'Stertor' wrote:

    Анимации – это зло. Не должно их быть в хорошей проге.

    Вон, офис новый почти весь мерцает и переливается, плавное затухание и прочие эффекты – а работать с ним стало почти невыносимо.

    Та мне, собственно, и не анимация нужна) у меня большой по размерам PageControl с множеством вкладок и компонентов в них…Мне нужна задержка анимации 0, чтобы это все перерисовать и сразу подать.

    Если этого не сделать, то происходит кошмар. Можно с удовольствием созерцать, как при переходе с вкладки на вкладку компоненты перерисовываются)

    Если бы для себя прогу делал – фиг с ним.

    Дак и не во мне дело. Разработчик AC если сделал возможность анимации, то она должна корректно отрабатывать. Разве не так?

    in reply to: TsRadioGroup: загадка с цветом #56410
    TCount
    Participant
    'Support' wrote:

    Текст в прозрачных компонентах рисуется с помощью данных шрифта заданных в секции парента.

    Это сделано для того, чтобы надпись была видна на любом фоне в скине, темный он или светлый – цвет всегда будет браться у этой же секции.

    Возможно, нужно придумать какое-то решение для особых случаев, например, если используется тень, то цвет а парента не нужно брать. Я подумаю.

    Это не критично. Я понял систему и теперь просто использую настройки секции панели.

    in reply to: Как с этим бороться? #56392
    TCount
    Participant
    'JackSon_by' wrote:

    Есть такое.

    Я включаю FlatSpinButton=true и не так “глаз режет”. )

    Да, я тоже включаю) Но все же…)

    in reply to: Вопрос по RepaintForms() #56370
    TCount
    Participant
    'Support' wrote:

    Есть еще вот такой вариант:

    Code:
    var
    M: TMessage;
    begin
    M := MakeMessage(SM_ALPHACMD, AC_REFRESH_HI, 0, 0);
    AlphaBroadCast(Handle, M);
    RedrawWindow(Handle, nil, 0, RDWA_ALLNOW);
    end;

    Как он перерисовывает?

    Вообще никак.

    Да ладно, я нашел рабочее решение вроде этого:

    procedure FullRepaint;

    var M: TMessage;L,A: integer;

    begin

    L:=ComponentCount-1;

    FOR A:=0 TO L DO IF Components[A] is TsSpeedButton THEN TsSpeedButton(Components[A]).SkinData.BGChanged:=True

    ELSE IF Components[A] is TsBitBtn THEN TsBitBtn(Components[A]).SkinData.BGChanged:=True;

    SPR.SkinData.BGChanged:=True;

    M:=MakeMessage(SM_ALPHACMD,AC_SETBGCHANGED_HI+1,0,0);

    AlphaBroadCast(Handle,M);

    RedrawWindow(Handle,NIL,0,RDWA_ALLNOW);

    end;

    TCount
    Participant
    'Stertor' wrote:

    Не по теме.

    Использовать темный скин (белые либо светло-серые надписи на тёмном либо чёрном фоне) – значит обречь свой проект на провал.

    Серьезно?))))

    in reply to: Вопрос по RepaintForms() #56362
    TCount
    Participant
    'Support' wrote:

    Для полной перерисовки формы и контролов на ней можно попробовать использовать такой код:

    Code:
    uses sVCLUtils, acntUtils, sMessages, sConst;

    procedure FullRepaint;
    var
    M: TMessage;
    begin
    M := MakeMessage(SM_ALPHACMD, AC_SETBGCHANGED_HI + 1, 0, 0);
    AlphaBroadCast(Handle, M);
    RedrawWindow(Handle, nil, 0, RDWA_ALLNOW);
    end;

    Спасибо, частично получилось)

    Частично, потому что не перерисовались бэкграунды у компонентов:

    1. sBitBtn (перерисовывается, только если после процедуры смены фона у формы просто кликнуть в любом месте формы).

    2. sSpeedButton (перерисовывается, только если после процедуры смены фона у формы навести на sSpeedButton курсор).

    Такие вот дела. Должен сказать, что процедура перерисовки окна вызывается для формы без фокуса, то есть из модально открытой формы.

    Странно это все. Ведь функция RedrawWindow по идее должна была сделать свое дело.

    А вот RepaintForms чудесным образом справляется с задачей, интересно как)

    P.S. С sSpeedButton'ами вопрос решается, если перед перерисовкой окна задать им SkinData.BGChanged:=True. Однако, проблематично каждую кнопку обработать…Хотя, если в цикле перебрать компоненты на форме определенного класса, то норм)

    Но может все же есть стандартное решение с помощью AC? Желательно быстрое) Если нет, то буду костылями своими решать)

    in reply to: Вопрос по RepaintForms() #56359
    TCount
    Participant
    'Support' wrote:

    А почему обычный Repaint не подходит? Или sSkinProvider1.SkinData.Invalidate?

    Попробовал – не получилось.

    Дело в том, что у меня фон формы прорисовывается в OnPaint формы. А на форме лежит куча компонентов, в том числе и sPageControl. Все эти компоненты частично прозрачные.

    И когда я пытаюсь программно сменить фон у формы, то получается все криво. Ведь компоненты уже “прокешировали” старый фон, используют его и ничего не знают о том, что у формы новый фон.

    Вот мне раньше и помогал метод RepaintForms. Но прикол в том, что мне нужно лишь одну форму перерисовать, в которой используется фон.

    Обычный Repaint бессилен, sSkinProvider1.SkinData.Invalidate тоже.

    in reply to: Куда подевался 1 пиксель? #56356
    TCount
    Participant

    Да! В версии 12.02 проблема исчезла. Спасибо!

    in reply to: Куда подевался 1 пиксель? #56355
    TCount
    Participant
    'Support' wrote:

    Пакет установился без этого файла? А в папке с компонентами такой файл есть?

    По какой ссылке скачивалось?

    Ой, прошу прощения) Я скачал версию 11.26 😮

    Сейчас установлю 12.02 и проверю, прорисовывается ли линия.

    in reply to: Куда подевался 1 пиксель? #56353
    TCount
    Participant
    'Support' wrote:

    В версии 12.02 это должно быть починено уже. Или все так же рисуется?

    Установил версию 12.02 и…

    [dcc32 Fatal Error] Unit1.pas(8): F2613 Unit 'acArcControls' not found.

    То есть, пропали все новые компоненты.

Viewing 20 posts - 81 through 100 (of 560 total)