Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

кнопка прямо на рабочем столе [D5, Win95/98]


Страницы:   1 2

Doctor Deejay ©   (2002-07-02 00:19:00) 

Как добавить кнопку прямо на рабочий стол? И не только кнопку.
Если можно, то сразу с кодом :)


Mashinist   (2002-07-02 00:49:00) [21]

Есть такая беда.
Я тут давеча Уважаемых Мастеров достал с проблемой отсылания главной формы программы "на дно" http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1024255905&n=0
Надо создать форму, растянутую на весь экран, сделать ее прозрачной и отослать "на дно".
Сначала отсылаешь ее назад при onActivate, а потом при каждом onMouseMove. Или как вариант - кидаешь на форму таймер и по таймеру отсылаешь ее "на дно".
Код: сначала кинь на форму кнопку и таймер, а потом замени код на следующий:

unit unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
ExtCtrls, ComCtrls, Buttons;
type
TForm1 = class(TForm)
Timer1: TTimer;
Button1: TButton;

procedure Timer1Timer(Sender: TObject);
protected
procedure RebuildWindowRgn;
procedure Resize; override;
public
constructor Create(AOwner: TComponent); override;
end;
var Form1 : TForm1;
implementation
{$R *.DFM}

constructor TForm1.Create(AOwner: TComponent);
begin inherited;
HorzScrollBar.Visible:= False;
VertScrollBar.Visible:= False;
RebuildWindowRgn;
end;

procedure TForm1.Resize;
begin inherited;
RebuildWindowRgn;
end;
procedure TForm1.RebuildWindowRgn;
var FullRgn, Rgn: THandle; ClientX, ClientY, I: Integer;
begin
ClientX:= (Width - ClientWidth) div 2;
ClientY:= Height - ClientHeight - ClientX;
FullRgn:= CreateRectRgn(0, 0, Width, Height);
Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +ClientHeight);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
for I:= 0 to ControlCount -1 do with Controls[I] do begin
Rgn:= CreateRectRgn(ClientX + Left, ClientY + Top, ClientX + Left +Width, ClientY + Top + Height);
CombineRgn(FullRgn, FullRgn, Rgn, rgn_Or);
end;
SetWindowRgn(Handle, FullRgn, True);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
SetWindowPos(Form1.Handle, HWND_BOTTOM, 0, 0, 0, 0, SWP_NOMOVE OR SWP_NOSIZE);
end;

end.



Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо