![]() |
|
|
#1
|
|||
|
|||
|
Товарисчи! помогите плиз. я новичок - учусь в МИФИ заочно, попалась задачка с AboutBox - не могу решить.
При запуске программы должнна появляться AboutBox. По ее закрытии появляется главная форма. все перепробовал - не получацца. Поддковырка в опциях проекта mainForm устанавливается AboutBox, а Form1 как второстепенная. Заранее спасибо) Последний раз редактировалось 4айНИК, 20.08.2009 в 09:45. |
|
#2
|
|||
|
|||
|
Непонятно, причем здесь CheckBox (в названии темы).
Можно, в принципе, по-разному. И не трогать опции проекта. Вот, например, модифицированный примерчик из справочной системы Delphi: Главная форма: Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
procedure WMSHOWWINDOW(var Msg: TMessage); message WM_SHOWWINDOW;
public
{ Public declarations }
end;
var
Form1: TForm1;
Startup: Boolean;
implementation
uses AboutBox;
{$R *.dfm}
procedure TForm1.WMSHOWWINDOW(var Msg: TMessage);
begin
if Startup then
begin
Msg.WParam := 0;
Startup := False;
Form2.ShowModal;
end;
end;
initialization
Startup := True;
end.Модуль с окном AboutBox: Код:
unit AboutBox;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 = class(TForm)
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.dfm}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if not IsWindowVisible(Form1.Handle) then
SendMessage(Form1.Handle, WM_SHOWWINDOW, 1, 0);
end;
end. |
|
#3
|
|||
|
|||
|
просто спутал названия - торопился очень.
Фишка в том что в задании надо в опциях проекта главным окном делать AboutBox причем не в тексте программы а так именно в опциях. Проблеммы в том, что я незнаю что писать в обработке события AboutBox1 Button click((( Если писать Form1.Visible/enable:= true - выдает ошибку. |
|
#4
|
||||
|
||||
|
Цитата:
1. Если вы закроете About а не скроете его, то главная форма так и не появится. 2. При закрытии вашей главной формы приложение не закроется, а так и будет висеть, пока не закроете About. 3. Сворачивание главной формы может приводить к неожиданным результат, которые зависят от ОС и версии Дельфи. |
|
#5
|
|||
|
|||
проблем уже много - About скрыть или закрыть могу - а Form1 не появляется. Иногда при закрытии About прога вобсче вырубается. По условию задачи About должён быть Main... |
|
#6
|
||||
|
||||
|
Что-бы появилось ваше главное окно после скрытия About, надо ручками прописать его отображение. Допустим на вашем окне About есть кнопка закрытия, тогда событие для этой кнопки будет выглядеть так:
Код:
procedure TfrmAbout.Button1Click(Sender: TObject); begin frmAbout.Hide; frmMain.Show; end; Код:
procedure TfrmMain.Button1Click(Sender: TObject); begin frmAbout.Close; end; |
|
#7
|
|||
|
|||
|
ошибка
![]() |
|
#8
|
||||
|
||||
|
Цитата:
|
|
#9
|
|||
|
|||
|
AboutBox.Hide - работает
Form1.Show - выдает следующее: Project Project1.exe raised exeption class EAccessViolation with message 'Access violation at address 0044A516 in module 'Project.exe'. Read of address 00000274'. Process stopped. Use steo or run to continue. ![]() |