| 
| 
 | Вопрос # 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.
 Приложение:Переключить в обычный режим interface uses  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,  StdCtrls, Spin; type  TForm1 = class(TForm)    Button1: TButton;    Label1: TLabel;    ColorDialog1: TColorDialog;    SpinEdit1: TSpinEdit;    Label2: TLabel;    procedure FormCreate(Sender: TObject);    procedure Button1Click(Sender: TObject);    procedure SpinEdit1Change(Sender: TObject);    procedure FormDestroy(Sender: TObject);  private        procedure WMEraseBkgnd(var Msg:TWMEraseBkgnd);message WM_EraseBkgnd;    procedure WMPaint(var Msg:TWMPaint);message WM_Paint;       procedure WMEnterSizeMove(var Msg:TMessage);message WM_EnterSizeMove;    procedure WMExitSizeMove(var Msg:TMessage);message WM_ExitSizeMove;  public    { Public declarations }  end; var  Form1: TForm1;     implementation {$R *.DFM} type PRGBArray=^TRGBArray;     TRGBArray=array[0..1000000] of TRGBTriple;    procedure Delay(DelayTime:Integer); var TicksNow:Integer;  begin   TicksNow:=GetTickCount;   repeat    Application.ProcessMessages   until GetTickCount-TicksNow>=DelayTime  end;    procedure TForm1.WMEraseBkgnd; begin  Msg.Result:=1     end; procedure TForm1.WMPaint;       begin   CW:=ClientWidth;                                 BitBlt(BM.Canvas.Handle,0,0,BM.Width,BM.Height,DC,0,0,SrcCopy);      end;        BM2.PixelFormat:=pf24bit;   BM2.Canvas.Draw(-CX,-CY,BM);       SL:=BM2.ScanLine[Y];     for X:=0 to CW do      begin       SL[X].rgbtRed:=(Transparency*SL[X].rgbtRed+(100-Transparency)*GetRValue(TranspColor)) div
100;       SL[X].rgbtGreen:=(Transparency*SL[X].rgbtGreen+(100-Transparency)*GetGValue(TranspColor)) div
100;       SL[X].rgbtBlue:=(Transparency*SL[X].rgbtBlue+(100-Transparency)*GetBValue(TranspColor)) div
100                           SL[X].rgbtRed:=((CH-Y)*SL[X].rgbtRed+Y*GetRValue(TranspColor)) div CH;            SL[X].rgbtGreen:=((CH-Y)*SL[X].rgbtGreen+Y*GetGValue(TranspColor)) div CH;            SL[X].rgbtBlue:=((CH-Y)*SL[X].rgbtBlue+Y*GetBValue(TranspColor)) div CH;               }      end    end;                    end; procedure TForm1.WMMove; begin   inherited end; procedure TForm1.WMEnterSizeMove; begin  Moving:=True;  inherited end; procedure TForm1.WMExitSizeMove; begin  inherited;  Moving:=False end; procedure TForm1.FormCreate(Sender: TObject); begin  BM:=TBitmap.Create;           BM.PixelFormat:=pf24bit;  BM2:=TBitmap.Create;  Moving:=False end; procedure TForm1.Button1Click(Sender: TObject); begin  if ColorDialog1.Execute then   begin    TranspColor:=ColorDialog1.Color;    Invalidate   end end; procedure TForm1.SpinEdit1Change(Sender: TObject); begin  Transparency:=SpinEdit1.Value;  Invalidate end; procedure TForm1.FormDestroy(Sender: TObject); begin  BM.Free;  BM2.Free end; end. 
|  | Ответ отправил: Роман (статус: 5-ый класс)Время отправки: 10 февраля 2007, 01:51
 Оценка за ответ: 5
 |  
 Мини-форум вопросаВсего сообщений: 1; последнее сообщение — 12 февраля 2007, 00:46; участников в обсуждении: 1. 
|   | Толков Геннадий Викторович (статус: Посетитель), 12 февраля 2007, 00:46 [#1]:Здравствуйте.Вы мне ответили на вопрс 304, только там мне не сильно понятно со своей кнопкой,нельзя ли более подробнее.Заранее благодарен. |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |