IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Программирование (https://www.imho.ws/forumdisplay.php?f=40)
-   -   Delphi: как открыть новую форму? (https://www.imho.ws/showthread.php?t=45832)

makkintosh 12.12.2003 14:49

как открыть новую форму?
 
др. всем!
Вопрос. есть кнопарь. делаем его обработчик на нажатие.
Но мне надо открыть/ переключить другую форму.
ну.. есть главная форма. Кнопку нажимаешь и открывается
новая форма. есть конечно выход запускать отдельную прогу.
но помоему это не выход... помогите плиз.

RaZEr 12.12.2003 14:51

form2.show;

makkintosh 12.12.2003 14:56

Undeclared identifier Form3

RaZEr 12.12.2003 14:59

в uses добавь модуль с form3.

makkintosh 12.12.2003 15:00

как это пишется?

RaZEr 12.12.2003 15:05

Допиши в список модулей (в начале он), модуль где определена form3.

PS: И книжку купить не забудь ...

makkintosh 12.12.2003 15:06

я допиисал unit3
но form3 все равно не известна проге!

RaZEr 12.12.2003 15:14

Значит так дописал.

makkintosh 12.12.2003 15:15

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, unit3;

RaZEr 12.12.2003 15:21

Ну что можно сказать. Проверяй:

1. Это uses модуля где определена форма с кнопкой показывающей form3.
2. В unit3, определена форма с именем form3?

makkintosh 12.12.2003 15:25

Цитата:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, unit3;

type
TForm1 = class(TForm)
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}



procedure TForm1.Button1Click(Sender: TObject);
begin
{Disable}
Form1.BorderIcons := Form1.BorderIcons - [biSystemMenu, biMinimize, biMaximize];
end;



procedure TForm1.Button2Click(Sender: TObject);
begin
showmessage ('Окно присутствует');
end;


procedure TForm1.Button3Click(Sender: TObject);
begin

From3.Show;
end;

end.
Цитата:

unit Unit3;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm3 = class(TForm)
Label1: TLabel;
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;

implementation

{$R *.dfm}

end.


RaZEr 12.12.2003 15:32

Странно. Закрой проект, перезапусти delphi. Может глюк какой. Но код вроде в порядке.

aleks_k2 12.12.2003 15:34

А Form3 есть в списке Auto Create Forms?
Или покажи еще текст проекта (dpr)

makkintosh 12.12.2003 15:48

Цитата:

program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit3 in 'Unit3.pas' {Form3};

{$R *.res}

begin

Application.Initialize;


Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm3, Form3);
Application.Run;
end.
перезагрузил
все также

RaZEr 12.12.2003 15:59

Цитата:

From3.Show
всмотрись

aleks_k2 12.12.2003 16:23

Да, проблема была тривиальная, а глаз у наблюдателей замыленный. И вообще в таких случаях первым делом нужно имена скопировать через Copy-Paste.

makkintosh 12.12.2003 17:34

блин... точно......

Добавлено через 3 минуты:
сейчас успел написать ещё одну прогу. там этот баг исправлен.
в первой проге все работает, но во второй возникает ошибка access violation....
все так же. в чем там может возникать шибка?

Добавлено через 6 минут:
нифига не понимаю.
2 формы. одна открывается - другая с этой ошибкой
кстати - почему к одному приминительно showmodal а к другоу только show?

Добавлено через 5 минут:
все заработало. блин. что-то все в край глючит......
пришлось просто создать заново..
СПАСИБО!:yees:

Madness 13.12.2003 16:33

makkintosh
>в чем там может возникать шибка?
Скорей всего Application.CreateForm(TForm3, Form3); или опять ачепятки проверь.

showmodal - показывается форма и до ее закрытия в основную прогу не перейдешь.
show - просто показывается форма.

>все заработало.
Все рады :)

makkintosh 13.12.2003 18:19

Вложений: 1
другой вопрос. как я понял, напрямую к идентификаторам(переменным и т.д.) другой формы (юнита) нельзя обратиться.а как мне передавать инфу из одной форму в другую?


кстати - вот что у меня пока получилось. оцените плиз. (тока не очень жестко- знаю дельфи несколько дней:-) Но в любом случае - это дипломная работа)

aleks_k2 13.12.2003 18:26

Цитата:

Первоначальное сообщение от makkintosh
другой вопрос. как я понял, напрямую к идентификаторам(переменным и т.д.) другой формы (юнита) нельзя обратиться.а как мне передавать инфу из одной форму в другую?

Естественно можно доступится до чего угодно.
Если в другой форме не стоит private при обьявлении внутренних переменных, то они доступны всем.
Пишеш Form3.<Имя переменных>.

А вобще то IMHO RTFM. В данной ситуации читай описание классов, все это написано на первой же странице.

makkintosh 13.12.2003 18:34

(оффтопик)к сожалению расшифровку этой фразы нельзя на форуме пихать....:-)

RaZEr 13.12.2003 19:43

Цитата:

другой вопрос. как я понял, напрямую к идентификаторам...
Просьба создавать для отдельных вопросов отдельные темы. И также просьба указывать язык (или IDE) в названии темы.


Часовой пояс GMT +4, время: 23:08.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.