Форум программистов, компьютерный форум, киберфорум
Наши страницы
Lazarus
Войти
Регистрация
Восстановить пароль
 
hlr52917
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 41
1

Динамические формы

11.05.2017, 20:38. Просмотров 296. Ответов 8

Что я не сделал или сделал не правильно? Есть динамическая по клику создается другая форма, но она ругается.
Это одна форма:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
бла бла
implementation
 
uses
  Unit2, Unit4;
 
var
   Form4: TForm4;  
procedure TForm3.Button1Click(Sender: TObject);
begin
     Form4:=TForm4.Create(Application);
     Form4.SQLQuery1.SQL.Text:
     бла бла
     Form4.SQLQuery1.Open;
     Form4.Show;
     Form4.Button2.Click; 
end;
Это вторая форм:
Delphi
1
2
3
4
5
6
7
implementation
 
uses
  Unit2;  
procedure TForm4.Button2Click(Sender: TObject);
begin
  Form4.Label1.Caption:=Form4.SQLQuery1.FieldByName....\\\ Здесь если впереди пишу Form4 ругается, а если убирают не срабатывает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2017, 20:38
Ответы с готовыми решениями:

Динамические деструкторы. Очистка формы
Здравствуйте дорогие форумчане. Задача состоит в том что имеется класс методы...

Чем являются компоненты, входящие в состав формы для класса этой формы?
То есть объявляется класс нашей формы: type TForm1 = class(TForm) Button1:...

Динамические масссивы.
Если в делфи приравнять 2 динамических массива, то при изменении одного будет...

Динамические массивы
Помогите с задачами плиз 1. Дан динамический массив целых чисел. Вставить...

Динамические компоненты
Как динамически создать определённый компанент, например Panel PS люди не...

8
Joey
Форумчанин
831 / 552 / 219
Регистрация: 05.05.2015
Сообщений: 3,199
Записей в блоге: 1
11.05.2017, 22:15 2
Цитата Сообщение от hlr52917 Посмотреть сообщение
но она ругается
Какими словами? Опишите ошибку

Добавлено через 2 минуты
Цитата Сообщение от hlr52917 Посмотреть сообщение
uses Unit2, Unit4; var Form4: TForm4;
Вы создаете переменную Form4 в первой форме, естественно, что вторая форма не знает о ее существовании. Конечно, если б Вы привели больше кода...
Могли бы хотя бы вместо "первая форма, вторая форма" написать, что это за юниты? Или мы догадаться должны, что первая форма - это Unit1?
0
WindAndRain
93 / 11 / 23
Регистрация: 11.04.2016
Сообщений: 34
12.05.2017, 06:15 3
Цитата Сообщение от Joey Посмотреть сообщение
Вы создаете переменную Form4 в первой форме, естественно, что вторая форма не знает о ее существовании.
Мастер Joey прав: переменная Form4 описана и существует только в unit3.

А в unit 4 вы описываете класс TForm4. Естественно, класс TForm4 ничего не знает о переменной Form4 - потому и ошибка.
Если вы хотите обратиться к свойствам класса из его метода, можно использовать специальный идентификатор - Sefl. Вот пример (вторая форма создаётся автоматически при запуске программы):
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, unit2;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
  From2 : TForm2;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.show();
end;
 
end.


Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
unit Unit2;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;
 
type
 
  { TForm2 }
 
  TForm2 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form2: TForm2;
 
implementation
 
{$R *.lfm}
 
{ TForm2 }
 
procedure TForm2.Button1Click(Sender: TObject);
begin
  Self.Caption:= Self.Caption + '*';
end;
 
end.
1
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
26101 / 17501 / 6943
Регистрация: 22.10.2011
Сообщений: 30,823
Записей в блоге: 6
12.05.2017, 09:05 4
WindAndRain, From2 - это специально чтобы еще больше запутать начинающего?
1
hlr52917
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 41
12.05.2017, 09:15  [ТС] 5
Joey, Unit3 - это Form3, Unit4 - это Form4. Выше их код. Ошибка во вложении
0
Миниатюры
Динамические формы  
hlr52917
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 41
12.05.2017, 09:22  [ТС] 6
WindAndRain, Попробовал сделать как у вас выдает следующее :
0
Миниатюры
Динамические формы  
WindAndRain
93 / 11 / 23
Регистрация: 11.04.2016
Сообщений: 34
12.05.2017, 09:40 7
Цитата Сообщение от volvo Посмотреть сообщение
WindAndRain, From2 - это специально чтобы еще больше запутать начинающего?
Думаю, что для начинающего полезнее посмотреть на пример, очень близкий к его ситуации, - так он не только свой вопрос решит, но и научится большему.

Цитата Сообщение от hlr52917 Посмотреть сообщение
Попробовал сделать как у вас выдает следующее :
В приведённом вами коде "Это вторая форма..."
попробуйте заменить Form4 на Self:
Было:
Delphi
1
 Form4.Label1.Caption:=Form4.SQLQuery1.FieldByName....\\\ Здесь если впереди
Стало:
Delphi
1
 Self.Label1.Caption:=Self.SQLQuery1.FieldByName....\\\ Здесь если впереди
1
hlr52917
0 / 0 / 1
Регистрация: 23.04.2017
Сообщений: 41
12.05.2017, 10:55  [ТС] 8
WindAndRain, Спасибо, процесс чуть-чуть сдвинулся. Когда скинул скриншот последней ошибки, я как раз таки использовал Self. Но ругался на указания Form4 в interface, перетаскиваю в implementation работает вроде
0
Joey
Форумчанин
831 / 552 / 219
Регистрация: 05.05.2015
Сообщений: 3,199
Записей в блоге: 1
13.05.2017, 01:04 9
hlr52917, с такими познаниями, как у Вас, лучше отложить работу с несколькими формами, и взять в руки учебник, либо тренируйтесь на более простых программах, до просветления. Я не смеюсь над Вами, я серьезно. Сам когда-то был таким, не мог две формы подружить друг с другом.

Добавлено через 51 секунду
Цитата Сообщение от volvo Посмотреть сообщение
WindAndRain, From2 - это специально чтобы еще больше запутать начинающего?
Ага, хитрый план, вон еще:
Цитата Сообщение от WindAndRain Посмотреть сообщение
можно использовать специальный идентификатор - Sefl
0
13.05.2017, 01:04
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2017, 01:04

динамические массивы.
Здравствуйте! Недавно решил попробовать покодить на Delphi Prism... и возникла...

Динамические переменные
Подскажите пожалуйста как мне одну переменную из unit1 перетащить в unit2?

Динамические переменные
1)для ссылки на текущее значение динамической переменной необходимо...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru