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

Вниз

Как изменить вид кнопки?   Найти похожие ветки 

 
Alessio   (2002-06-13 23:24) [0]

Я хочу нарисовать собственные очертания у стандартной кнопки. Как мне это сделать? Если через Canvas, то как до туда добраться? Подскажите, пожалуйста!


 
allrussia   (2002-06-14 02:13) [1]

look here:

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


 
liho26   (2002-06-14 07:11) [2]

Метод, описанный мной выше меняет форму кнопки. Однако есть еще один способ, позволяющий перерисовывать компоненты, у которых есть 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;

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


 
ricks   (2002-06-18 00:47) [3]

Мне кажется, проще написать свой компонент, и вытворять там что-угодно ;-))


 
GrayFox   (2002-06-18 09:09) [4]

По моему проще добавить картинку в виде кнопки, менять ее при событии ОнКлик, или делать ее невидимой, а "нажатую" картинку потом на то место и видимой.



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

Форум: "Основная";
Текущий архив: 2002.07.01;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
8-1112
DDDeN
2002-02-23 07:23
2002.07.01
Микширование


6-1130
_toltec
2002-04-15 13:59
2002.07.01
SMS


8-1113
ZedZed
2002-02-19 19:13
2002.07.01
Аудио шкала!


1-954
hunter
2002-06-18 18:12
2002.07.01
Изменить ресурс в exe


1-970
MikeFW
2002-06-20 09:32
2002.07.01
TreeView. Хранение данных





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