Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.006 c
3-862
Akhmadey
2002-06-06 15:30
2002.07.01
Проблема с lookup-полями


3-866
Demon Ltd
2002-06-04 23:03
2002.07.01
связать базу с TreeView


14-1184
Sejatel
2002-05-27 04:08
2002.07.01
Не


1-1044
Arkan
2002-06-18 17:22
2002.07.01
Dos-unix


7-1223
sammy
2002-04-01 08:11
2002.07.01
озвучка





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