Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.08.2009, 09:41
4айНИК 4айНИК вне форума
Прохожий
 
Регистрация: 20.08.2009
Сообщения: 6
Репутация: 10
По умолчанию работа с CheckBox

Товарисчи! помогите плиз. я новичок - учусь в МИФИ заочно, попалась задачка с AboutBox - не могу решить.
При запуске программы должнна появляться AboutBox. По ее закрытии появляется главная форма. все перепробовал - не получацца. Поддковырка в опциях проекта mainForm устанавливается AboutBox, а Form1 как второстепенная. Заранее спасибо)

Последний раз редактировалось 4айНИК, 20.08.2009 в 09:45.
Ответить с цитированием
  #2  
Старый 20.08.2009, 10:31
Nyctos Kasignete Nyctos Kasignete вне форума
Активный
 
Регистрация: 29.03.2009
Сообщения: 300
Репутация: 94
По умолчанию

Непонятно, причем здесь 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  
Старый 24.08.2009, 12:30
4айНИК 4айНИК вне форума
Прохожий
 
Регистрация: 20.08.2009
Сообщения: 6
Репутация: 10
По умолчанию

просто спутал названия - торопился очень.
Фишка в том что в задании надо в опциях проекта главным окном делать AboutBox причем не в тексте программы а так именно в опциях. Проблеммы в том, что я незнаю что писать в обработке события AboutBox1 Button click((( Если писать Form1.Visible/enable:= true - выдает ошибку.
Ответить с цитированием
  #4  
Старый 25.08.2009, 01:17
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от 4айНИК
просто спутал названия - торопился очень.
Фишка в том что в задании надо в опциях проекта главным окном делать AboutBox причем не в тексте программы а так именно в опциях. Проблеммы в том, что я незнаю что писать в обработке события AboutBox1 Button click((( Если писать Form1.Visible/enable:= true - выдает ошибку.
Если у вас главным окном будет About, то получите массу сюрпризов.
1. Если вы закроете About а не скроете его, то главная форма так и не появится.
2. При закрытии вашей главной формы приложение не закроется, а так и будет висеть, пока не закроете About.
3. Сворачивание главной формы может приводить к неожиданным результат, которые зависят от ОС и версии Дельфи.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 25.08.2009, 08:44
4айНИК 4айНИК вне форума
Прохожий
 
Регистрация: 20.08.2009
Сообщения: 6
Репутация: 10
По умолчанию

проблем уже много - About скрыть или закрыть могу - а Form1 не появляется. Иногда при закрытии About прога вобсче вырубается. По условию задачи About должён быть Main...
Ответить с цитированием
  #6  
Старый 25.08.2009, 12:35
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Что-бы появилось ваше главное окно после скрытия About, надо ручками прописать его отображение. Допустим на вашем окне About есть кнопка закрытия, тогда событие для этой кнопки будет выглядеть так:
Код:
procedure TfrmAbout.Button1Click(Sender: TObject);
begin
 frmAbout.Hide;
 frmMain.Show;
end;
После того как отобразилось главное окно для закрытия всего приложения вам уже надо будет опять-же ручками вызывать закрытие окошка About т.к. оно главное для приложения.
Код:
procedure TfrmMain.Button1Click(Sender: TObject);
begin
 frmAbout.Close;
end;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 27.08.2009, 14:35
4айНИК 4айНИК вне форума
Прохожий
 
Регистрация: 20.08.2009
Сообщения: 6
Репутация: 10
Восклицание

ошибка
Ответить с цитированием
  #8  
Старый 27.08.2009, 17:34
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,723
Репутация: 52347
По умолчанию

Цитата:
Сообщение от 4айНИК
ошибка
Ну я же не телепат, чо-бы догадаться что за ошибка. Подробнее.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #9  
Старый 28.08.2009, 12:29
4айНИК 4айНИК вне форума
Прохожий
 
Регистрация: 20.08.2009
Сообщения: 6
Репутация: 10
Восклицание

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.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:09.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter