![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Delphi - MainMenu и выход из программы |
|
Delphi - MainMenu и выход из программы
|
Пользователь Сообщения: 108 |
Добрый день. В проге имеется главное меню, и конечно же стандартная менюшка "Выход", все, что надо сделать при нажатии на эту клавишу, это выполнить Form.Close, но вот в чем проблема, если прописать в обработчике нажатия Close или Form.Close, то компилятор ругается, будто нет соответствующей процедуры и если запустить прогу вывалится AV.
Создавать же обработчик и в нем писать одну единственную команду Close бред... Как быть? |
|
Отправлено: 05:25, 09-02-2013 |
Пользователь Сообщения: 108
|
Профиль | Отправить PM | Цитировать Цитата Любезный:
procedure TMainForm.Met11Change(Sender: TObject); begin try if (IsNan(Met11.Value) = False) and (Met11.Value <> 0) and (Met11.Value < Met11.MaxValue) then UpdateMetProduction else if (IsNan(Met11.Value) = True) or (Met11.Value = 0) then begin MetLabel11.Caption := ''; MetLabel.Caption := ''; end else Met11.Value := Met11.MaxValue - 1; except on E:EConvertError do Met11.Clear; end; end; Цитата cookie_monster:
Я пробовал много вариантов, с сайта 7zip скачивал порт для делфи, но что-то было не так, то ли функционал то ли что. Находил так же другие компоненты, пытался их использовать, один был очень даже неплох, сжимал нормально, а вто с расжатием одна проблема была, при сжатии если нужный файл находился мне допустим в C:\Windows\"много всяких папок"\notepad.exe, то архив будет такой: папка Windows -> много всяких папок -> нужный файл Насчет JclCompression - я вроде бы в нем разобраться не смог( Со стандартной библиотекой System.Zip тоже какие-то траблы были |
||
Последний раз редактировалось novashdima, 10-02-2013 в 18:58. Отправлено: 18:49, 10-02-2013 | #31 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 295
|
Профиль | Отправить PM | Цитировать Цитата novashdima:
Возьмём тот же код и слегка переделаем, используя Sender. procedure TMainForm.Met11Change(Sender: TObject); begin if not (Sender is TMyType) then exit; try if (IsNan((Sender as TMyType).Value) = False) and ((Sender as TMyType).Value <> 0) and ((Sender as TMyType).Value < (Sender as TMyType).MaxValue)) then UpdateMetProduction else if (IsNan((Sender as TMyType).Value) = True) or ((Sender as TMyType).Value = 0) then begin MetLabel11.Caption := ''; MetLabel.Caption := ''; end else (Sender as TMyType).Value := (Sender as TMyType).MaxValue- 1; except on E:EConvertError do (Sender as TMyType).Clear; end; end; |
|
Отправлено: 19:50, 10-02-2013 | #32 |
Пользователь Сообщения: 108
|
Профиль | Отправить PM | Цитировать Цитата Любезный:
Надеюсь понятно написал. |
|
Отправлено: 20:04, 10-02-2013 | #33 |
Старожил Сообщения: 295
|
Профиль | Отправить PM | Цитировать Начиная с D2010, можно решить и этот вопрос. Но тут уже посложнее. Привязка будет не к номеру, а к имени.
У любого компонента есть свойство Name. Все компоненты формы можно обойти в цикле и найти нужные, с нужными именами. Пример: Находишь нужный Label, присваиваешь ему Caption - и задача решена. |
Отправлено: 20:12, 10-02-2013 | #34 |
Пользователь Сообщения: 108
|
Профиль | Отправить PM | Цитировать Цитата Любезный:
procedure TMainForm.MetChange(Sender: TObject); var lab: TsLabel; namestr: string; begin if not (Sender is TsSpinEdit) then exit; try if (IsNan((Sender as TsSpinEdit).Value) = False) and ((Sender as TsSpinEdit).Value <> 0) and (((Sender as TsSpinEdit).Value) < ((Sender as TsSpinEdit).MaxValue)) then UpdateMetProduction else if (IsNan((Sender as TsSpinEdit).Value) = True) or ((Sender as TsSpinEdit).Value = 0) then begin namestr := (Sender as TsSpinEdit).Name; Insert('Label', namestr, Length(namestr)-1); with Self do for I:=0 to MainForm.ComponentCount - 1 do if (Components[i] is TsLabel) then if ((Components [i] as TsLabel).Name = namestr) then begin lab:=Components [i] as TsLabel; break; exit; end; lab.Caption := ''; MetLabel.Caption := ''; end else (Sender as TsSpinEdit).Value := (Sender as TsSpinEdit).MaxValue- 1; except on E:EConvertError do (Sender as TsSpinEdit).Clear; end; end; |
|
Последний раз редактировалось novashdima, 10-02-2013 в 21:29. Отправлено: 21:20, 10-02-2013 | #35 |
Старожил Сообщения: 295
|
Профиль | Отправить PM | Цитировать Ну это уж решай сам - всё зависит от конкретной задачи.
И, кстати, чтобы код проще читался, можно объявить отдельную переменную типа TsSpinEdit, присвоить ей значение Sender as TsSpinEdit и указывать в коде её, а не столь длинную фразу. |
Отправлено: 21:43, 10-02-2013 | #36 |
Пользователь Сообщения: 108
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:25, 10-02-2013 | #37 |
Старожил Сообщения: 295
|
Профиль | Отправить PM | Цитировать Согласен, тоже вариант.
|
Отправлено: 22:41, 10-02-2013 | #38 |
Пользователь Сообщения: 108
|
Профиль | Отправить PM | Цитировать Цитата Любезный:
|
|
Отправлено: 23:02, 10-02-2013 | #39 |
Старожил Сообщения: 295
|
Профиль | Отправить PM | Цитировать Цитата novashdima:
|
|
Отправлено: 00:58, 11-02-2013 | #40 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|