Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Hello, World!
  
 

Фильтр по датам

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  19:41[Войти] | [Зарегистрироваться]

Обсуждение материала
Жизнь и смерть в режиме run-time
Полный текст материала


Другие публикации автора: Елена Филиппова

Цитата или краткий комментарий:

«... Материал предназначен для начинающих программистов, умеющих работать с компонентами Delphi в режиме design-time но уже не считающих, что программировать это значит 'накликать мышкой форму'. Никаких интересных моментов для профи статья не содержит, это исключительно учебный материал.
Цель статьи ответить на вопросы и показать :
Каким образом можно создавать и располагать на форме визуальные компоненты? Каким образом обрабатывать группы компонент, меняя их свойства 'одним махом'? Как назначать обработчики для разных событий? Зачем нужно свойство Tag? Как можно двигать компоненты по форме? И все это - во время работы программы (режим run-time).
...»


Важно:
  • Страница предназначена для обсуждения материала, его содержания, полезности, соответствия действительности и так далее. Смысл не в разборке, а в приближении к истине :о) и пользе для всех.
  • Любые другие сообщения или вопросы, а так же личные эмоции в адрес авторов и полемика, не относящаяся к теме обсуждаемого материала, будут удаляться без предупреждения авторов, дабы не мешать жителям нормально общаться.
  • При голосовании учитывайте уровень, на который расчитан материал. "Интересность и полезность" имеет смысл оценивать относительно того, кому именно предназначался материал.
  • Размер одного сообщений не должен превышать 5К. Если Вам нужно сказать больше, сделайте это за два раза. Или, что в данной ситуации правильнее, напишите свою статью.
Всегда легче осудить сделанное, нежели сделать самому. Поэтому, пожалуйста, соблюдайте правила Королевства и уважайте друг друга.



Добавить свое мнение.

Результаты голосования
Оценка содержания

  Содержит полезные и(или) интересные сведения
[1]3997.5%
 
  Ничего особенно нового и интересного
[2]12.5%
 
  Написано неверно (обязательно укажите почему)
[3]00%
 
Всего проголосовали: 40

Оценка стиля изложения

  Все понятно, материал читается легко
[1]3690%
 
  Есть неясности в изложении
[2]410%
 
  Непонятно написано, трудно читается
[3]00%
 
Всего проголосовали: 40




Смотрите также материалы по темам:
[Создание компонентов в run-time] [Обработчики событий] [Координаты компонент, относительное расположение.] [Процедурные типы]

Комментарии жителей
Отслеживать это обсуждение

Всего сообщений: 36

14-11-2013 04:37
Спасибо! Довольно интересный и познавательный материал.


04-07-2013 02:20
Большое спасибо за статью! Особенно за описание свойства Tag! Это позволило значительно упростить код и ускорить его работу!


29-01-2012 22:56
to Dimkas:
С вопросами милости просим на Круглый Стол
Здесь же идет обсуждение материала. Высказали свое сожаление, что нет информации о создании страниц на PageControl и достаточно.
 Geo


29-01-2012 17:01
Пробовал создавать страницы в компоненте TPageControl. Страницы видимо создаются, но их не видно. При закрытии вообще Exeption непонятный. Нигде не нашел описания этого, в частности у Вас. Оч жаль :(
Тоже очень интересует етот вопрос??????


15-07-2011 03:45
Автору огромное спасибо, статья очень помогла разобраться с динамическим созданием компонентов.


07-03-2010 03:33
"...Вообще, почаще читайте исходники..."
+ 1000
Статья - свежая идея для осваивающих Delphi. И хотя о создании компонент написано уже много, на моей памяти никто не удосуживался написать так подробно -- везде было Create, Parent, и всё.
 Grim


05-02-2010 04:09
Елене огромное спасибо за статью!
Где-то в Интернете нашел способ как можно двигать компоненты по форме. Например, двигаем по форме обычную кнопку (Delphi 7 + Windows XP)

procedure TForm1.Button1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
(Sender as TControl).Perform(WM_SYSCOMMAND, $F012, 0);
end;



03-10-2008 02:50
Благодарю за материал, Елена.
Особенно потому, что не нашел других хороших статей на эту тему. Мне пригодилось, несмотря на то, что не первый год программирую.


06-09-2008 16:07
Отличная статья, материал изложен чётко и в доступной форме, подробно откоментирована почти каждая строчка,
Читать было одно удовольствие, спасибо :)


26-05-2008 01:19
ЗЫ а статья очень интересная :)


26-05-2008 01:18
to Валера Туз
Чтоб сохранить в дизайн-тайм, при выходе сохраняй инфу в bla-bla.DFM и bla-bla.PAS, для понятливости создай пустой проект и проект с кнопкой, а потом сравни их. А чтоб избавиться от OnClick, сделай чекбокс - при включенном таскаем кнопку, при выключенном её нажимаем.


12-01-2007 14:25
а можно назначать обработчики событий, только в dll, я пробовал, даже не компилируется. Помогите как это сделать в длл.


22-08-2006 02:20
Статья полезна. Особенно приятно, что написано добротным русским языком.


20-06-2006 12:36
Вроде не студент, а пригодилось ;о)
Кстати, этот материал по книгам - у Архангельского не нашел, у Пачека досадная опечатка. Понял ее только после прочтения Вашей статьи.


17-12-2004 12:26
Клевая статья.

Когда я начал реализовывать в своей работе то, что описано в статье, возникли некоторые вопросы:

1. А как бы сохранить потом те компоненты, что я настроил себе в виде некоего шаблона? Можно ли настроенно в ран-тайме "зашить" в дизайн-тайм?

2. И в каком направлении все же копать, чтобы не срабатывало событие OnClick при перетаскивании?


20-11-2004 01:57
сообщение от автора материала
Вы правы, в данном конкретном примере разницы между двумя формами записи условия нет.

Но, когда в одном из операндов сложного условия есть проверка на существование указателя, я
иногда пишу условие "лесенкой", особенно, когда пишу код "на вынос".
И вот почему:

В Delphi  существует два варианта выполнения логических выражений.

1) Выполнение вычисления логического выражения останавливается, как только встречается операнд, который делает
условие заведомо ложным или истинным, без окончательной проверки всех частей логического выражения.

2) Вычисляется ПОЛНОЕ логическое выражение и только после этого его значение используется далее.

Какой из вариантов работает  в данный момент, определяется или опцией  или директивой компилятора.

В опциях компилятора это Complete boolean eval — по умолчанию она отключена, то есть используется первый способ вычисления.
Директива компилятора это:
{$B+} — включает режим полного вычисления логического выражения ( способ №2 )
{$B-} — выключает этот режим ( способ №1 )

То есть, если Вы работаете с умолчанным значением этой опций компилятора, тогда, конечно,
никакой разницы в двух следующих вариантах записи условия нет:

(*)
IF TagPtr <> nil
Then IF TagPtr Is TCheckBox
    Then TCheckBox(TagPtr).Checked:=True;

(**)
If(TagPtr <> nil)And(TagPtr Is TCheckBox)
Then TCheckBox(TagPtr).Checked:=True;

Если TagPtr  = nil, то вычисление условия сразу прекратиться и дальнейшие сравнения  не будут выполняться.

Но, если будет включен второй вариант вычисления логического выражения, то упрощенная форма (**) записи этого IF выполнит ВСЕ проверки в условии, а указатель-то пустой!
В приведенном примере второе условие выполнится, даже если TagPtr = nil.
Но, если в других частях условия было бы обращение к полям этого TagPtr, то мы на этом условии получили бы AV.

В общем случае, вариант (*) является более защищенным.
Хотя, если Вы знаете наверняка, что работаете в режиме {B-}, то можно со спокойной душой использовать вариант (**)
В своих проектах я тоже использую обычно упрощенную запись условий. Но иногда вспоминаю и про второй режим...

Так что, сложный вариант записи в данном случае не является необходимым, но иногда на это стоит обращать внимание.
Особенно, если Ваш код будет компилироваться с заранее неизвестным значением этой опции компилятора.


19-11-2004 18:57
Большое спасибо за статью, действительно, во многом поучительная.
Если разрешите, вопрос маленький (думаю, на Круглом столе не стоит такие мелочи писать :).
Вы пишете
/Var TagPtr : Ponter;
/...
/TagPtr:=Ptr(TMenuItem(Sender).Tag);
/IF TagPtr <> nil
/Then IF TagPtr Is TCheckBox
/    Then TCheckBox(TagPtr).Checked:=True;
Можно ли писать условие If так (разумеется, же при отсутствии заявления Else конкректно на условие "TagPtr <> nil"):
If(TagPtr <> nil)And(TagPtr Is TCheckBox)
Then TCheckBox(TagPtr).Checked:=True;
Я столкнулся с этим, но в моем случае условий было больше, вроде никаких конфликтов с этим связанных не встречал (не подумайте что этот вопрос является укором или еще чем-нибудь :).

Спасибо за ответ


18-11-2004 01:10
"(Edit + IntToStr(i)).Text:=''"
На самом деле есть одно простое решение этой проблемы, а именно:

TEdit(Form1.FindComponent('Edit'+inttostr(ш))).Text:='';



Список всех компонентов на форме получается так:

Form1.ComponentCount



Шлите на мыло вопросы, если что-то не понятно.


14-07-2004 22:26
Уважаемая Елена!!! Большое спасибо за статью!!! Очень понравилось!!!


15-05-2004 08:41
сообщение от автора материала
Без кода ничего сказать невозможно.
Вопросы лучше задавать на Круглом столе.


15-05-2004 05:10
Пробовал создавать страницы в компоненте TPageControl. Страницы видимо создаются, но их не видно. При закрытии вообще Exeption непонятный. Нигде не нашел описания этого, в частности у Вас. Оч жаль :(
 xsid


15-05-2004 05:08
Пробовал создавать страницы в компоненте TPageControl. Страницы видимо создаются, но их не видно. При закрытии вообще Exeption непонятный. Нигде не нашел описания этого, в частности у Вас. Оч жаль :(
 xsid


15-08-2002 10:59
Вообще говоря Owner-ом как правило выступает сама форма. Во всех источниках и хелпе это именно так. Хотя конечно можно совместить Parent и Owner


25-06-2002 20:21
Разобрался. Открывать стандартное приложение.
А просмотр формы: View,Forms...,(Shift-F12),Forms1,OK.


20-06-2002 17:12
Я попытался этот исходник заново набрать(*), один к одному,
буква к букве, но с момента открытия нового проекта.
И уже появились вопросы. Какой проект открывать?
Вроде не консольное приложение, но и не стандартное
приложение (форма отсутствует). А какой тогда?
* - путем выделить,копировать,вставить.


04-03-2002 12:42
Благодаря этой статье ваше 'Королевсво' попало ко мне в Favorites :))
Бальшое СПАСИБА


10-12-2001 13:42
Просто отлично.
Но мнебы хотелось узнать и про то как перемещает и изменяет размеры обьектов сам делфи.
Сообщение не подписано


25-10-2001 11:08
Мне понравилось. Не потому, что автор - Королева. А потому-что - мне понравилось и нашел массу полезного для себя.


18-07-2001 20:55
Хорошая статья. Пример, как надо писать статьи в этот раздел.


21-03-2001 18:27
Статья несомненно нужная. Но, вряд-ли она для новичков, и не для некоторых 'профи', как анотировано! Некоторые из первых- могут и не разобраться, а для некоторых из вторых- есть шанс узнать ещё один ма-аа-ленький нюанс, найти которые с Inc 'профи ....' всё труднее :( и познание, которых- является повышением ентого ' проф.... '. С ув. Михаил.


12-03-2001 12:56
Отличная статья! Особенно приятно сопровождение примером (исходником).
Сообщение не подписано


19-12-2000 07:43
Nuzno bilo eshe podrobnee! Klassniy material.


13-12-2000 10:02
Всей душой ЗА такие статьи. Во-первых, никто не спорит с тем, что ничто не заменит собственного опыта и вообще полезно самому поломать голову. Но есть еще критичный параметр - время, а кроме того, кое-кто в школе учил совсем не английский, а даже наоборот - немецкий:))))) и хелп ему читать-просто мука. И хорошо и полезно почитать материал, открывающий работу среды с объектами; и успокаивает волнение души сознание, что кто-то не так уж далеко от тебя со всем этим разобрался:)Приятно, конечно, скривить нос и сказать, что все это просто, но лично меня от этого всегда будет удерживать воспоминание, как я, начиная работать с делфи, промучалась целый день или два, соображая, как бы мне пересчитать визуальные свойства компонентов в зависимости от разрешения экрана(не устраивал scale). Екатерина.


07-12-2000 11:08
Больше таких статей и чище станут форумы и конференции ;-)


06-12-2000 20:50
Можно было и попроще.
Краткость сестра таланта.


06-12-2000 20:50
Можно было и попроще.
Краткость сестра таланта.


Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Кто съел Красную шапочку?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.

Оценка содержания
 
Содержит полезные и(или) интересные сведения
 
Ничего особенно нового и интересного
 
Написано неверно (обязательно укажите почему)


Оценка стиля изложения
 
Все понятно, материал читается легко
 
Есть неясности в изложении
 
Непонятно написано, трудно читается

Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования