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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2010, 23:09   #1
Source-of-life
 
Регистрация: 25.03.2010
Сообщений: 9
По умолчанию Работа с Button в delphi

Не подскажите, можно ли сделать так, чтобы при нажатии одной кнопки, проверялось условие нажатия другой и если оно выполнено, то выполняются какие-либо действия.
Если не понятно объяснил, то тут мой замысел:
При нажатии на первую кнопку, массив из N элементов забивается произвольными значениями. Так же есть и другая кнопка, которая ищет максимальные значения в массиве. И вот как-то надо сделать, чтобы сначала при нажатии на первую кнопку массив генерировался (это я сделал) а при нажатии на вторую, из элементов этого массива выбирались максимумы)
Source-of-life вне форума Ответить с цитированием
Старый 02.04.2010, 23:12   #2
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

а куда ты заносишь сгенерированный массив?
Google2010 вне форума Ответить с цитированием
Старый 02.04.2010, 23:27   #3
Source-of-life
 
Регистрация: 25.03.2010
Сообщений: 9
По умолчанию

В смысле куда выводятся элементы? (На листбокс)
Или к чему они относятся?) Извиняюсь) Не понял вас)
Source-of-life вне форума Ответить с цитированием
Старый 02.04.2010, 23:45   #4
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

Код:
max:=strtofloat(listbox.items[0])
for i:=1 to listbox.items.count-1 do
if strtofloat(listbox.items[i])>max then max:=strtofloat(listbox.items[i]);
Google2010 вне форума Ответить с цитированием
Старый 02.04.2010, 23:54   #5
Source-of-life
 
Регистрация: 25.03.2010
Сообщений: 9
По умолчанию

А.... то есть мы уже с листбоксом работаем)
Спасибо огромное) Сам не додумался)
А не подскажете еще, что-нибудь типа
"If button1.Click := true" или что-нибудь в этом роде, можно было бы применить? Чтобы листбокс не трогать.
Source-of-life вне форума Ответить с цитированием
Старый 03.04.2010, 07:52   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

пример управления доступностью кнопок
Код:
procedure Tform1.FormCreate
begin 
button1.enabled:=true;
button2.enabled:=false;
//здесь можно нажимать только на первыю кнопку
end;

procedure Tform1.button1Click
begin
// здесь заполнение массива
button2.enabled:=true;
//разрешаем нажимать и на вторую кнопку
end;

procedure Tfrom1.button2.click;
begin
//здесь определение максимального
button2.enabled:=false;
// на вторую кнопку нажимать снова нельзя
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.04.2010, 08:27   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

evg_m, +1

Это безусловно наглядный и работоспособный вариант.

добавлю ещё один вариант решения проблемы. Может быть, Source-of-life пригодится...

можно добавить в описание формы переменную (а при необходимости и несколько переменных!) булевского типа (имя переменной любое, например, isArrayCreated):
Код:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ....
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    ....
  private
    { Private declarations }
     isArrayCreated : boolean;
     ...
на событие создания формы Form1 - events - OnCreate
пишешь начальную иницилизацию этой переменной. Ведь вначале программы у нас массив ещё не создан:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
   isArrayCreated := False;
   ...
а потом, после нажания на button1 создаёшь/заполняешь свой массив и присваиваешь переменной признак, что массив создан:
Код:
procedure Tform1.Button1Click(Sender: TObject);
begin
   {код по созданию/заполнению массива }
  isArrayCreated := True;
  ...
а теперь, при нажатии на Button2 легко проверить, как у нас дела с массивом:
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   if Not isArrayCreated then begin
      Application.MessageBox( 'Сначала нажмите на кнопку "ЗАПОЛНИТЬ МАССИВ"', 
               'Ошибка', MB_ICONERROR or MB_OK);
      Exit;
   end;

   {тут обработка Вашего массива}
p.s. извините, что так подробно всё изложил...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.04.2010, 08:31   #8
Google2010
Форумчанин
 
Регистрация: 16.02.2010
Сообщений: 316
По умолчанию

ну и без новых переменных и enable
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
   button1.tag:=0;
Код:
procedure Tform1.Button1Click(Sender: TObject);
begin
   {код по созданию/заполнению массива }
 button1.tag:=1;
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
   if button1.tag=0 then begin
      Application.MessageBox( 'Сначала нажмите на кнопку "ЗАПОЛНИТЬ МАССИВ"', 
               'Ошибка', MB_ICONERROR or MB_OK);
      Exit;
   end;

   {тут обработка Вашего массива}
button1.tag=0
Google2010 вне форума Ответить с цитированием
Старый 03.04.2010, 08:49   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Google2010
ну и без новых переменных и enable
ну, можно и так..
работать будет без всяких нареканий.
Вот только наглядность/сопровождаемость программы очень сильно страдает... впрочем, для учебной задачи на пару десятков строк — вполне даже можно использовать.

p.s. кстати, из всёх трёх представленных способов все три (на мой взгляд) равнозначно применимы, т.е. нет явного "безусловного" лидера...
автору можно смело брать любой понятный/понравившийся!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Button Chudo4258 Помощь студентам 2 07.05.2009 21:06
button xaft Общие вопросы .NET 4 08.04.2009 14:08
button blackstersl Общие вопросы Delphi 7 29.08.2008 15:31
Button... Черничный Общие вопросы Delphi 4 10.06.2008 01:34
Delphi, button north Помощь студентам 4 19.02.2008 22:52