Зачем нужен TAction ?
Hужны они для синхронизации свойств Enable, Checked, ImageIndex, Caption, Hint, OnClick и т.п. различных контролов. Hаиболее часто применяется для кнопок и элементов меню. Сильно облегчает разработку дружественных сред, когда до какого-то действия можно добраться через кнопку toolbar'а, MainMenu'шку и PopupMenu'шку: 1. Создал Action, проставил св-ва (Caption, Hint, ImageIndex и т.п.) 2. Прописал действие на OnExecute (если не лениться и задавать нормальные имена Action'ам, то процедуры тоже будут иметь нормальные имена) 3. Прописал на TAction.OnUpdate условия для Enabled, Checked и т.п.:
4. Проставил всем компонентам, активизирующим это действие, свойства Action и, если
надо, ImageList. Без экшинсов тебе пришлось бы всем контролам проставлять Caption
'ы, хинты, имагиндексы и т.п.. Прописывать везде, где надо, куски типа
и следить за тем, чтобы все кнопки/меню итемы и т.п. соответствовали: пользователь сделал изменение, хочет сохранить, а у него в менюшке по правой кнопке пункт Save - запрещен. И расскажи ему, что у него в MainMenu/File/Save - разрешился, а этот - "забыл". Далее, можно спокойно "нарисовать" этот ActionList с Action'ами, набросать кнопок на один ToolBar, проработать функциональность, а уже потом не напрягаясь и не думая, где какой код вставить, "дорисовывать" менюшки и кнопки. При этом, когда надо одну кнопку грохнуть, а другую добавить - это не напрягает, т.к. ничего важного элемент
кнопки не содержит. Всю информацию о поведении этой кнопки содержит соответствующий
Action. Вывод: снижает трудозатраты на разработку польз!
овательс
кого интерфейса - снижает вероятность ошибки. Hакладные расходы оценить не пытался (они безусловно есть), но думаю, что они в большинстве случаев не существенны.
procedure TMainForm.FormCreate(Sender: TObject); var ScreenLogPixels: Integer; DC: HDC; begin ... чик, чик.. просто проустили строки добавили >> i1 := 0; end;
2.3. затем полный рулез
procedure TMainForm.ActionList2Update(Action:
TBasicAction; var Handled: Boolean); begin { Update the
status of the edit commands } EditCutCmd.Enabled := Editor.SelLength > 0; EditCopyCmd.Enabled := EditCutCmd.Enabled; if Editor.HandleAllocated then begin EditUndoCmd.Enabled := Editor.Perform(EM_CANUNDO, 0, 0) <> 0; EditPasteCmd.Enabled := Editor.Perform(EM_CANPASTE, 0, 0) <> 0; end; добавили >> inc(i1); >> StatusBar.Panels[2].Text := inttostr(i1); end;
3. запуск У меня после старта 1602 вызова ActionList2Update повели мышкой по окну 32К вызвовов на текущий момет пишу письмо, проект висит, я тама немного поелозил мышей около 1М вызовов, 0.912М, если быть точным Ж:-((
Резуме: 1. Все выше перечисленное не значит что я не рекомендую использовать ActionList. 2. Надо думать, что именно выносить на Update(SQL-запрос скорее всего не надо Ж:-)))) 3.
О сколько нам открытий нудных.....
Как построить график в Excel?
Проблема такая: из своей проги заполняю столбец в экселе числовыми значениями. Так вот по ним надо построить в экселе ...
InstallShield, BDE
Установил InstallShield Developer 7.0, однако у него нет модулей bde. Скачал merge module bde511pro, пытаюсь его ...
Дык как же поженить KOL и FPC?
Скачал последнюю версию KOL, есть FPC версии 1.0.10. Распаковал, пропатчил для FPC, всё сделал по инструкции. В ...
Окно поверх всех окон - проблема(+)
Для модераторов: В FAQ и поиске ничего не нашёл, точнее нашёл, но не то. Здравствуйте уважаемые Мастера. Вроде всё ...
проблемы с TServerSocket
Доброе время суток. У меня возникла такая ситуация. Прога, рассылающая по таймеру куче клиентов некую строку кодом: ...
OLAP
Добрый день господа. Если кто занимался оперативной аналитической обработкой данных не дайте пропасть. Пытался ...
COM. Автоматизация - от простого к сложному (часть I)
В данной статье речь пойдёт об одной из COM-ориентированных технологий, которая занимает одно из ведущих мест при разработке программных средств, использующих технологию COM. Итак, разговор пойдёт об автоматизации. ... Я ориентировал данную статью на неискушённых в COM-программировании людей, попросту говоря, на новичков в данной области, поэтому я намеренно не вдавался в объяснения некоторых деталей, понимание которых может только запутать неискушённого читателя. По этой же причине (ориентированности на НЕпрофессионалов), некоторые вещи (очевидные для опытных людей) я разобрал с особой тщательностью.
DirectX. Графика в проектах Delphi (с CD-ROM)
Книга посвящена использованию модулей DirectX в приложениях, разрабатываемых в Delphi. Начиная с простых примеров, последовательно и подробно рассматривается создание объектов двумерной и трехмерной графики, визуальные и цветовые эффекты, а также обсуждаются дополнительные темы, такие как быстрая работа с устройствами ввода. Большое внимание уделяется вопросам оптимизации и ускорения работы приложений. Книга содержит практические решения проблем, возникающих при программировании игр и других приложений, нуждающихся в высокой скорости вывода графики в среде Windows. Прилагается компакт-диск с инструментальными средствами, кодами и демонстрационными версиями рассматриваемых примеров.
Автор: Краснов
Хокку дня
Что же ты, гейша, лежишь нагишом? Знаю,что жарко, но я же терплю Видишь, тулуп не снимаю!
Афоризмы
"Человечек, - это звучит горденько!"
Фраза дня
Иду, вижу - кто-то пить бросил...
Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Нью Джерзи (США) водителям нельзя самим заправлять машину. На всех заправках этим должен заниматься обслуживающий персонал.
В Арканзасе (США) считается преступлением неправильно произнести название этого штата.
И на закуску коротенький анекдот
- Открываю утром холодильник, а там - ничего... Ну, погоди, коварный живой йогурт!