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

Вниз

BitBtn   Найти похожие ветки 

 
Sniffer ©   (2002-06-17 11:53) [0]

Привет всем! Загрузил в BitBtn картинку, но беда в том, что BitMap принял форму картинки, а основной цвет(белый) заменил на clBtnFace! Скажите пожалуйста почему? И ещё вопросик....Можно ли как-то сделать так, чтоб кнопка становясь активной не выделялась пунктиром?


 
Miss ©   (2002-06-17 12:14) [1]

Картинку необходимо отредактировать , например в Paint"е, так, чтобы цвет фона картинки был цвет "Фуксия" (розово-фиолетовый)


 
liho26 ©   (2002-06-17 12:16) [2]

Про второй вопрос могу сказать то, что Microsoft придумала этот пунктир для людей с расстройством зрения. Для того, чтобы его "отклчить" надо кнопку перерисовать.


 
KSergey ©   (2002-06-17 13:29) [3]

По поводу цвета "фуксия" (хоть название узнать ;): я не знаю, почему его так любят использовать для отображения фона, но на самом деле все немного не так: за фоновый цвет картинки принимается цвет ее нижней левой точки. И не важно, какой он был на картинке - все точки этого цвета (того, которого левая нижняя точка) заменятся на фоновый цвет кнопки.
Так что тут надо селать, видимо, так: фон картинки залить белым, а нижнюю левую точку сделать иного, не использующегося на данной картинке (а хоть и "фуксией"), цвета. Но вот что делать с "выщербленой" - тут придется дизайнерское умение приложить, вероятно...


 
Sasha9 ©   (2002-06-17 15:05) [4]

speedbutton не выделяется пунктиром


 
Sniffer ©   (2002-06-17 15:31) [5]

Всё ок! Со цветом я с вашей помощью, за что огромное сбасибо, разобрался... А вот с пунктиром до сих пор проблемы...

>liho26
>Для того, чтобы его "отклчить" надо кнопку перерисовать.

Пробовал, не получилось...

>Sasha9
>speedbutton не выделяется пунктиром

Ещё как выделяется :(


 
Sniffer ©   (2002-06-17 22:45) [6]

Народ, дык кто скажет как избавиться от надоедливого выдиления пунктиром?


 
Z0mb7   (2002-06-18 02:56) [7]

SpeedButton сделай Transparent и Flat в true. Красиво и никаких тебе пунктиров.


 
Z0mb7   (2002-06-19 03:22) [8]

Ах да! Забыл! Tab stop в свойствах в false. Это из-за него. Чтоб без мыши можно было... табом. Зачем придумали? Не понимаю. Вот.


 
liho26 ©   (2002-06-19 07:10) [9]

Этот материал был опубликован мной тут:

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1023996282&n=0


Тем не менее, еще раз привожу его сдесь:


Метод, описанный мной выше меняет форму кнопки. Однако есть еще один способ, позволяющий перерисовывать компоненты, у которых есть Handle. Приведенный ниже пример был написан в D6 и протестирован на BitBtn. Конечно же он долек от совершенства и его надо (и нужно!) дорабатывать. И, все же, в целях обучения его можно использовать.
Итак, рассмотрим процедуру, которую можно вставлять в любой обработчик события.


procedure TForm1.ChangeButton(fill, bkgraund: TColor);
Var
BitCanvas: TCanvas;
begin
BitCanvas:=TCanvas.Create;
BitCanvas.Handle:=GetwindowDC(BitBtn1.Handle);
BitCanvas.Brush.Color:=fill;
BitCanvas.FillRect(BitBtn1.ClientRect);
BitCanvas.Brush.Color:=bkgraund;
BitCanvas.FrameRect(BitBtn1.ClientRect);
ReleaseDC(BitBtn1.Handle,BitCanvas.Handle);
BitCanvas.Free;
end;


Как это работает? Да все очень просто. В процедуру передаются два параметра TColor. Первый для закраски кнопки, второй для отрисовки бордюра. Далее объявляется и создается переменная BitCanvas, Handl"y которой передается Handle любого элемента, который его имеет (я говорю про Handle). В данном примере - кнопка BitBtn1. В следующих двух строках устанавливаем цвет кисти для заливки и заливаем кнопку. Еще двумя строка ниже меняем цвет кисти на другой и рисуем бордюр. Освобождаем DC и освобождаем BitCanvas.

Теперь в обрабочике формы onPaint пишем следующее:


procedure TForm1.FormPaint(Sender: TObject);
begin
ChangeButton($00FDF0EC,clblack);
end;


В onClick кнопки

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
ChangeButton($00F8C8BA,clblue);
end;


В onMouseDown

procedure TForm1.BitBtn1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ChangeButton($00F8C8BA,clred);
end;


В onMouseUp

procedure TForm1.BitBtn1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ChangeButton($00FDF0EC,clblack);
end;


Простенькая кнопка получилась :)
Я еще раз повторю, что пример далек от совершенства и приведен сдесь только в целях ознакомления.
-----------------------------
С уважением ко всем присутствующим




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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
1-1087
vads
2002-06-19 10:35
2002.07.01
Работаю с Excel через OLE.


14-1182
малой
2002-05-31 12:55
2002.07.01
библиотека компонентов RXLib


1-935
Vitalik
2002-06-19 15:51
2002.07.01
Debugger


4-1260
Alexander
2002-05-01 17:00
2002.07.01
Как, зная ID кнопки (из файла res) определить, что её нажали?


14-1152
Дремучий
2002-05-29 11:48
2002.07.01
Задачка! для 6 класса...