|
#1
|
|||
|
|||
работа с CheckBox
Товарисчи! помогите плиз. я новичок - учусь в МИФИ заочно, попалась задачка с 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. |