Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.03.2011, 16:21   #1
Валера К
Пользователь
 
Аватар для Валера К
 
Регистрация: 09.09.2010
Сообщений: 10
По умолчанию on show вместо on create

Здравствуйте! Нашел исходник программы "мозайка" который срабатывает на событие on create, попробывал изменить на событие on show выдает ошибку...
Код:
unit Mw;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, Buttons;

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Image1: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DesktopBitmap   : TBitmap;
  gx, gy          : Integer;
  redRect         : TBitmap;
  rW, rH          : Integer;

const
  Delta=8;//÷èñëî êâàäðàòîâ íà êîòîðûå áóäåò ðàçáèòî îêíî (äîëæíî áûòü 2*n)

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

procedure InitScreen;
var
 i:integer;
begin
//ïîëó÷àåì áèòìàï äåñêòîïà
 DesktopBitmap:=TBitmap.Create;
 with DesktopBitmap do
  begin
   Width:=Screen.Width;
   Height:=Screen.Height;
  end;
 BitBlt(DesktopBitmap.Canvas.Handle,
                 0,0,Screen.Width,Screen.Height,
                            GetDC(GetDesktopWindow),0,0,SrcCopy);
 Form1.Image1.Picture.Bitmap:=DesktopBitmap;
 //èçíà÷àëüíûå êîîðäèíàòû redRect
 Randomize;
 gx:=Trunc(Random*Delta);
 gy:=Trunc(Random*Delta);
 Form1.Image1.Canvas.CopyRect(
            Rect(rW*gx, rH*gy, rW*gx+rW, rH*gy+rH),
                                 redRect.Canvas, Rect(0,0,rW,rH));
 //ðèñóåì ñåòêó
 for i:=0 to DELTA-1 do
  begin
   Form1.Image1.Canvas.MoveTo(rW*i,0);
   Form1.Image1.Canvas.LineTo(rW*i,Screen.Height);
   Form1.Image1.Canvas.MoveTo(0, rH*i);
   Form1.Image1.Canvas.LineTo(Screen.Width, rH*i);
  end;
end;

begin
 ShowCursor(False);
 SystemParametersInfo(SPI_SCREENSAVERRUNNING,1,0,0); 
 //SystemParametersInfo(spi_ScreenSaverRunning,1,@Dummy,0);
 Button1.Cancel:=true;//âûõîä íà "Esc"
 //Panel1.Left:=Button1.Left-10;
 //Panel1.Top:=Button1.Top-10;
 rW:=Screen.Width div Delta;
 rH:=Screen.Height div Delta;
 redRect:=TBitmap.Create;
 with redRect do
  begin
   Width:=rW;
   Height:=rH;
   Canvas.Brush.Color:=clRed;
   Canvas.Brush.Style:=bssolid;
   Canvas.Rectangle(0,0,rW,rH);
   Canvas.Font.Color:=clNavy;
   Canvas.Font.Style:=Canvas.Font.Style+[fsBold];
   Canvas.TextOut(2,2,'About');
   Canvas.Font.Style:=Canvas.Font.Style-[fsBold];
   Canvas.TextOut(2,17,'Delphi');
   Canvas.TextOut(2,32,'Programming');
  end;
 Timer1.Enabled:=False;
 Image1.Align:=alClient;
 Visible:=False;
 BorderStyle:=bsNone;
 Top:=0;
 Left:=0;
 Width:=Screen.Width;
 Height:=Screen.Height;
 InitScreen;
 Visible:=True;
 Timer1.Interval:=10; // ìåíüøå-áûñòðåå
 Timer1.Enabled:=True; // Çàïóñêàåì âûçîâ DrawScreen
end;

procedure TForm1.Timer1Timer(Sender: TObject);

procedure DrawScreen;
var
 r1,r2:TRect;
 Direction:integer;
begin
 r1:=Rect(rW*gx , rH*gy,  rW*gx+rW  , rH*gy+rH);
 Direction:=Trunc(Random*4);
  case Direction of
   0: gx:=Abs((gx+1) mod Delta);    //ïðàâî
   1: gx:=Abs((gx-1) mod Delta);    //ëåâî
   2: gy:=Abs((gy+1) mod Delta);    //íèç
   3: gy:=Abs((gy-1) mod Delta);    //âåðõ
  end; //case
 r2:=Rect(rW*gx , rH*gy,  rW*gx+rW  , rH*gy+rH);
 with Form1.Image1.Canvas do
  begin
   CopyRect(r1, Form1.Image1.Canvas, r2);
   CopyRect(r2, redRect.Canvas, redRect.Canvas.ClipRect);
  end;
end;

begin
 DrawScreen;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowCursor(True);
 Close;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 SystemParametersInfo(SPI_SCREENSAVERRUNNING,0,0,0);
end;

end.
Подскажите пожалуйста, что надо изменить в коде, что бы он срабатывал на событие on show.

Последний раз редактировалось Stilet; 30.03.2011 в 17:28.
Валера К вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка form.Show в create gufon Общие вопросы Delphi 4 17.03.2011 18:52
Hint don't show ЭдуардPhp Общие вопросы Delphi 5 04.03.2011 20:52
UserForm Hide Show Insainer Microsoft Office Excel 9 28.11.2010 16:31
then Form2.Show; beegl Общие вопросы Delphi 24 24.07.2008 09:53
Form.Show в Form.Create UnD)eaD)Snake Общие вопросы Delphi 6 07.09.2007 11:13