Виртуальная библиотека Delphi - [19]
>DragAcceptFiles(Handle, False);
>end;
>end.
Часто возникает проблема — в многооконном приложении необходимо обратить внимание пользователя на то, что какое-то из окон требует внимания (например, к нему пришло сообщение по DDE, в нем завершился какой-либо процесс, произошла ошибка...). Это легко сделать, используя команду API FlashWindow:
>procedure TForm1.Timer1Timer(Sender: TObject);
> begin FlashWindow(Handle,true);
>end;
В данном примере FlashWindow вызывается по таймеру ежесекундно, что приводит к миганию заголовка окна.
Сведения о программе, авторские права и т.д., лучше оформить в виде отдельной формы и показывать ее при запуске программы (как это сделано в Word).
Сделать это не сложно:
1. Создаете форму (например SplashForm).
2. Объявляете ее свободной (availableForms).
3. В Progect Source вставляете следующее (например):
>program Splashin;
>uses Forms, Main in 'MAIN.PAS', Splash in 'SPLASH.PAS'
>{$R *.RES}
>begin
> try
> SplashForm := TSplashForm.Create(Application);
> SplashForm.Show;
> SplashForm.Update;
> Application.CreateForm(TMainForm, MainForm);
> SplashForm.Hide;
> finally
> SplashForm.Free;
> end;
> Application.Run;
>end.
И форма SplashForm держится на экране пока выполняется Create в главной форме. Но иногда она появляется и пропадает очень быстро, поэтому нужно сделать задержку:
1. Добавляете на форму таймер с событием:
>procedure TSplashForm.Timer1Timer(Sender: TObject);
>begin
> Timer1.Enabled := False;
>end;
2. Событие onCloseQuery для формы:
>procedure TSplashForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
>begin
> CanClose := Not Timer1.Enabled;
>end;
3. И перед SplashForm.Hide; ставите цикл:
>repeat
> Application.ProcessMessages;
>until SplashForm.CloseQuery;
4. Все! Осталось установить на таймере период задержки 3-4 секунды.
5. На последок, у такой формы желательно убрать Caption:
>SetWindowLong(Main.Handle,GWL_STYLE, GetWindowLong(Main.Handle, GWL_STYLE) AND NOT WS_CAPTION OR WS_SIZEBOX);
Эта форма имет прозрачный фон!!!
>unit unit1;
>interface
>uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> StdCtrls;
>type
> TForm1 = class(TForm)
> Button1: TButton;
> Button2: TButton;
> // это просто кнопка на форме - для демонстрации
> 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);
> // создаем регион для клиентской части формы
> // и вычитаем его из FullRgn
> Rgn:= CreateRectRgn(ClientX, ClientY, ClientX + ClientWidth, ClientY +
>ClientHeight);
> CombineRgn(FullRgn, FullRgn, Rgn, rgn_Diff);
>// теперь добавляем к FullRgn регионы каждого контрольного элемента
> 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;
>end.
>А как Вам понравится эта форма ?
>unit rgnu;
>interface
>uses
> Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
> Buttons, Menus;
>type
> TForm1 = class(TForm)
> procedure FormCreate(Sender: TObject);
> procedure Button1Click(Sender: TObject);
> procedure FormPaint(Sender: TObject);
> private
> { Private declarations }
> rTitleBar : THandle;
> Center : TPoint;
> CapY : Integer;
> Circum : Double;
> SB1 : TSpeedButton;
> RL, RR : Double;
> procedure TitleBar(Act : Boolean);
> procedure WMNCHITTEST(var Msg: TWMNCHitTest);
> message WM_NCHITTEST;
> procedure WMNCACTIVATE(var Msg: TWMNCACTIVATE);
> message WM_NCACTIVATE;
> procedure WMSetText(var Msg: TWMSetText);
> message WM_SETTEXT;
> end;
>var
> Form1: TForm1;
>implementation
>{$R *.DFM}
>CONST
> TitlColors : ARRAY[Boolean] OF TColor =
> (clInactiveCaption, clActiveCaption);
> TxtColors : ARRAY[Boolean] OF TColor =
> (clInactiveCaptionText, clCaptionText);
>procedure TForm1.FormCreate(Sender: TObject);
>VAR
> rTemp, rTemp2 : THandle;
> Vertices : ARRAY[0..2] OF TPoint;
> X, Y : INteger;
>begin
> Caption := 'OOOH! Doughnuts!';
> BorderStyle := bsNone; {required}
> IF Width > Height THEN Width := Height
> ELSE Height := Width; {harder to calc if width <> height}
> Center := Point(Width DIV 2, Height DIV 2);
> CapY := GetSystemMetrics(SM_CYCAPTION)+8;
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге собраны предания и поверья о призраках ночи — колдунах и ведьмах, оборотнях и вампирах, один вид которых вызывал неподдельный страх, леденивший даже мужественное сердце.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
…«Песнь о Нибелунгах» принадлежит к числу наиболее известных эпических произведений человечества. Она находится в кругу таких творений, как поэмы Гомера и «Песнь о Роланде», «Слово о полку Игореве» и «Божественная комедия» Данте — если оставаться в пределе европейских литератур…В. Г. Адмони.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.