Конференция "Компоненты" » Кнопка на основе картинок.
 
  • {RASkov} © (01.04.08 17:17) [40]
    ...по окончанию процесса кнопка становится доступной...
  • Kolan © (01.04.08 17:21) [41]
    > DimaBr

    Правда не понял зачем эти извращения с курсором. Вроде и так ([24]) состояния правильно работают.
  • Kolan © (01.04.08 17:23) [42]
    Сделал так вывод кэпшена:

     ControlMiddle.X := Width div 2;
     ControlMiddle.Y := Height div 2;

     TextMiddle.X := Canvas.TextWidth(Caption) div 2;
     TextMiddle.Y := Canvas.TextHeight(Caption) div 2;

     Canvas.Brush.Style := bsClear;
     if FButtonState = mibsDisabled then
     begin
       Canvas.Font.Color := clBtnHighlight;  
       Canvas.TextOut((ControlMiddle.X — TextMiddle.X) + CaptionXOffset + 1,
         (ControlMiddle.Y — TextMiddle.Y) + CaptionYOffset + 1, Caption);
         
       Canvas.Font.Color := clBtnShadow;
       Canvas.TextOut((ControlMiddle.X — TextMiddle.X) + CaptionXOffset,
         (ControlMiddle.Y — TextMiddle.Y) + CaptionYOffset, Caption);
     end
     else
       Canvas.TextOut((ControlMiddle.X — TextMiddle.X) + CaptionXOffset,
         (ControlMiddle.Y — TextMiddle.Y) + CaptionYOffset, Caption);



    Повиду все нормально работает.
  • Игорь Шевченко © (01.04.08 17:31) [43]
    {RASkov} ©   (01.04.08 17:17) [39]

    Я бы для подобных извратов все равно сделал бы по образу и подобию TSpeedButton.UpdateTracking
  • Kolan © (01.04.08 17:57) [44]
    Хотелось бы, чтобы если картинка не задана, то рисовалась бы обычная…

    Изменил код так:
    TempPicture := GetImage(FButtonState);
     if not Assigned(TempPicture.Graphic) or (TempPicture.Graphic.Empty) then
       TempPicture := GetImage(mibsNormal);
     Canvas.StretchDraw(ClientRect, TempPicture.Graphic);



    Но почему-то все равно ничего не рисуется…
  • Kolan © (01.04.08 18:02) [45]
    Удалено модератором
    Примечание: Флудить завязываем
  • Kolan © (01.04.08 18:07) [46]
    А и еще. А как реагировать на изменение Caption? Написать сеттер&
  • Kolan © (01.04.08 18:15) [47]
    И все-таки все это дело мерцает :(. Как быть?
  • Игорь Шевченко © (01.04.08 19:52) [48]

    > А как реагировать на изменение Caption? Написать сеттер&


    Обрабатывать CM_TEXTCHANGED

    Ты когда-нибудь откроешь исходники VCL или так всю жизнь и будешь ключи подавать ? Тогда тебе в "Начинающие", навечно
  • Kolan © (02.04.08 10:38) [49]
    > Обрабатывать CM_TEXTCHANGED

    Я сомневаюсь в себе :). Получилось.

    А с мельканием что делать?
  • DimaBr © (02.04.08 11:10) [50]
    С мельканием - воевать
    ControlStyle := ControlStyle + [ csOpaque ] ;
  • Игорь Шевченко © (02.04.08 11:18) [51]

    > А с мельканием что делать?


    Скачай уже готовый компонент и не парься
  • DVM © (02.04.08 11:28) [52]

    > DimaBr ©   (01.04.08 11:33) [8]
    > Код DVM - я бы сказал не очень.

    Это не мой код, я там написал же, что код не очень. Просто под руку попался.
  • Kolan © (02.04.08 11:38) [53]
    > ControlStyle := ControlStyle + [ csOpaque ] ;

    Угу. Помогло.
    Игорь, Dima, благодарю. Все что хотель все сделал + про index узнал.  :)
  • DimaBr © (02.04.08 12:06) [54]

    > Игорь Шевченко ©   (02.04.08 11:18) [51]
    > Скачай уже готовый компонент и не парься

    В принципе - не верно.
    "Лучше один раз увидеть, чем сто раз услышать"
  • Игорь Шевченко © (02.04.08 12:30) [55]
    DimaBr ©   (02.04.08 12:06) [54]

    Раз пошел оффтопик - во всех нюансах компонентостроения лучше разбираться на действующих примерах, так как нюансы, они общие для многих компонентов. А не понимая этих нюансов и задавая на каждый чих вопрос в форуме - так всю жизнь и будешь ключи подавать и по форумам клянчить.
  • Kolan © (02.04.08 12:33) [56]
    > [55] Игорь Шевченко ©   (02.04.08 12:30)

    К сожалению к компонентам скачанным с нета у меня нет доверия. А незная нормальных решений я не могу понять хорошо написано или нет…

    ЗЫ
     До задания вопроса я скачал 3 штуки и посмотрел. Смысл везде один и тот же.
  • Игорь Шевченко © (02.04.08 12:37) [57]
    Kolan ©   (02.04.08 12:33) [56]

    Какая разница "хорошо написано" или нет - главное, чтобы работало, как надо.
 
Конференция "Компоненты" » Кнопка на основе картинок.
Есть новые Нет новых   [134464   +62][b:0][p:0.001]