TCount

Forum Replies Created

Viewing 20 posts - 61 through 80 (of 560 total)
  • Author
    Posts
  • in reply to: Баг: sComboBox #57232
    TCount
    Participant

    Спасибо! В версии 12.19 все работает)

    TCount
    Participant
    'Morgerion' wrote:

    Последние скрины с Дельфи 2007 и там эта проблема сохраняется.

    Может порекомендуешь какую-нибудь Дельфи чуть помоложе где этого бы не было? Просто уверенности в этих новых дельфях нет увы.

    А куда делась уверенность?) новейшие версии Delphi прекрасно себя показывают) я не первый год на линейке Delphi XE. Сейчас у меня установлена 10.2 (Tokyo) – проблем нет, даже наоборот)

    in reply to: Баг: sComboBox #57191
    TCount
    Participant
    'Support' wrote:

    Спасибо за демку, буду изучать.

    Буду ждать результатов)

    TCount
    Participant
    'Support' wrote:

    Канва не временная, если включен скин.

    Можно где-то отметить у себя – задан шрифт уже или еще нет и задавать его если нужно, в этом событии.

    Но выигрыша в скорости практически не будет, я думаю (если сравнивать со всем остальным рисованием).

    Хорошо, спасибо.

    TCount
    Participant
    'Support' wrote:

    Тогда, его наверное один раз достаточно присвоить?

    Это мне и нужно. Но где его присваивать?

    Я вообще всю эту канитель затеял не потому, что сложно или некомфортно присвоить шрифт в OnPaint.

    Все только потому, что шрифт у меня получается присвоить только в OnPaint. А эта процедура может вызываться часто. И получается, что канве каждый раз будет присваиваться один и тот же шрифт…

    То есть, это все лишь вопрос оптимизации.

    Так как вот это не очень радует:

    PROCEDURE TF1.sPanel1Paint(Sender: TObject; Canvas: TCanvas);

    BEGIN

    Canvas.Font.Assign(Form1.Font);

    END;

    В принципе, если канва для панели лишь временная и постоянно заново создается, то тогда и смысла нет в подобной оптимизации. Если же нет, то хотелось бы всего один раз шрифт канве присвоить и не делать это при каждой ее перерисовки в OnPaint.

    P.S. Просто у TsPanel не свойства Canvas. Может до него можно добраться как-то и шрифт присвоить?

    TCount
    Participant
    'Support' wrote:

    Добрый день

    Или установить свойство Font панели или попробовать другой вариант: очистить свойство Caption, тогда процедура вывода текста не будет выполняться и шрифт не будет инициализирован заново.

    Других вариантов навскидку подсказать не могу.

    Наверное, вы меня не поняли) Шрифт итак у панели установлен, Caption пустой и вообще ShowCaption=False…

    Вот стандартная процедура OnPaint панели:

    PROCEDURE TF1.sPanel1Paint(Sender: TObject; Canvas: TCanvas);

    BEGIN

    ///что-нибудь выводим на Canvas

    Canvas

    END;

    Как раз Canvas не получает шрифт, установленный в свойстве панели Font. Вообще непонятно, какой шрифт устанавливается для Canvas.

    Получается, что я никак не могу на него влиять. Только если в самой процедуре OnPaint постоянно присваивать один и тот же шрифт.

    in reply to: Как отключить рамку у Фреймов? #57123
    TCount
    Participant
    'Yog' wrote:

    Это очень важный для меня вопрос, т.к. теперь все модули программы переношу на фреймы и их будет не мало. Помогите пожалуйста.

    Непонятно, откуда вообще эта рамка взялась) У меня такого нет.

    Наверное, лучше было бы приложить демку с данным эффектом.

    in reply to: sPageControl со свойством MultiLine #57093
    TCount
    Participant
    'Yog' wrote:

    Благодарю вас за ответ. А написать новый такой компонент дорого/сложно? Ниразу не сталкивался с данной задачей.

    Напишите свой компонент)

    Например, я для своих целей написал компонент вроде TListBox, но на основе TPaintBox. В нем графически выводятся нужный контент. Прокрутку можно легко организовать множеством способов.

    Ну и при выборе какого-то элемента в этом компоненте – программно переключать страницу PageControl.

    in reply to: sPageControl #57024
    TCount
    Participant
    'qwertehok' wrote:

    не хочу создавать в приложении 100500 форм, использую sPageControl

    подскажите как можно спрятать восстановить вкладку

    на onCloseBtnClick делаю Action:=acaHide;

    а вот как восстановить вкладку? как проверить что она спрятана?

    Все предельно просто:

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

    2. Чтобы показать спрятанную вкладку достаточно свойство TabVisible установить в TRUE.

    То есть, например, мы закрыли вкладку 1 (PageIndex=1) и хотим показать ее:

    with sPageControl1.Pages[1] do if not TabVisible then TabVisible:=True;

    или аналогичный код:

    if sPageControl1.Pages[1].TabVisible=False then sPageControl1.Pages[1].TabVisible:=True;

    in reply to: TsRadioGroup – жестоко #56992
    TCount
    Participant

    Спасибо за исправление!

    in reply to: TPopupMenu #56966
    TCount
    Participant
    'Support' wrote:

    Без скинов такое же поведение.

    Похоже, что такое поведение специально организовано с какой-то целью…

    И цель эта непонятна) Спасибо.

    in reply to: TsRadioGroup – жестоко #56953
    TCount
    Participant
    'Support' wrote:

    Не получается скачать. Нельзя ли сюда залить?

    Можно, просто я не сразу понял, как удалить прежний залитый контент, так как места не хватало)

    in reply to: TsRadioGroup – жестоко #56951
    TCount
    Participant
    'Support' wrote:

    Зачем что-то менять? Можно Dfm глянуть? Возможно какие-то параметры еще задействованы?

    Вот ссылка на мини-демку с исходниками:

    https://yadi.sk/d/5U4tlg763LVQuy

    in reply to: TsRadioGroup – жестоко #56939
    TCount
    Participant
    'Support' wrote:

    Можно пример посмотреть? Не получается сделать такое.

    В принципе, нормально. Просто раньше при размере в 49 пикселей в высоту у меня нормально отображались итемы. Теперь, чтобы этого достичь, нужно добавить еще ~16 пикселей.

    in reply to: Ошибка в SkinEditor #56788
    TCount
    Participant
    'Support' wrote:

    В версии 12.11 исправлено.

    Уровень прозрачности можно задать в поле внизу окна.

    Подтверждаю! Теперь все нормик. И прозрачность выбирается)

    Я почему про прозрачность спрашивал…в прошлых версиях редактора она была чот недоступна.

    В любом случае сейчас все норм и спасибо!

    in reply to: FrameBar и один Frame для всех Items #56743
    TCount
    Participant
    'Shepard' wrote:

    Можно и без нумерации итемов в дизайнере обойтись, этого вполне достаточно)

    Можно, если для каждого итема своя процедура OnCreateFrame)

    У меня просто привычка однотипные процедуры объединять в одну и уже внутри одной определять итем по Sender(в делфи) или, насколько я знаю, This (в C++).

    То есть, событие OnCreateFrame всех итемов ведет в одну процедуру.

    in reply to: FrameBar и один Frame для всех Items #56741
    TCount
    Participant
    'Shepard' wrote:

    В общем, как при нажатии на кнопку внутри фрейма внутри sFrameBar1 определить какая именно кнопка была нажата, если за основу всех итемов взят всего один фрейм TMainFrame?

    Не совсем понял, что имеется ввиду, но если я правильно понял…можно в процедуру создания итема-фрейма OnCreateFrame кнопке присваивать соответствующий номеру итема TAG.

    А также сам Tag итема нумеровать в дизайнере)

    В делфи тело такой процедуры выглядит так:


    Frame:=TFrame13.Create(NIL);

    TFrame13(Frame).sbutton1.Tag:=TsTitleItem(Sender).Tag;


    И при нажатии кнопки останется считать Tag.

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

    Попробовал. Воссоздал ситуацию в чистом проекте – беда та же. Даже фрейм новый сделал.

    Последний вариант – обозвать Frame13 как-то иначе, например: MyBarFrame.

    in reply to: Проблема с FrameBar #56682
    TCount
    Participant

    А еще что подумал…Ну так, чтобы попробовать теорию…

    Если у вас выдает ошибку “A component named Frame13 already exists”, то может стоит при создании фрейма внутри итема делать проверку на существование фрейма?

    например:

    if Frame<>NIL then FreeAndNIL(Frame);

    на C++ что-то вроде:

    if (Frame!=NULL) Frame->Destroy;

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

    Сделал:

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

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

    Заметил ещё одну странную вещь. При запуске программы, ни разу не открывая 1й фрейм, если нажать на кнопку с запросом к компонентам внутри 1го фрейма FrameBar с кодом:

    Code:
    sLabel1->Caption = TFrame13(sFrameBar1->Items->Items[0]->Frame).sButton1->Caption;
    sLabel2->Caption = TFrame13(sFrameBar1->Items->Items[0]->Frame).sLabel1->Caption;

    То выполняются обе строки и считываются оба значения… с компонентов внутри первого итема FrameBar, который, по идее, ещё не создан.

    Если открыть фрейм и снова нажать на кнопку, то снова вылезет “A component named Frame13 already exists”.

    Странно…такое чувство, что фрейм где-то уже создается.


    И еще я не знаю точно, как в C++ правильно присваивать объекты.

    Например, вариант работы с фреймом и FrameBar в делфи выглядит вот так:

    Frame:=TFrame13.Create(NIL);


    А вообще, попробуйте все тоже самое, что вы делаете, но в пустом проекте. В котором будет только Frame13 и FrameBar.

Viewing 20 posts - 61 through 80 (of 560 total)