Главная страница
    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.035 c
6-1091766035
race1
2004-08-06 08:20
2004.10.17
idhttp.onwork


4-1094827179
Иван_
2004-09-10 18:39
2004.10.17
Что такое IRQ прерывания?


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


1-1096891377
StrangerInANight
2004-10-04 16:02
2004.10.17
OnClick для пункта TreeView


4-1094886089
beatles_bntu
2004-09-11 11:01
2004.10.17
ani куросор из ресурса





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский