delphi поиск компонента на форме

Перебор компонентов формы, скрыть компоненты формы

Сегодня мы научимся перебирать компоненты на форме, определять класс найденного компонента, менять его свойства.

Совсем недавно я писал как можно динамически создать форму. Настал черед поработать с её компонентами.

Шаг 1. Поиск компонентов формы.

Компоненты, принадлежащие владельцу, хранятся в специальном списке. И форма в данном случае не исключение.

Каждый компонент в списке пронумерован. Номер хранится в свойстве.

Количество компонентов в списке Components можно посмотреть в свойстве ComponentCount.

Итак, мы знаем список, в котором хранятся все элементы формы, знаем, сколько этих элементов. Написать цикл для перебора всех компонентов напрашивается сам собой.

Выглядеть он будет так:

Или так, кому как удобнее:

Шаг 2. Работа с компонентами

Теперь мы знаем как найти все компоненты на форме. Теперь давайте подумаем, как это нам может пригодиться? Я предлагаю создать новый проект, накидать на него несколько разных визуальных элементов. Обязательно добавьте пару кнопок. Делать мы будем следующее: по клику мы будем скрывать все элементы формы, кроме Button. Обработчик нажатия будет выглядеть следующим образом:

Область применения данного приема ограничена только вашей фантазией. Можно массово очищать Edit, проставлять птичек в CheckBox и тд.

Шаг 3. Как управлять списком компонентов.

Очистка всего списка:

Добавить компонент. Новый элемент будет последним в списке.

Поиск компонента в списке:

Источник

Как искать компоненты по признаку?

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Подскажите где искать и что искать
Необходимо реализовать простенький на мой взгляд скрипт. Он должен выполнять следующее: Зашел.

Как отсортировать по морфологическому признаку?
Здравствуйте. Как отсортировать список мужских и женских фамилий по морфологическому признаку.

tickКак можно сгруппировать в DataGrid данные по признаку
Подскажите, как можно сгруппировать в DataGrid данные по признаку, чтобы получилось, что вроде.

сам напиши, там один цикл всего

В том то и дело, что хотелось бы без перебора всех, тк на форме может быть 50-100-200компонентов, а назначить что-то нужно только примерно 20%, то есть 80% перебора получается излишним. Встроенной функции какой-нить такой нет?

Есть другие предложения?

ну если не хотите все, то есть TList закидывайте к него все что нужно, и создайте несколько TList

хотите еще большего функционала? создавайте свой класс наследник TList

вообщем возможности для управления компонентами на форме не ограничены.

Ну да, только нужных нету.

tickКак показать все слова в тексте по признаку?
К примеру как показать все слова в тексте с буквой «а» или все слова взятые в кавычки?

tickКак получить значения строк сгруппированых по признаку?
Добрый день. При разработке проекта, возникла проблема с выборкой. Есть таблица со следующими.

tickКак отсортировать набор строк по определенному признаку?
Представим что есть несколько строк: 25р за проезд 10р комиссия по оплате 150р покупки 50р за.

Как выбрать записи по признаку в сторонней таблице?
как из таблица A показать только те записи ID которых встречается в таблице B?

Источник

Поиск компонентов

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Поиск динамически созданных компонентов
Доброго времени суток. Не могу сладить с поиском динамически созданных компонентов. На форме есть.

tickПоиск компонентов Image с индексом, хранящимся в переменной
Всем привет! Вопрос: возможно ли найти компонент, с помощью переменных. Например, есть переменная.

Компоненты, типы компонентов, классы компонентов в Delphi
Какие есть типы и классы компонентов в Delphi?

Поиск компонентов
А как проще всего подобрать себе компоненты? Есть какой-то сервис? Например хочу подобрать себе.

Поиск средства инвентаризации и учёта ПК и их компонентов на Unix системах
Добрый день дамы и господа! Нахожусь в поиске программного средства учета инветаризации.

tickРазработка приложений с использованием стандартных и дополнительных компонентов. Динамическое создание компонентов.
Здравствуйте! Помогите мне, пожалуйста. Условие задачи состоит в следующем: из списка выбираю.

tickНайти сумму всех компонентов и произведение отрицательных компонентов файла
Создать числовой файл F. Найти сумму всех компонентов и произведение отрицательных компонентов.

Источник

2

Работа с компонентами в Delphi

Классы в Delphi продуманы очень хорошо. Если посмотреть на структуру всех доступных нам компонентов, то получится громадное дерево. В этой главе мы бу­дем знакомиться с классом формы и ее свойствами. Но прежде чем перейти к это­му, мы рассмотрим иерархию классов, от которых происходит форма:

Перед точкой можно увидеть имя модуля, в котором объявлен класс, а после точки имя класса. Классы перечислены в том порядке, в котором они наследуются,

т.е. самый первый идет TObject, его свойства и методы наследует TPersistent. Далее идет TComponent, который наследует свойства И методы TPersistent и TObject. Таким образом, функционал класса постепенно наращивается, а каждый последующий класс добавляет к функционалу что-то новое и необходимое для компонентов определенного вида.

В приложении 1 приведено описание основных компонентов, являющихся базо­выми для большинства VCL-компонентов. Там же вы найдете основные свойства и методы.

Обратите внимание, что все визуальные компоненты происходят от TControi, а значит, все они будут обладать его свойствами. Возможно, что-то еще не очень понятно, но со временем все встанет на свои места. Знакомясь с компонентом, я буду показывать вам иерархию объектов, от которых он происходит.

Теперь рассмотрим класс TForm, на основе которого вы будете создавать формы для своего будущего приложения. Вы просто создаете новый класс от TForm, по­мещаете на него свои компоненты, добавляете функционал — и новая форма готова.

В Delphi расстановка элементов управления происходит визуально, и все дела­ется одним нажатием клавиши мыши. Даже самый сложный пользовательский ин­терфейс можно сделать в считанные минуты.

Как вы уже знаете, если выделить какой-то компонент, то в объектном инспек­торе появятся его свойства и события. Сейчас мы рассмотрим основные свойства и события формы. Большинство из них присутствуют и у компонентов. Поэтому в будущем уже не будем повторяться. Итак, начнем рассмотрение.

Любой компонент может быть выровнен по одной из сторон родительского компонента (на поверхности которого он распо­ложен). Этому свойству можно присвоить следующие значения:

Компоненты выравниваются относительно формы, а форма выравнивается относительно экрана.

45aa10bcfcec

Оно показывает, как происходит закрепление к родительскому объекту. Это свойство раскрываю­щееся. Если щелкнуть по квадрату слева от имени свойства, то раскроется спи­сок из четырех дополнительных свойств:

По умолчанию прикрепление происходит по левому и верхнему краю. Это значит, что при изменении размера окна расстояние от компонента до левого верхнего угла не изменяется. Если прикрепить компонент к правой кромке окна, то при изменении размера не изменится расстояние до правой кромки.

Это свойство раскрывающееся. Если щелкнуть по квадрату слева от имени свойства, то раскроется список из четырех свойств:

0815f827d55e

95ccc135538e

? clientHeight — это свойство в виде целого числа. Показывает высоту клиент­ской области окна. Высота берется без учета ширины оборки и системного ме­ню, только рабочая область.

? ciientwidth— это свойство в виде целого числа показывает ширину клиент­ской области окна. Ширина берется без учета ширины оборки и системного ме­ню, только рабочая область.

Если вы установите эти значения, то окно нельзя будет растянуть больше максимального размера и уменьшить меньше минимального.

5803cc1cbb5d

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

48dad71bf4f8

Formstyle— стиль формы. Здесь доступны для выбора следующие ва­рианты:

случаях многодокументная архитектура остается неизменной и будет жить еще долго;

? Height (тип свойства — целое число) — высота окна.

? Hint (тип свойства— строка)— текст подсказки, который будет появляться в строке состояния при наведении указателя мыши на форму/компонент.

? HorzScroiiBar— параметры горизонтальной полосы прокрутки. Этот параметр пока не будет рассматриваться, потому что если его раскрыть, то там будет столько настроек, что это тема для отдельного разговора.

67d885ad08e7

icon — иконка, отображающаяся в заголовке окна. Если дважды щелкнуть по этому свойству, то появится окно загрузки иконки (рис. 6.9). В этом окне есть ряд кнопок:

Если это форма, то в коде будет создан шаблон объекта с таким же именем, но с добавлением в начале имени буквы «Т». Мы с вами уже рассмотрели исходный код, который сгенери­ровал Delphi для пустого проекта. Там объект назывался TForm1. Обратите вни­мание, что здесь, а именно в шаблоне, написано просто Fromi. Если вы попро­буете изменить свойство Name, то и имя объекта в исходном кодсизменится.

45ce81eb2308

Здесь доступны следующие па­раметры:

Источник

Delphi поиск компонента на форме

Все компоненты, как объекты, имеют множество свойств, определяющих их работу. При установке компонента на Форму из палитры большинство этих свойств определяются системой Delphi автоматически. При создании динамического компонента программист должен описать и настроить их вручную. Посмотрим, как это делается.

Далее. Когда компонент создан, то есть место в памяти под него выделено, можно задавать значения параметрам этого объекта. Прежде всего, это ещё один компонент, так называемый «родитель». Компонент-родитель будет отвечать за отрисовку нашего динамически создаваемого компонента. Это значит, что новый компонент появится в границах компонента-родителя.

Если компонент-владелец имеет тип TComponent, то есть может быть любым компонентом, то компонент-родитель уже имеет тип TWinControl. То есть это должен быть «оконный» компонент, умеющий принимать и обрабатывать сообщения от системы Windows. Это необходимо, так как компонент должен находиться в некоторой иерархии компонентов, принимающих и передающих сообщения от системы Windows. Нашему динамическому компоненту сообщения будут передаваться через компонент-родитель.

А некоторые компоненты вообще не умеют принимать сообщения от системы, и в процессе работы в этом случае ими также будет управлять компонент-родитель, например, Форма или Панель, на которой они находятся.

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

Вот общая схема «конструирования» динамически создаваемого компонента:

var Component: TComponent; //Описать переменную для компонента

begin
Component:=TComponent.Create(Owner); //Задать владельца
Component.Parent:=Parent; //Задать родителя
end;

На этом создание компонента можно считать законченным, и он успешно появляется (или «не появляется», если он не визуальный!) в приложении. Остальные свойства будут присвоены ему по умолчанию самой системой Delphi.

Естественно, для визуальных компонентов значения таких свойств по умолчанию как положение на Форме, ширина, высота «свежесозданного» динамически компонента мало кого устроят. Нужные размеры и положение компонента также придётся задать программисту.

Давайте для примера динамически создадим многострочный редактор, компонент Memo. Пусть он появляется на Форме по нажатию кнопки:

procedure TForm1.Button1Click(Sender: TObject);
var Memo: TMemo;
begin
Memo:=TMemo.Create(Form1);
Memo.Parent:=Form1;
Memo.Left:=50;
Memo.Top:=50;
Memo.Width:=250;
Memo.Height:=100;
Memo.Text:=’Мама я родился!’;
end;

DinCreMemo

Ребята, не забывайте присваивать (ассоциировать в Инспекторе Объектов) своим кнопкам предлагаемые здесь процедуры. А то потом в комментариях и появляются возгласы: «ничего не работает!»

Есть ещё свойство Name! По умолчанию Delphi присвоит ему типовое имя с присвоением очередного порядкового номера: Memo1. Программист при создании компонента также может присвоить свойству Name нужное значение, например:

К данному компоненту можно обращаться как по этому имени, так и с указанием переменной, с помощью которой он был создан: Memo. Естественно, в последнем случае переменная должна быть глобальной.

А дело вот в чём. Посмотрите в свежесозданном проекте, ещё до добавления компонентов, на список перечисленных в операторе uses стандартных модулей:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

Теперь возьмите в Палитре компонентов компонент Memo или ту же кнопку Button, положите на Форму и опять посмотрите на список модулей:

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

Подчёркиванием я выделил модуль, который автоматически добавил Delphi к списку необходимых модулей. Перед выполнением приложения компилятор просматривает установленные компоненты и добавляет в список uses модули, необходимые для работы этих компонентов. Так что даже если вы полностью сотрёте этот список ( оставьте только » uses Forms; «), Delphi его восстановит в том минимальном виде, который нужен для функционирования компонентов.

Также становится понятно, почему приложение, создающее Memo через нажате кнопки, сразу заработало. Для работы компонентов Button и Memo необходим один и тот же модуль StdCtrls, описывающий компоненты, расположенные на вкладке Standart. Поэтому, когда мы положили на Форму компонент Button, Delphi добавил этот модуль, что обеспечило работу также и Memo.

Теперь возникает вопрос, как можно создать приложение аналогичное первому, где компонент Memo создавался динамически по нажатию кнопки, но чтобы кнопка тоже была создана динамически!

Естественно, проще всего создать обработчик для динамически создаваемого компонента, воспользовавшись готовым компонентом из палитры. Создаём для него нужный обработчик, а затем этот компонент просто удаляем. А теперь достаточно присвоить имя созданного обработчика соответствующему свойству динамического компонента. Название этого свойства будет совпадать с названием соответствующего события в Инспекторе Объектов. Например, для события OnClick пишем так:

Естественно, имя обработчика может быть любым, просто в данном случае я воспользовался тем обработчиком, что создал Delphi для кнопки из палитры. Если оно вам не нравится, можно смело переименовать процедуру, только не забудьте изменить её название также и в описании типа Формы.

Вот и всё. Все ресурсы, выделенные для функционирования компонента, будут освобождены. Останется только созданная переменная, указывающая на уже несуществующий в памяти объект. Её тоже неплохо бы уничтожить. Это делается присвоением переменной значения nil. Есть процедура, выполняющая оба эти действия, уничтожение и объекта и переменной: FreeAndNil:

Источник

Понравилась статья? Поделить с друзьями:
Добавить комментарий
  • Как сделать успешный бизнес на ритуальных услугах
  • Выездной кейтеринг в России
  • Риски бизнеса: без чего не обойтись на пути к успеху
  • delphi координаты мыши на форме
  • delphi консольное приложение с параметрами