powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передача переменной в делфи
4 сообщений из 4, страница 1 из 1
Передача переменной в делфи
    #39643398
kmr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
kmr
Гость
На первой форме висит меню, при нажатии на один из пунктов меню переменной присваивается какое-то число и открывается другая форма. На второй форме прописан код с использованием этой переменной ( а именно числом, которое ей присвоено), но код не работает... Что не так?

(Форма 1)
Код: pascal
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;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, Menus;

type
  TForm1 = class(TForm)
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
 
    Image1: TImage;
    procedure N3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  m2: integer;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject);
begin
  m2:=1;
  Form2.Show
end;



(Форма 2)
Код: pascal
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.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
unit Unit2;

interface

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

type
  TForm2 = class(TForm)
    DBGrid1: TDBGrid;
    BB1: TBitBtn;
    BB2: TBitBtn;
    BB3: TBitBtn;
    BitBtn4: TBitBtn;
    Button1: TButton;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;
   m1, m2, m3 : integer;
implementation

uses Unit1;

{$R *.dfm}

end.
procedure TForm2.FormShow(Sender: TObject);
  if Unit1.m2=1 then
  begin
    Form2.Caption:='Сведения о сотрудниках по должностям';
    BB1.Caption:='Добавить должность';
    BB2.Caption:='Редактировать должность';
    BB3.Caption:='Удалить должность';
  end
  else
    if Unit1.m2=2 then
    begin
      Form2.Caption:='Сведения о сотрудниках по тренеровкам';
      BB1.Caption:='Добавить тренеровку';
      BB2.Caption:='Редактировать тренеровку';
      BB3.Caption:='Удалить тренеровку';
    end
    else
      if Unit1.m2=3 then
      begin
        Form2.Caption:='Сведения о всех сотрудниках';
        BB1.Caption:='Добавить сотрудника';
        BB2.Caption:='Редактировать сотрудника';
        BB3.Caption:='Удалить сотрудника';
      end
end;



Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
...
Рейтинг: 0 / 0
Передача переменной в делфи
    #39643543
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmr Что не так?

1. Неумение пользоваться тегом SRC - вообще беда :(
2. Переменная m2 объявлена и в Unit1 и в Unit2 - соответственно каждая форма использует свою.
Чтобы работало как задумано, необходимо напрямую указывать к какой переменной идёт обращение. Т.е. в обоих местах, например:
Код: pascal
1.
Unit1.m2 := ....
...
Рейтинг: 0 / 0
Передача переменной в делфи
    #39643549
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точнее компилятор обрабатывает файлы последовательно, в результате у вас получается:
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
unit Unit1;
...
var 
  m2: Integer; // <- все обращения по-умолчанию будут к этой m2 (Unit1.m2)
...
implementation

uses 
  Unit2; 

{ unit Unit2;
...
var
  m1, m2, m3: Integer; <- а вот с этого момента по-умолчанию будет обращение к этой m2 (Unit2.m2), т.к. она объявлена позже
}
...
...
Рейтинг: 0 / 0
Передача переменной в делфи
    #39644149
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Убрать вторую форму из списка автосоздаваемых и написать в ней фунцкию
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
function Form2Show(Index: integer): integer;
const N: array[1..3] of string = ('должность','тренировку','сотрудника');
begin
  with TForm2.Create(Application) do begin
    BB1.Caption:='Добавить '+N[Index];
    BB2.Caption:='Редактировать '+N[Index];
    BB3.Caption:='Удалить '+N[Index];    
    case Index of
      1: begin
        Caption:='Сведения о сотрудниках по должностям';
      end;
      2: begin
         Caption:='Сведения о сотрудниках по тренеровкам';
      end;
      3: begin
        Caption:='Сведения о всех сотрудниках';
      end;
    end;
    Result := ShowModal;
    Free;
  end;
end;



Ну и в первой форме сделать так
Код: pascal
1.
2.
3.
4.
procedure TForm1.N3Click(Sender: TObject);
begin
  Form2Show(1);  // вместо   m2:=1; Form2.Show;
end;
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Передача переменной в делфи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]