Создание окна программы и других компонентов
средствами Windows
Довольно нудный пример, так-что скачайте его и разберитесь дома.
И вообще , тем кто хочет так писать программы лучше заняться C++
Хотя иногда ну просто надо сделать что-нибудь типа этого. К оглавлению
procedure TForm1.FormShow(Sender: TObject);
var
A,B : TRect;
Cursor: TPoint;
begin
GetCursorPos(Cursor);
A:= rect(Cursor.x,Cursor.y,0,0);
B:= Form1.BoundsRect;
DrawAnimatedRects(Form1.Handle, 3, A,B);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
A, B: TRect;
begin
Form1.Visible:=false;
A:= rect(Screen.Width,Screen.Height,0,0);
B:= Form1.BoundsRect;
DrawAnimatedRects(Form1.Handle, 3, B,A);
end;
В этом примере также реализаван запуск программы без показывания окна
окно становиться видимым через 5 секунд после запуска
var
Form1: TForm1;
i:integer;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm := False; //скрывает форму при старте
Form1.Timer1.Interval:=100;
Form1.Caption:='Форма становиьтся видимой через 5 секунд после запуска';
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
i:=i+1;
if i=50 then begin
Form1.Visible:=True; // это наиболее короткий способ восстановления
  // видимости окна, но он не всегда может
быть применен
  // в том случае если вы хотите заставить
быть видимым окно
  // не своей программы то следует воспользоваться
  // методом пирведенным ниже и заключенным
в { } на место Application.Handle
  // ставится Handle интересующего вас
окна
{ ShowWindow(Application.Handle, SW_RESTORE);
ShowWindow(Application.MainForm.Handle, SW_RESTORE);
begin
for I := 0 to Application.MainForm.ComponentCount -1 do
if Application.MainForm.Components[I] is TWinControl then
with Application.MainForm.Components[I] as TWinControl do
if Visible then
begin
ShowWindow(Handle, SW_SHOWDEFAULT);
for J := 0 to ComponentCount -1 do
if Components[J] is TWinControl then
ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
end;
end; }
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_HIDE); //Скрывает закладку в панели задач
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ShowWindow(Application.Handle, SW_RESTORE); //Восстанавливает закладку в панели
задач
end;
end. К оглавлению
Не показывать окно по CTRL+ALT+DEL
var
Form1: TForm1;
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall;
external 'KERNEL32.DLL';
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 1);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if not (csDesigning in ComponentState) then
RegisterServiceProcess(GetCurrentProcessID, 0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:='Жмакайте на CTRL ALT DEL и на кнопки на форме секите результат';
end;
private
{ Private declarations }
procedure WMSysCommand(var Message: TWMSysCommand);
message wm_SysCommand;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
const
cm_MyCommand = $00A0;
procedure TForm1.FormCreate(Sender: TObject);
var
MenuH: HMenu;
procedure AppendIt(MenuH: HMenu);
begin
AppendMenu(MenuH, mf_String, cm_MyCommand, 'моя команда...');
end;
begin
MenuH := GetSystemMenu(Handle, False);
AppendIt(MenuH);
MenuH := GetSystemMenu(Application.Handle, False);
AppendIt(MenuH);
end;
procedure TForm1.WMSysCommand(var Message: TWMSysCommand);
begin
case Message.CmdType of
cm_MyCommand: ShowMessage('Нажата!');
else
inherited;
end;
end; К оглавлению