Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.17;
Скачать: CL | DM;

Вниз

Вопрос касается 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 вся ветка

Текущий архив: 2004.10.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.033 c
1-1096396109
shrek
2004-09-28 22:28
2004.10.17
Как сделать нормальное табулирование по edit ам?


1-1096303053
Nkrd
2004-09-27 20:37
2004.10.17
активный richedit


3-1095752054
Rule
2004-09-21 11:34
2004.10.17
Непонятное суммирование в IB в storedprocedure


1-1096959014
MSerg
2004-10-05 10:50
2004.10.17
Циклы


10-1049440442
Mike
2003-04-04 11:14
2004.10.17
HTTP Proxy