Форум: "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.041 c