Рейтинговые книги
Читем онлайн Советы по Delphi. Версия 1.4.3 от 1.1.2001 - Валентин Озеров

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 92 93 94 95 96 97 98 99 100 ... 123

В первой форме разместите поле редактирования и кнопку. Удалите все формы, кроме главной, из списка AutoCreate. Наконец, скопируйте приведенный ниже код в unit1, он позволит вам создавать форму по имени типа класса, введенному в поле редактирования.

unit Unit1;

interface

uses Unit2, Unit3, Unit4, Unit5, Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type TForm1 = class(TForm)

 Edit1: TEdit;

 Button1: TButton;

 procedure FormCreate(Sender: TObject);

 procedure Button1Click(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

 RegisterClass(Tform2);

 RegisterClass(Tform3);

 RegisterClass(Tform4);

 RegisterClass(Tform5);

end;

procedure TForm1.Button1Click(Sender: TObject);

var f : Tformclass;

begin

 f := tformclass(findClass(edit1.text));

 with f.create(self) do show;

end

Показ логотипа при запуске приложения III

Своим опытом делится Nomadic :

A: Смотрите пример в X:DELPHIDEMOSDBMASTAPPmastapp.dpr.

Удобно использовать функцию ShowSplashWindow из rxLib. 

Показ логотипа при запуске приложения IV

Как добавить логотип к вашему приложению

Логотип (заставка) является важной составляющей вашего приложения. Он позволяет занять время во время загрузки и сообщить пользователю дополнительные сведения о программе. Логотип сделает ваше приложение более профессиональным.

Кроме того, заставка позволяет не только отличить ваше приложение от другого, но и отличить одну версию приложения от другой.

Имеется множество типов заставок (Splash Screen). Самый распространный тип - показ логотипа во время загрузки приложения. Обычно такие экраны отображают имя приложения, автора, версию, авторские права и изображение или иконку, идентифицирующую приложение.

Также, некоторые приложения используют этот экран для показа линейки прогресса при выполнении длительного процесса. Примером такого типа экрана может быть диалог с выводом числа процентов выполненного запроса к базе данных, файловая задача, или задача обработки чисел. При длительных процессах наличие такого диалога означает вежливость программы по отношению к пользователю.

Надеюсь, вы оценили преимущества заставок. Давайте теперь попробуем создать простую заставку своими руками.

1. Добавьте форму в ваш проект --> File | New Form.. Комментарий: Заставка (Splash Screen) похожа на любую другую форму.

2. Измените свойство формы Name на SplashScreen

3. Измените свойство формы BorderStyle на bsNone

4. Измените свойство формы Position на poScreenCenter

5. Сделайте заставку привлекательной и функциональной путем добавления на нее необходимых компонентов и изображений. (компоненты Label, Panel, Image, Shape и Bevel)

6. Отредактируйте свойства добавленных компонентов

7. Выберите в меню Delphi IDE Options | Project

8. Уберите SplashScreen-форму из списка Auto-create-списка (списка автоматически создаваемых форм)

Комментарий: Вы динамически создаете экземпляр заставки

9. Добавьте модуль, содержащий TSplashScreen, в список используемых модулей главной формы вашего приложения. Пример:

unit Unit1;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes,Graphics, Controls, Forms, Dialogs, StdCtrls, unit2;  <– поместите сюда

Комментарий: В нашем примере TSplashScreen объявлен в Unit2

10. Выберите в меню Delphi IDE View | Project Source

11. Вставьте между ключевым словом begin и перед любым Application.Create() следующий код:

SplashScreen := TSplashScreen.Create(Application);

SplashScreen.Show;

SplashScreen.Refresh;

12. Измените поведение главной формы приложения при наступлении события OnShow. Добавьте следующий код:

SplashScreen.Free;

Комментарий: Реализация заставки с линейкой прогресса ничуть не сложнее, чем приведенный выше пример. Необходимо всего лишь вовремя выводить ее на экран: перед тем, как процесс начнется, и убирать только после того, как он закончится. Различие заключается в осуществлении связи (реализации механизма) между процессом и заставкой для правильного обновления линейки прогресса.

13. Запустите приложение. В приведенном выше примере, если скорость вашего компьютера значительна, то заставки вы можете и не увидеть. Следующий код демонстрирует технику создания заставки для вашего приложения — только будьте осмотрительней при его использовании.

Добавьте следующий код на этапе #11:

for x:= 1 to 10000000 do begin

 x:=x;

end;

{PROJECT1.DPR}

program Project1;

uses Forms, Unit1 in 'UNIT1.PAS' {Form1}, Unit2 in 'UNIT2.PAS' {SplashScreen};

{$R *.RES}

var x: longint;

begin

 SplashScreen:= TSplashScreen.Create(Application);

 SplashScreen.Show;SplashScreen.Refresh;

 for x:= 1 to 10000000 do begin

  x:=x;

  x:=x;

 end;

 Application.CreateForm(TForm1, Form1);

 Application.Run;

end.

{UNIT1.PAS}

unit Unit1;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, unit2;

type TForm1 = class(TForm)

 procedure FormShow(Sender: TObject);

private

 { Private declarations }

public

 { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.FormShow(Sender: TObject);

begin

  splashscreen.free;

end;

end.

{UNIT2.PAS}

unit Unit2;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

type TSplashScreen = class(TForm)

 Panel1: TPanel;

 Label1: TLabel;

 Label2: TLabel;

 Label3: TLabel;

 Shape1: TShape;

 Shape2: TShape;

 Shape3: TShape;

private

 { Private declarations }

public

 { Public declarations }

end;

var SplashScreen: TSplashScreen;

implementation

 {$R *.DFM}

end

Как правильно закрыть и удалить форму? Почему моя MDI Child форма при закрывании просто минимизируется?

Своим опытом делится Nomadic:

A: Обрабатывайте событие OnClose для формы и выставляйте в нем параметр Action в caFree. Дело в том, что его значение по умолчанию для MDI Child форм caMinimize. Кстати, если сделать Action := caNone, то форму нельзя будет закрыть.

Как установить максимальный и минимальный размер формы

Если вы хотите контролировать изменение пользователем размера вашей формы, воспользуйтесь установкой значения MinMax. (Если для этих целей вы используете метод resize, это работает, но выглядит не так хорошо.)

Примечание: Чтобы совсем запретить пользователю изменять размеры формы, задайте одинаковые значения для ее минимального и максимального значения. Вот пример того, как можно объявить и использовать в вашем приложении обработку системного сообщения wm_GetMinMaxInfo:

unit MinMax;

interface

uses SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs;

type TForm1 = class(TForm)

private

 { Private declarations }

 procedure WMGetMinMaxInfo(var MSG: Tmessage); message WM_GetMinMaxInfo;

public

 { Public declarations }

end;

var Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WMGetMinMaxInfo(var MSG: Tmessage);

Begin

 inherited;

 with PMinMaxInfo(MSG.lparam)^ do begin

  with ptMinTrackSize do begin

   X := 300;

   Y := 150;

  end;

  with ptMaxTrackSize  do begin

   X := 350;

   Y := 250;

  end;

 end;

1 ... 92 93 94 95 96 97 98 99 100 ... 123
На этой странице вы можете бесплатно читать книгу Советы по Delphi. Версия 1.4.3 от 1.1.2001 - Валентин Озеров бесплатно.

Оставить комментарий