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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.03.2008, 12:22   #1
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию Проверить событие нажатия кнопики!

Здравствуйте, уважаемые программисты!
Столкнулся с небольшой, но пока не ясной мне проблемой:
Как можно проверить событие нажатия кнопки?
Вот, есть кнопка "Сохранить как..." и есть кнопка "Сохранить". Необходимо кнопки "Сохранить" установить свойство enable:=false до тех пор, пока не нажата или не создан файл кнопкой "Сохранить как...".
Думаю, что понимаете о чем идет речь.
фЁдОр вне форума Ответить с цитированием
Старый 26.03.2008, 14:00   #2
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Есть такое событие кнопки "OnClick" специально для этого придумали.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 26.03.2008, 14:07   #3
Killer_djon
Форумчанин
 
Регистрация: 26.04.2007
Сообщений: 143
По умолчанию

можно кончно зделать иначе, создаешь логическую переменную например flag, которая по умолчанию будет иметь значение false, т.е. соответственно при создании нового файла ты опять таки просто прсисваиваешь ей false, при первом нажатии на копку Сохранить как... ты этой переменной присваиваешь true и кнопку Сохранить активируешь, и еще при событии формы OnActivate формы пиши:

ButtonSave.enabled:= flag=true;
Свободу клавиатурным самураям...
Killer_djon вне форума Ответить с цитированием
Старый 26.03.2008, 14:18   #4
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Есть такое событие кнопки "OnClick" специально для этого придумали.
Я это первым делом пробывал, но очевидно я все же, что-то не так делаю:
if not N4.OnClick then
button1.enabled:=false
else
button1.enabled:=true;

где N4 - это "Сохранить как...", а button1 - "Сохранить"
но у меня компилятор ругается на условие.

Последний раз редактировалось фЁдОр; 26.03.2008 в 14:21.
фЁдОр вне форума Ответить с цитированием
Старый 26.03.2008, 14:29   #5
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Ха,ха
прошу прошения.

Типы данных разные.

В событии N4.OnClick сделай те так как сказал "Killer_djon" и всё, далее в условии ориентируйтесь на переменную.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 26.03.2008, 14:51   #6
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

я не могу понять Вашу мысль.
как это
Цитата:
Сообщение от Killer_djon Посмотреть сообщение
... при создании нового файла ты опять таки просто прсисваиваешь ей false...
вяжется вот с этим
Цитата:
при первом нажатии на копку Сохранить как... ты этой переменной присваиваешь true
Ведь создание нового файла - это же и есть копка Сохранить как...
фЁдОр вне форума Ответить с цитированием
Старый 26.03.2008, 15:22   #7
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Вот такая схема:

Код:
// Начальное состояние кнопки
procedure TForm1.FormCreate(Sender: TObject);
begin
   button1.enabled := false;
end;

// Закрытие файла, если есть
procedure TForm1.CloseFile;
begin
   button1.enabled := false;
end;

// Обработка Save as...
procedure TForm1.N4Click(Sender: TObject);
begin
   button1.enabled := true;
end;
Только зачем ограничивать пользователя. Сделай обе кнопки всегда доступными и выбирай действие в зависимости от состояния.

Код:

// Нажатие Save as...
procedure TForm1.Button2Click(Sender: TObject);
begin
   doSaveAs;
end;

// Нажатие Save ...
procedure TForm1.Button3Click(Sender: TObject);
begin
   if { файл еще не сохранялся }
   then doSaveAs
   else doSave;
end;
alexBlack вне форума Ответить с цитированием
Старый 27.03.2008, 10:02   #8
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

дело в том, что есть еще один недостаток:
Код:
procedure TForm1.FormCreate(Sender: TObject);   
begin   
   speedbutton2.enabled := false;   //кнопка "сохранить"
end;

procedure TForm1.N4Click(Sender: TObject);
begin
 speedbutton2.Enabled:=true;
 if SaveDialog1.Execute then
  Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;
Но как быть если пользователь нажал "Сохранить как...", но не сохранил, а нажал отмену?
Ведь кнопка "Сохранить" все равно делается активной!
Цитата:
Только зачем ограничивать пользователя. Сделай обе кнопки всегда доступными и выбирай действие в зависимости от состояния.
Так даже правильно будет, просто я хочу понять как все это работает
фЁдОр вне форума Ответить с цитированием
Старый 27.03.2008, 10:08   #9
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Код:
 if SaveDialog1.Execute then begin
    Memo1.Lines.SaveToFile(SaveDialog1.FileName);   

    // Запись была, ошибок не было, значит можно разрешить Save 
    speedbutton2.Enabled:=true;   
 end;
alexBlack вне форума Ответить с цитированием
Старый 27.03.2008, 10:14   #10
фЁдОр
Форумчанин
 
Аватар для фЁдОр
 
Регистрация: 06.09.2007
Сообщений: 908
По умолчанию

Цитата:
Сообщение от alexBlack Посмотреть сообщение
Код:
...
    // Запись была, ошибок не было, значит можно разрешить Save 
...
как это можно проверить, была запись или нет? Пробмема в том, что я не могу понять как можно проверить создался файл или нет. Тогда может можно было бы
Цитата:
Сделай обе кнопки всегда доступными и выбирай действие в зависимости от состояния.
Дело в том, что у меня в книге про SaveDialog кроме
if SaveDialog1.Execute then begin
Memo1.Lines.SaveToFile(SaveDialog1. FileName);
end;
больше ничего не сказано, поэтому и задаю такие глупые вопросы у Вас.

Последний раз редактировалось фЁдОр; 27.03.2008 в 10:18.
фЁдОр вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проипсать событие? Sanek777 Общие вопросы Delphi 3 10.08.2008 14:48
Событие terminadoor Общие вопросы Delphi 13 17.07.2008 09:25
Событие maha Общие вопросы Delphi 6 18.06.2008 18:53
Событие один раз Михаил Юрьевич Общие вопросы Delphi 4 01.04.2008 20:40
Как поймать событие в COM? den303 Общие вопросы Delphi 0 13.09.2007 12:06