Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.02.2013, 10:00   #1
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
Вопрос Как задать переменную?

Есть кнопки им нужно задать переменную чтобы при нажатие на них во фрейм переходило значение этой кнопки
я попробывал сделать так
Код двух кнопок
Код:
procedure TForm1.Frame32Button2Click(Sender: TObject);
var
i:integer;
begin
Frame32.Button1.Show;
Frame61.Visible:=True;
Frame32.Button2.Hide;
i:=1;
end;
Код:
procedure TForm1.Frame32Button4Click(Sender: TObject);
var
i:integer;
begin
Frame32.Button3.Show;
Frame61.Visible:=True;
Frame32.Button4.Hide;
i:=2;
end;
и код фрейма
Код:
procedure TForm1.Frame61Click(Sender: TObject);
begin
if i=1 then
  Frame61.DBGrid1.DataSource:=DataModule5.DataSource1;
if i=2 then
  Frame61.DBGrid1.DataSource:=DataModule5.DataSource2;
end;
Как правельно задать переменную чтобы фрейм открывал данные по нажатию кнопки?
P.S.Добавил Програмку
Если ктото найдёт ошибку почему переменные не воспринимает, подскажите как исправить.
Специальность - Курс - Группу(кнопка №1-2)
Соединения в DataModule5
Вложения
Тип файла: rar Программа.rar (457.9 Кб, 8 просмотров)

Последний раз редактировалось SW00001; 14.02.2013 в 17:28.
SW00001 вне форума Ответить с цитированием
Старый 14.02.2013, 10:06   #2
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

А такой вариант не подходит:
Код:
procedure TForm1.Frame32Button4Click(Sender: TObject);
begin
 Frame32.Button3.Show;
 Frame61.Visible:=True;
 Frame61.OnClick:=Frame61Click;
 Frame32.Button4.Hide;
end;
superedward вне форума Ответить с цитированием
Старый 14.02.2013, 10:12   #3
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

Цитата:
Сообщение от superedward Посмотреть сообщение
А такой вариант не подходит:
Код:
procedure TForm1.Frame32Button4Click(Sender: TObject);
begin
 Frame32.Button3.Show;
 Frame61.Visible:=True;
 Frame61.OnClick:=Frame61Click;
 Frame32.Button4.Hide;
end;
Нет такой не подходит т.к. там данные берутся из разных форм в БД, ещё у меня форма для заполнения этих данных есть, нужно тоже чтобы она по определённой переменной открывала нужную форму в БД...
Так что мне бы решить проблему с переменными...
SW00001 вне форума Ответить с цитированием
Старый 14.02.2013, 11:33   #4
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

как вариант
Код:
  Box.Enabled:=i in ['a','e','v'];
  btAdd.Enabled:=i in ['s','d','c'];
  btEdit.Enabled:=i in ['s','d','c'];
  btSave.Enabled:=i in ['a','e'];
  btCopy.Enabled:=i in ['e'];
  btDel.Enabled:=i in ['e','s','d','c'];
  cbType.Enabled:=i in ['a'];
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 14.02.2013, 11:44   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Так у Вас i объявлена как локальная переменная. Объявите её глобально.
FaTaL вне форума Ответить с цитированием
Старый 14.02.2013, 12:56   #6
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

Цитата:
Сообщение от FaTaL Посмотреть сообщение
Так у Вас i объявлена как локальная переменная. Объявите её глобально.
Как её обьявить глобально?
Если обьявить глобально то переменная из кнопки будет взаимодействовать с переменными во фрейме? Ну т.е. при нажатие кнопки1 или 2 во фрейме будет меняться значение i=1 или i=2?
SW00001 вне форума Ответить с цитированием
Старый 14.02.2013, 13:10   #7
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

задавать нужно не переменную а свойство(property) у нужного объекта (фрейма).

1. добавляете к нужному фрейму (Tframe61) в разделе public свойство(property) myVarData
Код:
TFrame61 =....
...
public
  property myVarData: integer write SetMyVardata;
private
  procedure SetMyVarData(v: integer);
....
end;
2. пишете метод загрузки данных в зависимости от заданного варианта
Код:
procedure TFrame61.SetMyVarData(r: integer);
begin
......
end;
3. в нужных местах указываете нужный вам вариант данных.
Код:
frame61.myVarData:=1;
Код:
frame61.myVarData:=2;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.02.2013 в 13:14.
evg_m вне форума Ответить с цитированием
Старый 14.02.2013, 13:55   #8
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

Это слишком сложно для меня)
Мне бы просто с переменными разобратся почему фрейм их невоспринимает.
А нельзя сделать так чтобы по нажатию кнопки переменная присуждалась фрему
например
По нажатию кнопки1
у которой i:=1 , это значение i присуждалось во фрейм61 в котором i:=0(пока не нажмёшь на кнопку) если кнопка нажата то значение будет такоеже как и в кнопки 1...
как вот это реализовать?
SW00001 вне форума Ответить с цитированием
Старый 14.02.2013, 14:29   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
это значение i присуждалось во фрейм61
Если просто установить некое значение i , то обявляем в нем (public) переменную i
Код:
Tframe61 =class...

public 
  i: integer;

end;
и задаем ее значение в нужном месте
Код:
Frame61.i:=1;
Код:
Frame61.i:=3;
И конечно не надо использовать для этого имя i а придумать какое нибудь другое myVarData к примеру.

Но вот теперь возникает вопрос а как бы указать Frame61 что ему после того как мы ЕМУ установили i=3 надо что-то делать. Для этого смотри предыдущий ответ.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 14.02.2013 в 14:35.
evg_m вне форума Ответить с цитированием
Старый 14.02.2013, 15:11   #10
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

Это сложновато для меня.
Нельзя просто по простому чтобы если i:=1; в кнопке то

Код:
procedure TForm1.Frame61Click(Sender: TObject);
begin
if i=1 then
  Frame61.DBGrid1.DataSource:=DataModule5.DataSource1;
if i=2 then
  Frame61.DBGrid1.DataSource:=DataModule5.DataSource2;
end;
если i 1 ил 2 то открывалась именно та таблица которая коровой равна переменная I

P.S.У меня друг в том году точно также делал через переменные, ничё не мудрил...и у него всё получалось. Правдо сейчас у него неосталось исходника, и сам ничё непомнит как делал...Но делал чисто из переменных
SW00001 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как задать переменную новой страницы alimov7 JavaScript, Ajax 2 10.11.2012 17:30
Как задать пароль в переменную при запуске? Snekich Microsoft Office Excel 2 11.02.2012 16:46
как переменную задать символы yali Общие вопросы C/C++ 9 15.10.2010 15:19
Как в сознанном файле задать переменную gred PHP 6 26.02.2009 16:53
Как задать мнимую переменную AlexVI Общие вопросы Delphi 2 21.01.2007 03:00