Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 304

/ вопрос открыт /

Я хочу задать такой вопрос?
AlphaBlend:=tpue
AlphaBlendValue:=100
Form1 делаеться полупрозрачной, и
компоненты на ней тоже. Вопрос?
Можно сделать так что бы форма была полупрозрачной,
а компаненты на форме отображались в полном цвете.
И ещё, я сделал не стандартную кнопку(например круглую),
как мне поместить её на форму,ну и естественно дать ей
команду. Заранее благодарен.

Толков Геннадий Викторович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 10 февраля 2007, 00:51
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Роман

Здравствуйте, Толков Геннадий Викторович!По поводу прозрачности:как вариант можно сделать так-помастить на форму компонент Shape,установить Align:=alClient,Color-любой неиспользуеиый в программе,например clMaroon.У формы установить TransparentColor:=true,TransparentColorValue такой-же как и у Shape,BorderStyle:=bsNone.Компилируем - все компоненты на форме будут непрозрачными,а форма будет невидна.Также привожу код (автор Григорьев Антон)адресс сайта не помню:( ,там все откоментировано,форма будет полупрозрачной с заданым Alpha и цветом.
По поводу кнопок: если яправильно понимаю, то имеем что-то типа:
type
TMyButton=class(TCustomControl)
.....
end;
В таком случае:
var
butt:TMyButton;
...,а в createform пишем butt:=TMyButton.Create(self); и так далее, а все вещи вроде buttonclick должны быть описаны в TMyButton...
Или можно посмотреть на http://www.gigabyte.iatp.org.ua/index.html, в разделе компоненты есть EllipseButton.

Приложение:
  1. interface
  2.  
  3. uses
  4. Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  5. StdCtrls, Spin;
  6.  
  7. type
  8. TForm1 = class(TForm)
  9. Button1: TButton;
  10. Label1: TLabel;
  11. ColorDialog1: TColorDialog;
  12. SpinEdit1: TSpinEdit;
  13. Label2: TLabel;
  14. procedure FormCreate(Sender: TObject);
  15. procedure Button1Click(Sender: TObject);
  16. procedure SpinEdit1Change(Sender: TObject);
  17. procedure FormDestroy(Sender: TObject);
  18. private
  19.  
  20.  
  21.  
  22.  
  23. procedure WMEraseBkgnd(var Msg:TWMEraseBkgnd);message WM_EraseBkgnd;
  24. procedure WMPaint(var Msg:TWMPaint);message WM_Paint;
  25.  
  26.  
  27.  
  28. procedure WMEnterSizeMove(var Msg:TMessage);message WM_EnterSizeMove;
  29. procedure WMExitSizeMove(var Msg:TMessage);message WM_ExitSizeMove;
  30. public
  31. { Public declarations }
  32. end;
  33.  
  34. var
  35. Form1: TForm1;
  36.  
  37.  
  38.  
  39.  
  40.  
  41. implementation
  42.  
  43. {$R *.DFM}
  44.  
  45. type PRGBArray=^TRGBArray;
  46. TRGBArray=array[0..1000000] of TRGBTriple;
  47.  
  48.  
  49.  
  50.  
  51. procedure Delay(DelayTime:Integer);
  52. var TicksNow:Integer;
  53. begin
  54. TicksNow:=GetTickCount;
  55. repeat
  56. Application.ProcessMessages
  57. until GetTickCount-TicksNow>=DelayTime
  58. end;
  59.  
  60.  
  61.  
  62.  
  63. procedure TForm1.WMEraseBkgnd;
  64. begin
  65. Msg.Result:=1
  66.  
  67.  
  68.  
  69.  
  70. end;
  71.  
  72. procedure TForm1.WMPaint;
  73.  
  74.  
  75.  
  76.  
  77.  
  78. begin
  79. CW:=ClientWidth;
  80.  
  81.  
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108. BitBlt(BM.Canvas.Handle,0,0,BM.Width,BM.Height,DC,0,0,SrcCopy);
  109.  
  110.  
  111. end;
  112.  
  113.  
  114.  
  115.  
  116.  
  117. BM2.PixelFormat:=pf24bit;
  118. BM2.Canvas.Draw(-CX,-CY,BM);
  119.  
  120.  
  121. SL:=BM2.ScanLine[Y];
  122. for X:=0 to CW do
  123. begin
  124. SL[X].rgbtRed:=(Transparency*SL[X].rgbtRed+(100-Transparency)*GetRValue(TranspColor)) div 100;
  125. SL[X].rgbtGreen:=(Transparency*SL[X].rgbtGreen+(100-Transparency)*GetGValue(TranspColor)) div 100;
  126. SL[X].rgbtBlue:=(Transparency*SL[X].rgbtBlue+(100-Transparency)*GetBValue(TranspColor)) div 100
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142. SL[X].rgbtRed:=((CH-Y)*SL[X].rgbtRed+Y*GetRValue(TranspColor)) div CH;
  143. SL[X].rgbtGreen:=((CH-Y)*SL[X].rgbtGreen+Y*GetGValue(TranspColor)) div CH;
  144. SL[X].rgbtBlue:=((CH-Y)*SL[X].rgbtBlue+Y*GetBValue(TranspColor)) div CH;
  145.  
  146.  
  147.  
  148. }
  149. end
  150. end;
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169. end;
  170.  
  171. procedure TForm1.WMMove;
  172. begin
  173.  
  174. inherited
  175. end;
  176.  
  177. procedure TForm1.WMEnterSizeMove;
  178. begin
  179. Moving:=True;
  180. inherited
  181. end;
  182.  
  183. procedure TForm1.WMExitSizeMove;
  184. begin
  185. inherited;
  186. Moving:=False
  187. end;
  188.  
  189. procedure TForm1.FormCreate(Sender: TObject);
  190. begin
  191. BM:=TBitmap.Create;
  192.  
  193.  
  194.  
  195.  
  196.  
  197.  
  198.  
  199.  
  200.  
  201. BM.PixelFormat:=pf24bit;
  202. BM2:=TBitmap.Create;
  203. Moving:=False
  204. end;
  205.  
  206. procedure TForm1.Button1Click(Sender: TObject);
  207. begin
  208. if ColorDialog1.Execute then
  209. begin
  210. TranspColor:=ColorDialog1.Color;
  211. Invalidate
  212. end
  213. end;
  214.  
  215. procedure TForm1.SpinEdit1Change(Sender: TObject);
  216. begin
  217. Transparency:=SpinEdit1.Value;
  218. Invalidate
  219. end;
  220.  
  221. procedure TForm1.FormDestroy(Sender: TObject);
  222. begin
  223. BM.Free;
  224. BM2.Free
  225. end;
  226.  
  227. end.
  228.  


Ответ отправил: Роман (статус: 5-ый класс)
Время отправки: 10 февраля 2007, 01:51
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 1; последнее сообщение — 12 февраля 2007, 00:46; участников в обсуждении: 1.
Толков Геннадий Викторович

Толков Геннадий Викторович (статус: Посетитель), 12 февраля 2007, 00:46 [#1]:

Здравствуйте.Вы мне ответили на вопрс 304, только там мне не сильно понятно со своей кнопкой,нельзя ли более подробнее.Заранее благодарен.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:41
Выполнено за 0.02 сек.