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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.02.2015, 21:52
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
Вопрос SpeedButton - как передать значение переменной из Form1 в Form3

SpeedButton - как передать значение переменной из Form1 в Form3

есть три формы, в первой Unit1:

Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
g := 1 + AA[0];
rr:=IntToStr(g);
Form1.Hide;
Form3.Show;
end;
Админ: Пользуемся тегами для оформления кода!

при нажатии кнопки нужно значение переменной rr передать
в Form3 (Unit3)

в uses Unit1 есть Unit2, Unit3;
а в uses Unit3 есть Unit1;

пока не получается.
__________________
не переставай удивляться обычному

Последний раз редактировалось Admin, 24.02.2015 в 21:55.
Ответить с цитированием
  #2  
Старый 24.02.2015, 23:15
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А зачем значение передавать?, это лишне, объявите переменную в public секции первого юнита, и тогда можно будет использовать её значение простым выбором
Код:
...
uses unit1;
...

g:= Form1.rr;
Ответить с цитированием
  #3  
Старый 24.02.2015, 23:50
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
Смех

Цитата:
Сообщение от Alegun
А зачем значение передавать?, это лишне, объявите переменную в public секции первого юнита, и тогда можно будет использовать её значение простым выбором
Код:
...
uses unit1;
...

g:= Form1.rr;

у меня программа для учения правил дорожного движения, там 952 билета, из формы первой по индексу массива нажатием на SpeedButton из Imagelist берет номер билета и по картинке из этого Imagelist в форме третьей буду формировать сам тест. ну попробую изложить код - не судите - не много знаю программирование:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, jpeg, ExtCtrls, StdCtrls, ImgList, Buttons;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    Image4: TImage;
    Image5: TImage;
    Image6: TImage;
    Image7: TImage;
    Image8: TImage;
    Image9: TImage;
    Image10: TImage;
    Image11: TImage;
    Image12: TImage;
    Image13: TImage;
    Image14: TImage;
    Image15: TImage;
    Image16: TImage;
    Image17: TImage;
    Image18: TImage;
    Image19: TImage;
    Image20: TImage;
    Image21: TImage;
    Image22: TImage;
    Image23: TImage;
    Image24: TImage;
    Image25: TImage;
    Image26: TImage;
    Image27: TImage;
    Image28: TImage;
    Image29: TImage;
    Image30: TImage;
    Image31: TImage;
    ImageList1: TImageList;
    ImageList2: TImageList;
    ImageList3: TImageList;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SpeedButton5: TSpeedButton;
    SpeedButton6: TSpeedButton;
    SpeedButton7: TSpeedButton;
    SpeedButton8: TSpeedButton;
    SpeedButton9: TSpeedButton;
    SpeedButton10: TSpeedButton;
    SpeedButton11: TSpeedButton;
    SpeedButton12: TSpeedButton;
    SpeedButton13: TSpeedButton;
    SpeedButton14: TSpeedButton;
    SpeedButton15: TSpeedButton;
    SpeedButton16: TSpeedButton;
    SpeedButton17: TSpeedButton;
    SpeedButton18: TSpeedButton;
    SpeedButton19: TSpeedButton;
    SpeedButton20: TSpeedButton;
    SpeedButton21: TSpeedButton;
    SpeedButton22: TSpeedButton;
    SpeedButton23: TSpeedButton;
    SpeedButton24: TSpeedButton;
    SpeedButton25: TSpeedButton;
    SpeedButton26: TSpeedButton;
    SpeedButton27: TSpeedButton;
    SpeedButton28: TSpeedButton;
    SpeedButton29: TSpeedButton;
    SpeedButton30: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton5Click(Sender: TObject);
    procedure SpeedButton6Click(Sender: TObject);
    procedure SpeedButton7Click(Sender: TObject);
    procedure SpeedButton8Click(Sender: TObject);
    procedure SpeedButton9Click(Sender: TObject);
    procedure SpeedButton10Click(Sender: TObject);
    procedure SpeedButton11Click(Sender: TObject);
    procedure SpeedButton12Click(Sender: TObject);
    procedure SpeedButton13Click(Sender: TObject);
    procedure SpeedButton14Click(Sender: TObject);
    procedure SpeedButton15Click(Sender: TObject);
    procedure SpeedButton16Click(Sender: TObject);
    procedure SpeedButton17Click(Sender: TObject);
    procedure SpeedButton18Click(Sender: TObject);
    procedure SpeedButton19Click(Sender: TObject);
    procedure SpeedButton20Click(Sender: TObject);
    procedure SpeedButton21Click(Sender: TObject);
    procedure SpeedButton22Click(Sender: TObject);
    procedure SpeedButton23Click(Sender: TObject);
    procedure SpeedButton24Click(Sender: TObject);
    procedure SpeedButton25Click(Sender: TObject);
    procedure SpeedButton26Click(Sender: TObject);
    procedure SpeedButton27Click(Sender: TObject);
    procedure SpeedButton28Click(Sender: TObject);
    procedure SpeedButton29Click(Sender: TObject);
    procedure SpeedButton30Click(Sender: TObject);

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

var
  Form1: TForm1;
  b: array[1..11] of string;
  i,n,r,ii,ee,g,h: integer;
  s,rr,a, xx01, xx02, xx03, xx04: string;
  x1,x2,x3: real;
  ty: array[1..35] of integer;
  tn: array[1..35] of integer;
  t: array[0..35] of integer;
  d: set of byte;
  AA: array[0..112] of integer;

implementation

uses Unit2, Unit3;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin

ee:=0;
Imagelist2.GetBitmap(ee, Image2.Picture.Bitmap);
Imagelist2.GetBitmap(ee, Image3.Picture.Bitmap);
// и так далее
Imagelist2.GetBitmap(ee, Image30.Picture.Bitmap);
Imagelist2.GetBitmap(ee, Image31.Picture.Bitmap);

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
ee:=0;
Image2.Picture:= nil;  Imagelist2.GetBitmap(ee, Image2.Picture.Bitmap);
Image3.Picture:= nil;  Imagelist2.GetBitmap(ee, Image3.Picture.Bitmap);
Image4.Picture:= nil;  Imagelist2.GetBitmap(ee, Image4.Picture.Bitmap);
// и так далее до
Image29.Picture:= nil;  Imagelist2.GetBitmap(ee, Image29.Picture.Bitmap);
Image30.Picture:= nil;  Imagelist2.GetBitmap(ee, Image30.Picture.Bitmap);
Image31.Picture:= nil;  Imagelist2.GetBitmap(ee, Image31.Picture.Bitmap);

end;

procedure TForm1.Button4Click(Sender: TObject);
begin 

randomize;
d:=[];
for i := 0 to 111 - 1 do   // chia 112 - maksimali masyvo reikshme
begin
repeat
r := random(111);
until not (r in d);
d := d + [r];
AA[i] := r;
end;

Image2.Picture:= nil; 
ii:= AA[0];   t[0] := ii + 1;
Imagelist1.GetBitmap(ii, Image2.Picture.Bitmap);

Image3.Picture:= nil;
ii:= AA[1];  t[1]:= ii + 1;
Imagelist1.GetBitmap(ii, Image3.Picture.Bitmap);

Image4.Picture:= nil;
ii:= AA[2];   t[2]:= ii + 1;
Imagelist1.GetBitmap(ii, Image4.Picture.Bitmap);

Image5.Picture:= nil;
ii:= AA[3];
Imagelist1.GetBitmap(ii, Image5.Picture.Bitmap);

// и так далее до

Image29.Picture:= nil;
ii:= AA[27];
Imagelist1.GetBitmap(ii, Image29.Picture.Bitmap);

Image30.Picture:= nil;
ii:= AA[28];
Imagelist1.GetBitmap(ii, Image30.Picture.Bitmap);

Image31.Picture:= nil;
ii:= AA[29];
Imagelist1.GetBitmap(ii, Image31.Picture.Bitmap);

end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
g := 1 + AA[0];
rr:=IntToStr(g);
Form1.Hide;
Form3.Show;

end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
g := 1 + AA[1];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
g := 1 + AA[2];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
g := 1 + AA[3];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
g := 1 + AA[4];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
begin
g := 1 + AA[5];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton7Click(Sender: TObject);
begin
g := 1 + AA[6];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
g := 1 + AA[7];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton9Click(Sender: TObject);
begin
g := 1 + AA[8];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton10Click(Sender: TObject);
begin
g := 1 + AA[9];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton11Click(Sender: TObject);
begin
g := 1 + AA[10];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton12Click(Sender: TObject);
begin
g := 1 + AA[11];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton13Click(Sender: TObject);
begin
g := 1 + AA[12];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton14Click(Sender: TObject);
begin
g := 1 + AA[13];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton15Click(Sender: TObject);
begin
g := 1 + AA[14];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton16Click(Sender: TObject);
begin
g := 1 + AA[15];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton17Click(Sender: TObject);
begin
g := 1 + AA[16];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton18Click(Sender: TObject);
begin
g := 1 + AA[17];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton19Click(Sender: TObject);
begin
g := 1 + AA[18];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton20Click(Sender: TObject);
begin
g := 1 + AA[19];
rr := IntToStr(g);
end;

procedure TForm1.SpeedButton21Click(Sender: TObject);
begin
g := 1 + AA[20];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton22Click(Sender: TObject);
begin
g := 1 + AA[21];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton23Click(Sender: TObject);
begin
g := 1 + AA[22];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton24Click(Sender: TObject);
begin
g := 1 + AA[23];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton25Click(Sender: TObject);
begin
g := 1 + AA[24];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton26Click(Sender: TObject);
begin
g := 1 + AA[25];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton27Click(Sender: TObject);
begin
g := 1 + AA[26];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton28Click(Sender: TObject);
begin
g := 1 + AA[27];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton29Click(Sender: TObject);
begin
g := 1 + AA[28];
rr:=IntToStr(g);
end;

procedure TForm1.SpeedButton30Click(Sender: TObject);
begin
g := 1 + AA[29];
rr:=IntToStr(g);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Hide;
Form2.Show;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin  // конец
Close;
end;

end.
__________________
не переставай удивляться обычному
Ответить с цитированием
  #4  
Старый 25.02.2015, 00:04
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Сократите код немного, уберите лишние обработчики кнопок со 2й по 30ю, оставив один
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 g :=1 + AA[(Sender as TSpeedButton).Tag];
 Form3.rr:= IntToStr(g);
end;
задайте кнопкам свойство tag нужным индексом и результирующую переменную переместите туда, где она будет использоваться т.е. в Form3. Всем баттонам только не забудьте жим SpeedButton2Click задать

З.Ы. Кстати, и в обработчике Button3Click можно подсократить слегка, если цикл задействовать
Код:
 for i := 1 to 30 do
  (FindComponent('Image' + IntToStr(i)) as TImage).Picture:= nil;

Последний раз редактировалось Alegun, 25.02.2015 в 00:18.
Ответить с цитированием
  #5  
Старый 25.02.2015, 00:18
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alegun
Сократите код немного, уберите лишние обработчики кнопок со 2й по 30ю, оставив один
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 g :=1 + AA[(Sender as TSpeedButton).Tag)];
 Form3.rr:= IntToStr(g);
end;
задайте кнопкам свойство tag нужным индексом и результирующую переменную переместите туда, где она будет использоваться т.е. в Form3. Всем баттонам только не забудьте жим SpeedButton2Click задать

вставил со второго по 30 ваш код:

Цитата:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
g := 1 + AA[0];
rr:=IntToStr(g);
Form1.Hide;
Form3.Show;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
g :=1 + AA[(Sender as TSpeedButton).Tag)];
Form3.rr:= IntToStr(g);
end;

выдало три ошибки:

Expected ] but received ) at line 370
Expected . but received ; at line 372
Expected the end of file but received an identifier 'Button2Click' at line 377
__________________
не переставай удивляться обычному

Последний раз редактировалось roland196, 25.02.2015 в 00:26.
Ответить с цитированием
  #6  
Старый 25.02.2015, 00:28
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Скобка ) лишняя, после Tag.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #7  
Старый 25.02.2015, 00:29
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

<<DELETED>>

Последний раз редактировалось Alegun, 25.02.2015 в 01:45.
Ответить с цитированием
  #8  
Старый 25.02.2015, 00:47
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
Счастье

Цитата:
Сообщение от Alegun
Сократите код немного, уберите лишние обработчики кнопок со 2й по 30ю, оставив один
Код:
procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
 g :=1 + AA[(Sender as TSpeedButton).Tag];
 Form3.rr:= IntToStr(g);
end;
задайте кнопкам свойство tag нужным индексом и результирующую переменную переместите туда, где она будет использоваться т.е. в Form3. Всем баттонам только не забудьте жим SpeedButton2Click задать

З.Ы. Кстати, и в обработчике Button3Click можно подсократить слегка, если цикл задействовать
Код:
 for i := 1 to 30 do
  (FindComponent('Image' + IntToStr(i)) as TImage).Picture:= nil;

да, за

Цитата:
for i := 1 to 30 do
(FindComponent('Image' + IntToStr(i)) as TImage).Picture:= nil;

спасибо, но с первым:

Цитата:
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
g := 1 + AA[0];
rr:=IntToStr(g);
Form1.Hide;
Form3.Show;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
begin
g :=1 + AA[(Sender as TSpeedButton).Tag];
Form3.rr:= IntToStr(g);
end;

выдало уже только одну ошибку:

'TForm3' does not contain a member 'rr' at line 343
__________________
не переставай удивляться обычному
Ответить с цитированием
  #9  
Старый 25.02.2015, 00:53
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

А вы переменную rr в public формы3 видимо пока не объявили, хотя там ей самое место
Ответить с цитированием
  #10  
Старый 25.02.2015, 00:56
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

И правильно выдало ошибку. Такой переменной (rr) в форме 3 нет. И как сказали выше, заведи её в секции public.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #11  
Старый 25.02.2015, 01:03
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
По умолчанию

об этом еще не читал

обявить это как, в обоих формах после public вписать строчку
rr: integer; ?
__________________
не переставай удивляться обычному
Ответить с цитированием
  #12  
Старый 25.02.2015, 01:10
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

<<DELETED>>
Кидайте свою нетленку здесь, будем править, а "разбор полёта" сами потом произведёте

Последний раз редактировалось Alegun, 25.02.2015 в 01:46.
Ответить с цитированием
  #13  
Старый 25.02.2015, 01:23
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
По умолчанию

я вас понимаю )
сам чайнику одному по телефону пол часа обьеснял как на ворде в табличке вертикально текст написать для обявления с сдираемыми листочками,
я думаю он потом все равно маркером все с руки написал )

спать пора народ
спасибо за помощь, а здесь исходники можно помещять для поправки?
жутко извиняюсь за такую наглость
__________________
не переставай удивляться обычному
Ответить с цитированием
  #14  
Старый 25.02.2015, 01:28
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Оффтоп: Не в чайнике дело - в свистке К сообщению архив с проектом как аттач можно добавить, только пжлст, без компилянтов и екзе, в смысле поменьше
Ответить с цитированием
  #15  
Старый 25.02.2015, 01:35
Аватар для roland196
roland196 roland196 вне форума
Прохожий
 
Регистрация: 24.02.2015
Адрес: Литва
Сообщения: 22
Версия Delphi: Turbo Delphi 10
Репутация: 10
Хорошо

Цитата:
Сообщение от Alegun
Оффтоп: Не в чайнике дело - в свистке К сообщению архив с проектом как аттач можно добавить, только пжлст, без компилянтов и екзе, в смысле поменьше

да, я понял -я вообще примитивно сделаю -
просто проект из пару кнопок и картинок - заработает и я уже разберусь, я вам пришлю
__________________
не переставай удивляться обычному
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter