Главная страница
    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.039 c
1-1096550367
Zilog
2004-09-30 17:19
2004.10.17
Вопрос! Некорректное завершение работы приложения


3-1095318686
Мирон
2004-09-16 11:11
2004.10.17
TClientDataSet не обновляет базу при добавлении новой записи


6-1092032506
fylhtq
2004-08-09 10:21
2004.10.17
А кавк програмно подключить сетевой ресурс?


1-1097053291
Belkova
2004-10-06 13:01
2004.10.17
StrToDate


4-1094910412
Davinchi
2004-09-11 17:46
2004.10.17
Получение WndProc от запущенного приложения





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