Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - MainMenu и выход из программы

Ответить
Настройки темы
Delphi - MainMenu и выход из программы

Пользователь


Сообщения: 108
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


Добрый день. В проге имеется главное меню, и конечно же стандартная менюшка "Выход", все, что надо сделать при нажатии на эту клавишу, это выполнить Form.Close, но вот в чем проблема, если прописать в обработчике нажатия Close или Form.Close, то компилятор ругается, будто нет соответствующей процедуры и если запустить прогу вывалится AV.
Создавать же обработчик и в нем писать одну единственную команду Close бред... Как быть?

Отправлено: 05:25, 09-02-2013

 

Пользователь


Сообщения: 108
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Любезный:
Он лучше в том случае, когда надо найти один компонент. Если же нужно найти сразу группу компонентов, лучше сразу попробовать сделать это в одном цикле и тут же присвоить значения ссылок на эти компоненты соответствующим переменным. »
А что мешает сделать типа такого?
Код: Выделить весь код
for i := 1 to Count do
begin
S:='Name'+IntToStr(I+1);
 with FindComponent(S) do Caption := 'BlaBlaBla...';
end

Отправлено: 01:16, 11-02-2013 | #41



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 108
Благодарности: 0

Профиль | Отправить PM | Цитировать


Ну что же, весь код я пересмотрел и переделал, в результате главный исходник уменьшился с 2900 строк кода до 1700, что не может не радовать. Также введя такую обработку я избавился от головняка в плане сохранения настроек в файл, за что огромное спасибо. Однако остается открытым два вопроса, каким образом можно объединить такие процедуры:
Код: Выделить весь код
procedure TMainForm.EnergyInfo(Sender: TObject);
begin
if EnergyLevel.Value <> 0
then begin
      Clipboard.Clear;
      Clipboard.SetTextBuf(PChar(EnergyLabel.Caption + ' ' + EnergyLevel.Text +
      ' уровень. Время исследования: ' + EnergyTime.Caption + '. Стоимость: ' +
      EnergyResource.Caption + '.'));
     end;
end;

procedure TMainForm.LaserInfo(Sender: TObject);
begin
  if LaserLevel.Value <> 0
  then begin
        Clipboard.Clear;
        Clipboard.SetTextBuf(PChar(LaserLabel.Caption + ' ' + LaserLevel.Text +
        ' уровень. Время исследования: ' + LaserTime.Caption + '. Стоимость: ' +
        LaserResource.Caption + '.'));
       end;
end;
И так далее. Весь вопрос в том, как бы перебрать все эти компоненты, учитывая, что название компонентов разной длины, единственное, что везде одинаково это окончание названия компонента ~Label/~Level/~Time. Используя всякие AnsiIndexStr/AnsiPos/Copy/Delete/Insert и т.д. из модуля StrUtils я намучаюсь так, что брошу это дело...

Последний раз редактировалось novashdima, 11-02-2013 в 15:45.


Отправлено: 05:45, 11-02-2013 | #42


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


novashdima, желательно под каждый новый вопрос, не имеющий непосредственного отношения к названию этой темы, заводить новую.

Отправлено: 07:26, 11-02-2013 | #43


Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Цитата novashdima:
А что мешает сделать типа такого? »
FindComponent - это такой же цикл. По сути дела, это выполнение одной и той же работы по нескольку раз. В случае очень многократного применения могут быть проблемы с производительностью.

Отправлено: 11:19, 11-02-2013 | #44


Пользователь


Сообщения: 108
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
novashdima, желательно под каждый новый вопрос, не имеющий непосредственного отношения к названию этой темы, заводить новую. »
Понимаю, но имхо лучше все вопросы обсудить и закрыть тему, а не создавать кучу тем(в данном случае мне пришлось бы создавать темы для: сжатия 7zip, поиск компонента, загрузка из ини, сохранение в файл, суть этой темы), вышло бы тем 10.

Цитата Любезный:
FindComponent - это такой же цикл. По сути дела, это выполнение одной и той же работы по нескольку раз. В случае очень многократного применения могут быть проблемы с производительностью. »
Понятно, тогда подскажите, как найти оптимально 3 раза по 3 компонента, не перебирая все компоненты 9 раз. Как проверить, все ли компоненты найдены и как узнать, что я все нужные компоненты нашел и выйти из цикла. Ничего простого не приходит в голову, только флаг для проверки найденных всех компонентов, при нахождении компонента сразу же присваивать его переменной...
И подскажите по поводу остальных вопросов.

upd
Создал темы под каждый вопрос.

Последний раз редактировалось novashdima, 11-02-2013 в 15:46.


Отправлено: 15:20, 11-02-2013 | #45


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


Цитата novashdima:
Понимаю, но имхо лучше все вопросы обсудить и закрыть тему, а не создавать кучу тем »
Имхо у нас у каждого своё, но есть Общие правила конференции OSZone.net, п.3.12. Лучше всего руководствоваться правилом — «Один вопрос — одна тема». И Вам легче, и отвечающим удобнее.

Отправлено: 16:40, 11-02-2013 | #46


Старожил


Сообщения: 295
Благодарности: 30

Профиль | Отправить PM | Цитировать


Цитата novashdima:
Понятно, тогда подскажите, как найти оптимально 3 раза по 3 компонента, не перебирая все компоненты 9 раз. Как проверить, все ли компоненты найдены и как узнать, что я все нужные компоненты нашел и выйти из цикла. Ничего простого не приходит в голову, только флаг для проверки найденных всех компонентов, при нахождении компонента сразу же присваивать его переменной... »
На первый взгляд - три цикла. Конкретно каким образом - зависит от задачи.

Отправлено: 17:49, 11-02-2013 | #47



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - MainMenu и выход из программы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
2008 R2 - Выход в интернет из автоматического задания (программы) thundersilence Windows Server 2008/2008 R2 0 21-09-2012 10:27
VBA - выход из цикла иоанн Программирование и базы данных 2 26-05-2009 22:24
Visual Basic .NET - отследить выход из программы StePashKo Программирование и базы данных 2 07-10-2006 16:32
MainMenu DelphiLesson Программирование и базы данных 2 14-09-2003 16:01
Выход из KDE karlison Общий по Linux 8 03-02-2003 09:42




 
Переход