Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "KOL";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Вниз

Вопрос касается BitBtn а   Найти похожие ветки 

 
RTWolf ©   (2004-04-10 23:23) [0]

Как в BitBtn при установке Enabled:=False; сделать так чтоб текст был "не активны", т.е. было видно, что Enabled действительно False?


 
Delphi5.01 ©   (2004-04-11 08:10) [1]

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


 
RTWolf ©   (2004-04-11 09:31) [2]

Нет, ты меня наверно не так понял. Мне надо, чтоб когда я Enabled устанавливаю в False, то как и у обычной кнопки надпись становилась серой. А в bitbtn"е цвет никак не меняется.

Кстати, спасибо, что расказал про двойную картинку, до этого я не знал что так можно :)


 
Delphi5.01 ©   (2004-04-11 10:42) [3]

Вы наверно проверяли цвет при проектировании!
Вы измените цвет и потом запустите программу, вы увидите что цвет изменился. Это недостатки визуализации msk.


 
RTWolf ©   (2004-04-11 11:21) [4]

Я на KOL кодю. Кароче трабл я исправил. Пришлось изменять KOL.pas (перерисовку кнопки). Да простит меня Владимир Кладов :)
Выкладываю исходник. И надеюсь в следующей версии это будет исправлено :)

Вот код: его надо вставить в kol.pas в строчку с номером где-то в районе 28100(для KOL v 1.91) если не найдете то ищите строчку
function WndProcBitBtn( Self_: PControl; var Msg: TMsg; var Rslt: Integer ): Boolean;
Т.к. изменения производил в этой процедуре

.................
       // Returned previous BkMode is either OPAQUE=1 or TRANSPARENT=2

     OldFont := 0;
     if assigned( Self_.fFont ) then
       OldFont := SelectObject( DIS.hDC, Self_.fFont.Handle );
    //Начало патча
     if  self_.Enabled then begin
       OldTextColor := SetTextColor( DIS.hDC, Color2RGB( Self_.fTextColor ) );

       Windows.GetTextExtentPoint32( DIS.hDC, PChar( CapText ), Length( CapText ),
       TextSz );
       W := TxRect.Right - TxRect.Left;
       H := TxRect.Bottom - TxRect.Top;
       Y := TxRect.Top + (H - TextSz.cy) div 2;
       case Self_.fTextAlign of
         taLeft: X := TxRect.Left;
         taCenter: X := TxRect.Left + (W - TextSz.cx) div 2;
         else {taRight:} X := TxRect.Right - TextSz.cx;
       end;
       if isDown then
       begin
         Inc( X, Self_.TextShiftX );
         Inc( Y, Self_.TextShiftY );
       end;
       if Y < 0 then
         Y := 0;
       if X < TxRect.Left then
         X := TxRect.Left;

       Windows.ExtTextOut( DIS.hDC, X, Y, Flags, @TxRect,
         PChar( CapText ), Length( CapText ), nil );
     end else begin
       OldTextColor := SetTextColor( DIS.hDC, Color2RGB( clWhite ) );

       Windows.GetTextExtentPoint32( DIS.hDC, PChar( CapText ), Length( CapText ),
       TextSz );
       W := TxRect.Right - TxRect.Left;
       H := TxRect.Bottom - TxRect.Top;
       Y := TxRect.Top + (H - TextSz.cy) div 2;
       case Self_.fTextAlign of
         taLeft: X := TxRect.Left;
         taCenter: X := TxRect.Left + (W - TextSz.cx) div 2;
         else X := TxRect.Right - TextSz.cx;
       end;
       if isDown then
       begin
         Inc( X, Self_.TextShiftX );
         Inc( Y, Self_.TextShiftY );
       end;
       if Y < 0 then
         Y := 0;
       if X < TxRect.Left then
         X := TxRect.Left;

       Windows.ExtTextOut( DIS.hDC, X+1, Y+1,  Flags, @TxRect,
         PChar( CapText ), Length( CapText ), nil );

       //==============
       OldTextColor := SetTextColor( DIS.hDC, Color2RGB( clGray ) );

     ////  Windows.GetTextExtentPoint32( DIS.hDC, PChar( CapText ), Length( CapText ),
      // TextSz );
       W := TxRect.Right - TxRect.Left+1;
       H := TxRect.Bottom - TxRect.Top+1;
       Y := (TxRect.Top + (H - TextSz.cy) div 2)+1;
       case Self_.fTextAlign of
         taLeft: X := TxRect.Left;
         taCenter: X := TxRect.Left + (W - TextSz.cx) div 2;
         else X := TxRect.Right - TextSz.cx;
       end;
       if isDown then
       begin
         Inc( X, Self_.TextShiftX );
         Inc( Y, Self_.TextShiftY );
       end;
       if Y < 0 then
         Y := 0;
       if X < TxRect.Left then
         X := TxRect.Left;

       SetBkMode( DIS.hDC, Windows.TRANSPARENT );
       Windows.ExtTextOut( DIS.hDC, X-1, Y-1, ETO_CLIPPED, @TxRect,
         PChar( CapText ), Length( CapText ), nil );
     end;
     //Конец патча
     //////////////////////////////////////////////////////////////////////////
     //  added 19 Nov 2001 to provide underlying mnemonic characters
     if Assigned( Self_.FBitBtnExtDraw ) then
       Self_.FBitBtnExtDraw( Self_, DIS.hDC, X, Y, TxRect, CapText, CapTxtOrig,
                             OldTextColor );
     //////////////////////////////////////////////////////////////////////////

     SetTextColor( DIS.hDC, OldTextColor );
     if OldFont <> 0 then
       SelectObject( DIS.hDC, OldFont );
....................



Страницы: 1 вся ветка

Форум: "KOL";
Текущий архив: 2004.10.17;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
6-1091955903
Тихан Петрович
2004-08-08 13:05
2004.10.17
CreateThread and winSock


3-1095336155
zorik
2004-09-16 16:02
2004.10.17
Связаные базы


1-1096560226
Никита
2004-09-30 20:03
2004.10.17
Извлечь цифру из строки


1-1096383555
Ivolg
2004-09-28 18:59
2004.10.17
Как таскать Image


14-1096438028
fathe
2004-09-29 10:07
2004.10.17
первые сети





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский