if MyVar = MyVal then
Form1.Edit1.Text:='asd'
else
Form1.Edit2.Text:='dfg';
Проблемы с распознованием нажатой кнопки в форме
У меня возникла следующая проблема:
Имеется программа состоящая из двух окон. в первом окне имеется два эдита и две кнопки (см. ris1). Обе кнопки вызывают одно и то же окно (см. ris2). Сначала нажимаем на первый обзор появляется окно 2. Находим путь, нажимаем ок он передается в эдит1. Затем проделываем то же самое для кнопки2 и результат в эдит2. Проблема в том что я не могу понять как определить какая кнопка нажата: обзор1 или обзор2, не создавать же две одинаковые формы для выбора пути.
В поиск попрошу не отправлять. Был, нашел там интересную возможность, но применить к своей проге не смог.
Кто сталкивался или может помочь. Милости просим.
Код:
вот в этом духе что-нибудь.
правдо помогло. Все просто. Что то я вчера загнался. Спасибо.
Цитата:
Проблема в том что я не могу понять как определить какая кнопка нажата: обзор1 или обзор2, не создавать же две одинаковые формы для выбора пути.
А чем поиск не угодил???
Код:
procedure TMyForm.BtnClick(Sender: TObject); // Своя функция
begin
if (Sender = Button1) then begin
// Кнопка 1 нажата
else if (Sender = Button2) then begin
// Кнопка 2 нажата
end;
Form2->ShowModal; // Открываем другое окно
end;
begin
if (Sender = Button1) then begin
// Кнопка 1 нажата
else if (Sender = Button2) then begin
// Кнопка 2 нажата
end;
Form2->ShowModal; // Открываем другое окно
end;
[quote=Kosfiz]но что-то в голову ничего не приходит кроме как завести глобальную переменную[/quote]
ОЧЕНЬ плохая идея - приучает к неправильному стилю программирования. Если и "заводить" что-либо, так это переменную класса, как дополнительное поле объекта формы.
Цитата: el scorpio
А чем поиск не угодил???
Код:
procedure TMyForm.BtnClick(Sender: TObject); // Своя функция
begin
if (Sender = Button1) then begin
// Кнопка 1 нажата
else if (Sender = Button2) then begin
// Кнопка 2 нажата
end;
Form2->ShowModal; // Открываем другое окно
end;
begin
if (Sender = Button1) then begin
// Кнопка 1 нажата
else if (Sender = Button2) then begin
// Кнопка 2 нажата
end;
Form2->ShowModal; // Открываем другое окно
end;
ОЧЕНЬ плохой код:
1. ты уверен, что все правильно?
2.
Код:
Form2->ShowModal;
Borland C++ Builder это в соседнюю ветку вот тебе ссылка http://forum.codenet.ru/forumdisplay.php?f=8 чтобы ты не заплутал.
3.
Код:
if (Sender = Button1) then begin
// Кнопка 1 нажата
else
// Кнопка 1 нажата
else
а где закрывающий end?
[quote=el scorpio]ОЧЕНЬ плохая идея[/quote]
зато предложенный мной вариант в отличие от твоего работает.
и еще: мой ник пишется с маленькой буквы, т.е. kosfiz, понятно El scorpio?
В моём коде ошибки грамматические (ну редко я на дельфи пишу), что очень легко исправляется, но всё остальное правильно. Тем более, что параметр Sender как раз для этого передаётся, и не нужно изобретать велосипед.
А вот "завести глобальную переменную" - это ошибка алгоритмическая. Причём глобальная - замучаешься тараканов ловить, особенно если создашь ещё один объект окна.
Код:
procedure TMyForm.BtnClick(Sender: TObject); // Своя функция
begin
if (Sender = Button1) then begin
// Кнопка 1 нажата
end else if (Sender = Button2) then begin
// Кнопка 2 нажата
end;
Form2.ShowModal; // Открываем другое окно
end;
begin
if (Sender = Button1) then begin
// Кнопка 1 нажата
end else if (Sender = Button2) then begin
// Кнопка 2 нажата
end;
Form2.ShowModal; // Открываем другое окно
end;
el scorpio ты не совсем понял что мне нужно сделать и предложенным тобой способом это сделать не получается.
Код:
procedure TMyForm.BtnClick(Sender: TObject); // Своя функция
var path: string;
begin
// Здесь мы получаем путь с помощью вызова формы с ris2
path:= ...;
if (Sender = Button1) then
begin
// Кнопка 1 нажата
Edit1.Text:=path;
end else if (Sender = Button2) then
begin
// Кнопка 2 нажата
Edit2.Text:=path;
end;
end;
var path: string;
begin
// Здесь мы получаем путь с помощью вызова формы с ris2
path:= ...;
if (Sender = Button1) then
begin
// Кнопка 1 нажата
Edit1.Text:=path;
end else if (Sender = Button2) then
begin
// Кнопка 2 нажата
Edit2.Text:=path;
end;
end;
Вот, собственно, и вся идея... Да, этот обработчик нажатия кнопки надо повесить на обе кнопки.