Borland delphi 4 0 для начинающих создание форм activeform


Содержание

Borland delphi 4 0 для начинающих создание форм activeform

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

Delphi — прекрасная система визуального объектно-ориентированного проектирования, одинаково радующая и новичков в программировании, и профессионалов. Начинающим Delphi позволяет сразу, с небольшими затратами времени и сил создавать прикладные программы, которые внешне неотличимы от программ, созданных профессионалами. А для опытного программиста Delphi открывает неограниченные возможности для создания сколь угодно сложных программ любого типа, в том числе, распределённых приложений, работающих с любыми базами данных.

Более подробно о том, что такое Delphi и почему её стоит изучать, можно прочесть на специальной страничке и этом переводе статьи «Why Delphi? (Delphi For Beginners)» :

Эта статья о Delphi имеет цель объяснить, что такое Delphi и что он может сделать для вас.

Прежде всего, я предполагаю, что вы умеете работать с компьютером, и знаете что такое программирование в целом. Ведь если это не так, вас здесь бы не было в любом случае! Скорее всего, у вас уже есть базовые знания в области программирования. По-моему, я прав! Теперь сядьте поудобнее, расслабьтесь и читайте дальше.

Borland Delphi представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI) , или 32-битных консольных приложений (программ, которые не имеют графического интерфейса).

В сочетании с Borland Kylix, программисты Delphi могут создавать из одного исходного текста приложения и для Windows и для Linux, и это открывает новые возможности и увеличивает потенциальную отдачу от усилий, вложенных в изучение Delphi. В Delphi используется кросс-платформенная библиотека компонентов CLX и визуальные дизайнеры для создания высокопроизводительных приложений для Windows, которые повторной компиляцей можно легко превратить в приложения для Linux.

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

При создании графического интерфейса приложений Delphi, у вас все возможности языка программирования Object Pascal, «завернутого» в среду RAD . Такие компоненты окна графического пользовательского интерфейса, как формы, кнопки и списки объектов, включены в состав Delphi. Это означает, что вам не нужно писать никакого кода при добавлении их в ваше приложение. Вы просто «кладёте» их на вашу Форму, как в графическом редакторе. Вы можете также добавить на Форму элементы управления ActiveX, для создания в считанные минуты специализированных программ таких, например, как веб-браузеры. Delphi позволяет разработчикам дизайна внедрять в интерфейс новые элементы и кодировать их события одним щелчком мыши.

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

Паскаль

Лучшим способом представить что такое Delphi является Object Pascal на основе визуальной среды разработки. Delphi основан на Object Pascal, языке, аналогичном объектно-ориентированному C++, а в некоторых случаях даже лучше. Для разработчиков не имеющих опыта работы в Паскале, Delphi имеет шаблоны своих структур на Паскале, что ускоряет процесс изучения языка.

Компилятор Delphi упаковывает приложения в компактные исполняемые файлы, причем нет необходимости в громоздких библиотеках DLL — большое удобство, я должен сказать.

Библиотека Visual Component Library (автономные бинарные части программного обеспечения, которые выполняют некоторые конкретные предопределенные функции), или VCL, Delphi является объектно-ориентированной базой. В этой богатой библиотеке вы найдете классы для таких визуальных объектов Windows как окна, кнопки и т.д., а также классы для пользовательских элементов управления таких как таймер и мультимедийный плеер, наряду с невизуальными объектами, такими как список строк, таблицы базы данных, потоки и т.д.

Базы данных

Delphi может получать доступ ко многим типам баз данных. Используя BDE (Borland Database Engine — механизм доступа к базам данных), формы и отчеты, которые вы создаете, получают доступ к локальным базам данных, таким как Paradox и DBase, сетевых баз данных SQL Server, InterBase, также как и SysBase, и любые источники данных, доступные даже через ODBC (открытая связь с базами данных).

Итак, Delphi — прекрасная среда разработки Windows- и Linux-программ любого типа. Поэтому единственное, что вас должно уже сейчас интересовать —

Итак, запустим Delphi. Перед нами четыре окошка. Вверху во вcю ширину экрана окно управления проектом и средой разработки — главное окно Delphi. При его сворачивании сворачиваются и все остальные. Слева — инспектор объектов. В нём задаются свойства составляющих нашу программу компонентов. И наконец, в центре одно над другим два окна, окно формы будущей программы и окно программной начинки.

В пустой форме смысла нет. Наполнить её содержанием помогут компоненты Delphi. Они располагаются на главном окне, на нескольких вкладках. Все основные компоненты находятся на первых четырёх вкладках: Standard, Additional, Win32 и System. Их названия всплывают в виде подсказок при наведении мышки на пиктограммы.

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

Данные в компьютере можно рассматривать как ячейки памяти, имеющие свои имена (идентификаторы). Все данные в программе на языке Delphi должны быть описаны до их первого использования. И компилятор следит, чтобы в программе они использовались в соответствии с этим описанием, что позволяет избежать ошибок.

При создании любой серьёзной программы не обойтись без дополнительных, более сложных, чем числа и строки, типов данных. В Delphi программист может для своих целей конструировать собственные типы данных. Чтобы ввести в программу (описать) новый тип данных, применяется оператор с ключевым словом type.

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

Начало. Работа с файлами важная вещь в любом языке программирования. Для начала нужно упомянуть компоненты, которые умеют работать с файлами, считывать и сохранять своё содержимое, строки типа String, в файл текстового формата. Это компоненты ListBox, ComboBox и Memo, расположенные на первой же вкладке палитры компонентов.
Продолжение. В Delphi реализовано несколько способов прямой работы с файлами. Познакомимся с классическим способом, связанным с использованием файловых переменных. Прежде всего файл должен быть открыт.
Окончание. То, что мы узнали в предыдущей части урока, позволяет работать с файлами по адресу, жёстко записанному в тексте программы. Мы же хотим просматривать любые файлы по нашему выбору. В Delphi есть компоненты, позволяющие в работающей программе осуществлять выбор файлов.
Поиск файлов в Delphi производится в три этапа. На первом этапе функция FindFirst находит первый файл, удовлетворяющий критериям отбора. На втором этапе функция FindNext в цикле поочерёдно находит остальные файлы. На третьем этапе функция FindClose освобождает память, выделенную для осуществления поиска.
Задачка. Теперь, пользуясь всем вышеизложенным материалом, можно ответить, например, на вопрос: «как средствами Delphi определить размер файла». Есть несколько альтернативных способов, как подсчитать размер файла с помощью Delphi.
Список подпрограмм используемых при работе с файлами в Delphi. Содержит функции и процедуры создания, поиска, преобразования и удаления папок и файлов.

Редкая программа обходится одной формой. Delphi позволяет с лёгкостью создавать дополнительные формы, предоставляющие возможность, например, вести диалог с пользователем, принимать и выводить любую необходимую информацию.

Всё богатство стандартных процедур и функций Delphi не исчерпывает встающих перед программистом задач. Для выполнения повторяющихся операций с меняющимися данными Delphi программист может создавать собственные подпрограммы — процедуры и функции Delphi.
Пример. Вычисление факториала. Выполняя повторяющиеся участки кода, подпрограммы эффективно заменяют циклы. Классический пример — вычисление факториала числа, демонстрирующий также использование рекурсии. Этот проект также можно скачать.

Исключительные ситуации в Delphi встречаются постоянно. Исключительная ситуация это такая ситуация, в результате которой генерируется ошибка, и выполнение программы прерывается. Например, деление на ноль — классический пример исключительной ситуации. Для контроля исключительных ситуаций ввода-вывода также могут применяться директивы компилятора <$I>.

Применение компонентов Delphi позволяет избежать рутинного ручного кодирования. Компоненты Delphi охватывают практически все аспекты применения современных информационных технологий. Конечно, для работы в Delphi прежде всего требуется изучить базовые компоненты Delphi, которые требуются при подготовке практически любого приложения.
Страница Standart
Изучение Delphi естественным образом начинается со страницы палитры компонентов Standart. На этой странице расположены стандартные для Windows интерфейсные элементы, такие как главное и всплывающее меню, кнопка, однострочный и многострочный редакторы, переключатели, метки, списки, и некоторые другие компоненты, которые применяются наиболее часто. Рассматривается пример на переопределение символов , вводимых в компонент Edit, что может использоваться в формах для ввода пароля.
Страница Additional
На страницу палитры компонентов Additional помещены дополнительные компоненты, без некоторых из которых сегодня трудно представить программу для Windows: кнопки с дополнительными свойствами, таблицы , компоненты для размещения изображений и многие другие.
Страница Win32
Страница палитры компонентов Win32 содержит компоненты, представляющие собой интерфейсные элементы для 32-разрядных операционных систем Windows 95/98/NT (В версии системы Delphi 2 эта страница называлась Win95). Использующие эти компоненты программы выглядят в стилистике последних версий операционных систем Windows.
Страница System
На странице палитры компонентов System представлены компоненты, которые имеют различное функциональное назначение (например, Timer — очень важный в любой программе компонент), в том числе компоненты, поддерживающие стандартные для Windows технологии межпрограммного обмена данными OLE и DDE.

Работа со строками Delphi позволяет извлечь из строки необходимую информацию и представить её в нужном виде. Delphi предоставляет весь спектр необходимых функций для работы со строками и преобразования строк Delphi в необходимые форматы.
Продолжение. Использование списка строк. Список строк Delphi TStringList — это структура данных, напоминающая компонент ListBox, но не визуальная, а просто хранящая в памяти и имеющая свойства и методы для работы со строками типа TString.

Создание интерфейса пользователя сводится к выбору из палитры компонентов необходимых для работы программы компонентов Delphi, служащих интерфейсом управления, а также интерфейсом отображения информации, и перенесению их на Форму с последующей компоновкой.

Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает знакомство с канвой (Canvas) компонентов. Канва это тот холст, который умеет управлять состоянием каждого своего пиксела, и это свойство позволяет программисту отобразить то, что требуется.

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

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

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

Иллюстрированный самоучитель по Delphi 7 для начинающих

Форма

Работа над новым проектом, так в Delphi называется разрабатываемое приложение, начинается с создания стартовой формы. Так на этапе разработки программы называют диалоговые окна.

Стартовая форма создается путем изменения значений свойств формы Form1 и добавления к форме необходимых компонентов (полей ввода и вывода текста, командных кнопок).

Свойства формы (табл. В1) определяют ее внешний вид: размер, положение на экране, текст заголовка, вид рамки.

Для просмотра и изменения значений свойств формы и ее компонентов используется окно Object Inspector. В верхней части окна Object Inspector указано имя объекта, значения свойств которого отображается в данный момент. В левой колонке вкладки Properties (Свойства) перечислены свойства объекта, а в правой – указаны их значения.

Таблица В1. Свойства формы (объекта mform).

Свойство Описание
Name Имя формы. В программе имя формы используется для управления формой и доступа к компонентам формы
Caption Текст заголовка
Width Ширина формы
Height Высота формы
Top Расстояние от верхней границы формы до верхней границы экрана
Left Расстояние от левой границы формы до левой границы экрана
BorderStyle Вид границы. Граница может быть обычной (bsSizeable), тонкой (bsSingle) или отсутствовать (bsNone). Если у окна обычная граница, то во время работы программы пользователь может при помощи мыши изменить размер окна. Изменить размер окна с тонкой границей нельзя. Если граница отсутствует, то на экран во время работы программы будет выведено окно без заголовка. Положение и размер такого окна-во время работы программы изменить нельзя
Borderlcons Кнопки управления окном. Значение свойства определяет, какие кнопки управления окном будут доступны пользователю во время работы программы. Значение свойства задается путем присвоения значений уточняющим свойствам biSystemMenu, biMinimaze, biMaximaze и biHelp. Свойство biSystemMenu определяет доступность кнопки Свернуть и кнопки системного меню, biMinimaze– кнопки Свернуть, biMaximaze– кнопки Развернуть, biHelp – кнопки вывода справочной информации
Icon Значок в заголовке диалогового окна, обозначающий кнопку вывода системного меню
Color Цвет фона. Цвет можно задать, указав название цвета или привязку к текущей цветовой схеме операционной системы. Во втором случае цвет определяется текущей цветовой схемой, выбранным компонентом привязки и меняется при изменении цветовой схемы операционной системы
Font Шрифт. Шрифт, используемый «по умолчанию» компонентами, находящимися на поверхности формы. Изменение свойства Font формы приводит к автоматическому изменению свойства Font компонента, располагающегося на поверхности формы. То есть компоненты наследуют свойство Font от формы (имеется возможность запретить наследование)

При создании формы в первую очередь следует изменить значение свойства caption (Заголовок). В нашем примере надо заменить текст Form1 на «скорость бега». Чтобы это сделать, нужно в окне Object Inspector щелкнуть мышью на строке Caption, в результате чего будет выделено текущее значение свойства, в строке появится курсор, и можно будет ввести текст «скорость бега» (рис. В12).

Рис. В12. Установка значения свойства путем ввода значения

Borland delphi 4 0 для начинающих создание форм activeform

Delphi 4 – единственное решение для масштабирования настольного Access до масштабов предприятия. Высокоскоростные драйверы баз данных для Microsoft Access обеспечивают возможность использовать средства RAD Delphi с наиболее популярной настольной базой данных.

В среде Delphi 4 имеется поддержка для баз данных FoxPro., самой быстрой среды разработки. Разработчики могут создавать приложения с помощью Delphi 4, используя существующие таблицы данных FoxPro и Clipper. Используя набор компонент Apollo, есть возможность полнейшей поддержки старых идеологий программирования данных. Разработчик программного обеспечения в Clippere или FoxPro теперь чувствует себя как «рыба в воде» благодаря этой компоненте. Синхронизация данных из DOS и Windows абсолютно прозрачна.

Для мультимедийных и других приложений, требующих неструктурированные данные, теперь можно работать с многочисленными двоичными объектами, каждый размером до 4GB, загруженными в единственную колонку таблицы базы данных. Поле Большого Объекта (LOB) располагается во внешней среде (файле). Вы можете оптимизировать использование новых двоичных типов, как например на время отложить перекачку LOB поля, пока пользователь не получит весь курсор, а затем уже, используя пакетные процедуры, получать необходимые большие данные. BLOB (Двоичный Большой Объект) является двоичным типом данных, который может использоваться, чтобы загрузить данные любого типа. Для управления документами или системами поиска текста, может быть использован CLOB (Символьный Большой Объект). Вы можете сделать ссылку на внешние файлы, отредактированные другими приложениями (как, например, аудио- файлы, AVI, BITMAP, и другие) без дублирования, так как BFILE данные загружаются в файлы операционной системы вне базы данных, что естественно экономит табличное пространство сервера базы данных.

Delphi 4 позволяет создавать высокоскоростные драйверы для доступа к базам данных. Native драйверы предлагают большие возможности, чем ODBC. Driver Development Kit (DDK) позволяет создавать Native драйверы для BDE Borland, которые дополняют новую Remote DataSet технологию. Native драйверы, создаваемые при помощи DDK, могут использоваться со всем семейством продуктов Borland, включая IntraBuilder, Borland C++ Builder, Delphi и Jbuilder.

Новый SQL Link драйвер (включенный только в Client/Server и Enterprise редакцию Delphi) теперь поддерживает доступ к V2 и V5 DB2 серверам.

Поддержка новых расширений Oracle8

В процессе подготовки Oracle8 корпорация Oracle преобразовала свою СУБД из реляционной в объектно – реляционную. Система типов в Oracle была расширена для обеспечения поддержки как объектов, так и наборов (Collections) объектов. Тип OBJECT предоставляет возможность определять класс от которого в дальнейшем будут наследоваться экземпляры объекта. Абстрактные Типы Данных (ADT) позволяют определять собственные типы данных или бизнес-объекты, следуя бизнес-правилам. Эти типы данных могут включать существующие скалярные типы данных (как например, целые и даты), а также обеспечивают вложенность других ADT. Вы можете реализовать бизнес-объекты, которые могут загружаться в базу данных и извлекаться оттуда, когда это необходимо. Эти бизнес-объекты могут представлять собой людей, data warehouses, пункты оборудования, адреса, заказы, счет-фактура, или что-то еще, что определено в процедурах. Важно, что вновь созданный тип данных может быть возвращен в клиентское приложение из PL/SQL процедуры, в виде Result значения, элементом или наборои элементов VARRAY массива, а также в виде множества строк, одним из атрибутов которых будет выступать ADT, как значение поля. Создать таблицу в Oracle c Объектным типом данных можно следующим образом:

CREATE OR REPLACE TYPE «IGOR».»ADRES» AS OBJECT
(
STREET VARCHAR2(40),
GOROD VARCHAR2(30),
SHTAT VARCHAR2(20),
IND VARCHAR2(11)
);

CREATE OR REPLACE TYPE «IGOR».»PERSON» AS OBJECT
(
NAME VARCHAR2(40), FAMIL VARCHAR2(31),
ADR IGOR.ADRES, —Тип объект
DATA DATE,
—Описываем методы класса
MEMBER FUNCTION VOZRAST (SELF IN IGOR.PERSON) RETURN NUMBER,
PRAGMA RESTRICT_REFERENCES (VOZRAST,WNDS,WNPS),
—Метод MAP будет принимать участие в сортировках (ORDER BY)
MAP MEMBER FUNCTION SORTIROVKA (SELF IN IGOR.PERSON) RETURN VARCHAR2, PRAGMA RESTRICT_REFERENCES (SORTIROVKA,WNDS,WNPS,RNDS,RNPS)
);

А теперь реализация методов:

CREATE TYPE BODY «IGOR».»PERSON» IS
member function vozrast return number as
begin
return (trunc(to_number(sysdate-data)/365, 0));
end;
map member function sortirovka return varchar2 as
begin
return name||’ ‘||famil ;
end;
END; /*type body*/

Создаем таблицу, одим из полей которой будет объект класса PERSON:

CREATE TABLE shtat
(kod NUMBER PRIMARY KEY,
person_data person, —Тип поля — объект
data DATE
);

Как видно из примера в качестве поля таблицы выступает объект класса PERSON, у которого кроме свойств присутствует и метод vozrast, который «оживляет» таблицу при выполнении команды SQL – SELECT.

Для извлечения данных из такой таблицы в свойтве SQL объекта класса Tquery необходимо установить примерно следующий запрос:

SELECT p.kod, p.person_data.famil, p.person_data.vozrast() from sotrudnik p;

select * from shtat;

В этом случае DBGrid в Delphi будет выглядить следующим образом:


Как видно из рисунка, теперь реализованы в DBGrid подчиненные заголовки. Команды DML Oracle 8 обновляют поля — объекты с помощью соответствующих конструкторов класса.
Таким образом все колонки с типами данных, суммарный размер которых превышает 255 байт, представляются как псевдо BLOBS тип данных. Этот тип воспринимает как Query объект, через свойство Active:=True, так и объект класса TstoredProсedure.

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

REFs ускоряют доступ к объектно-реляционным данным. Ссылки на вложенные объекты запоминаются в объектах этого типа данных. Когда указатель REF разрешается, ссылочные объекты переводятся в пространство объекта клиента для просмотра и модификации (pinned). Ссылка на объект – это глобальный уникальный идентификатор, который в Oracle назвается Object ID. Эти уникальные идентификаторы обеспечивают просмотр REF-указателей по требованию (известному как объектная навигация (object navigation) или погоня указателя (pointer chasing). Недостатком использования ссылок на объекты является отутствие контроля ссылочной целостности, так как при использовании ссылок мы не можем наложить на такие поля ограничения FOREIGN KEY. Возникают зависшие ссылки, однако Delphi c этим справляется благодаря строгому описанию типов в Oracle 8.
В Delphi 4 можно создавать ссылки на файлы, внешние по отношению к базе данных, что исключает дублирование больших файлов (как например, документы), обеспечивая более гибкий файловый доступ, и уменьшая потребность в памяти. Тип данных FLOB хранит в таблицах базы данных только ссылки на уникальные идентификаторы файлов, корые раположены в физических областях дискового пространства. Эти области создаются с помощью команды CREATE DIRRECTORY при наличии соответствующих привилегий у пользователя. С помощью компоненты Delphi 4 TstoredProcedure и пакетных процедур Oracle 8 (пакет DBMS_LOB) можно обеспечить доступ к виртульным дирректориям и их содержимому (файлам) до уровня байта, за счет чего трафик сети будет сведен до минимума.

Поддержка вложенных таблиц

CREATE OR REPLACE TYPE «IGOR».»PROEKT» AS OBJECT
(
KOD NUMBER(11, 0),
NAME VARCHAR2(100),
CONTEXT VARCHAR2(1000),
CTOIMOST NUMBER(15, 2)
);
Создаем табличный тип (Object Table )
CREATE TYPE «IGOR».»PROEKTS» AS TABLE OF IGOR.PROEKT;

Создаем таблицу, одним из полей которой будет вложенная таблица

CREATE TABLE «IGOR».otdel
(
kod NUMBER PRIMARY KEY,
name VARCHAR2(30),
proekt IGOR.PROEKTS NULL
) NESTED TABLE «PROEKT» STORE AS proekts_table_otdel;

После создания такой схемы приступим к разработке клиентского приложения. На форму выкладываем компоненты Ttable и ТnestedTable. Первую компоненту связываем с таблицей OTDEL, а вторую с соответствующим полем типа DataSet. Отношение мастер-деталь готово. Выкладываем DBGrid и DataSource, производим настройку свойств и получилось приложение:

При двойном щелчке мышкой по полю Proekts активизируется дополнительное окно для просмотра и редактирования вложенной таблицы. Измененные данные кэшируются на клиентской машине и с помощью ApplyUpdates и Commit фиксируются на сервере.
Доступ к данным NestedTable можно осуществить и через обычные DML команды, используя объектное расширение языка SQL Oracle 8. Собственно эти команды и необходимо прописать в компоненте UpdateSQL. Серьезным недостатком вложенной таблицы является отсутствие возможности накладывать на нее ограничения первичных ключей.

Имеются функции для определения количества вложенных строк и манипулирования ими. Для иллюстрации этой возможности воспольуемся таблицами customer.db, orders.db и items.db, поставляемыми вместе с Delphi. Поместим на форму три компонента TTable, три компонента TDataSourse, один компонент TClientDataSet и один компонент TProvider. Установим следующие свойства этих компонентов:

Компонент Свойство Значение
DBGrid1 DataSource DataSource3
DBNavigator1 DataSource DataSource3
Table1 DatabaseName ‘DBDEMOS’
TableName ‘customer.db’
Active True
DataSource1 DataSet Table1
Table2 DatabaseName ‘DBDEMOS’
TableName ‘orders.db’
IndexFieldNames ‘CustNo’
MasterFields ‘CustNo’
MasterSource DataSource1
Active True
DataSource2 DataSet Table2
Table3 DatabaseName ‘DBDEMOS’
TableName ‘items.db’
IndexFieldNames ‘OrderNo’
MasterFields ‘OrderNo’
MasterSource DataSource2
Active True
Provider1 DataSet Table1
ClientDataSet1 ProviderName ‘Provider1’
Active True
DataSource3 DataSet ClientDataSet1

Сами таблицы формата Paradox, естественно, не поддерживают поля, содержащие вложенные таблицы, но такие поля поддерживает компонент TClientDataSet со страницы MIDAS палитры компонентов. Связав его с компонентом Table1 посредством компонента Provider1, мы получим набор данных, содержащий поле Table2 типа TDataSetField, а внутри вложенной таблицы — поле Table3 того же типа:

Такое представление данных даже в случае использования настольных СУБД весьма удобно просто потому, что оно решает общеизвестную проблему нехватки места на форме при наличии нескольких связанных таблиц. Единственное, о чем при этом следует позаботиться, это вызов метода ApplyUpdates компонента TClientDataSet (например, в обработчике события, связанного с выбором какого-либо пункта меню или с нажатием на кнопку):


    ClientDataSet1.ApplyUpdates(-1);

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

Новый генератор запросов — SQL Builder


Новые возможности генерации отчетов

Decision Grid позволяет динамически отображать многомерные данные в наилучшем виде с точки зрения пользователя для обеспечения принятия им управленческого решения.

Генератор отчетов QuickReports позволяет визуально разрабатывать формы отчетных документов. Отчеты строятся с разделами, которые могут содержать названия, страничные заголовки и нижние колонтитулы, многочисленные наборы детальных строк, итоги, заголовки групп и нижние колонтитулы. Отчеты из любого DataSource, включая TTable и TQuery, или даже из массивов или списков могут быть просмотрены с помощью режима Preview. В процессе генерации отчета могут выполняться вычисления итогов, подсчета полей автоматически. Счетчики могут обнуляться на уровне групп. В QuickReport добавлены компоненты TQRTextFilter, TQRHTMLFilter и TQRCSVFilter, позволяющие сохранять отчеты не только в оригинальном формате *.qrp, но и в виде текстового файла, файла формата HTML или CSV (Comma Separated Value).
Рис. Создание отчета с возможностью сохранения данных в формате HTML Рис. Отчет сохраненный в формате HTML при просмотре через броузер

Публикация данных в Web

Открытая архитектура Delphi и поддержка DLL обеспечивает высокую призводительность при создании прикладных разработок для internet. Приложения для WebServer создаются в виде DLL, которая связывает их непосредственно по ISAPI и NSAPI с серверами Microsoft и Netscape соответственно.

Для того, чтобы упростить разработку Internet теперь имеется WebBridge, который позволяет разработчикам программировать на общем API как для NSAPI так и ISAPI. Эта гибкость защищает код от проблем, связанных с конкуренцией стандартов Internet. WebBridge позволяет сконцентрировать внимание разработчика на осуществлении деловых решениях независимо от внутреннего web-сервера.

WebDispatcher – компонент, ответственный за обработку событий в Web Server Application. WebDispatcher позволяет работать с существующим запросами (query) и таблицами (table) при разработке CGI и HTML приложений. Это позволяет воспроизводить содержание на web с теми же навыками в разработке клиент/серверных приложений.

Web-модули централизуют отправку запросов web-клиента, ответы на запросы, и создают HTML страницы. Эти web-специфические действия объединены с возможностью доступа к данным и бизнес-правилами. WebModule визуально управляет многочисленными запросами, приходящими результатами работы web под-site’ов с клиент/серверной функциональностью в web.

Имеется возможность превратить любую форму Delphi 4 в ActiveForm. ActiveForms — ActiveX Controls, которые используют формы Delphi как контейнеры для других Delphi компонентов. ActiveForms публикуют ActiveX свойства и type librarу для высокоскоростного взаимодействия с другими средствами разработки, например Internet Explorer, Visual Basic, Optima или PowerBuilder, или для использования этих форм в Internet. Delphi ActiveForms и Remote Data Broker помогают создавать ультра-тонких и zero-configuration клиентов в web.

Delphi 4 использует ActiveX архитектуру, чтобы легко разворачивать тонкого-клиента, (zero-configuration приложение) в web, этим самым уменьшая стоимость конфигурации программного обеспечения и дистрибуции. Web Deployment использует стандартные прикладные механизмы Microsoft поставки (CAB File delivery) и инфраструктуру web для распространения приложений большому числу пользователей в Internet, Intranet в масштабах предприятия.

В Delphi 4 имеется DB Web Application Wizard, позволяющий автоматизировать создание приложения для публикации данных в Internet.
Рис. Выбор компоненты DB Web Application Wizard Рис. Установка типа приложения Рис. Выбор источника данных Рис. Выбор публикуемых полей Рис. Определение заголовка и ввод дополнительного текста Рис. Результат генерации Рис. Установка свойства Action компонента TWebModule После того, как все шаги пройдены, можно скомпилировать приложение и затем запускать его с помощью любого web-броузера. Рис. Результат выполнения созданного приложения Delphi 4 обеспечивает разработку эффективных прикладных модулей, которые могут быстро и легко распространяться через Intranet большому числу пользователей. Delphi 4 позволяет создавать приложения с Packages, уменьшая размер самого приложения. Packages при этом как правило остаются неизменными. Packages являются уникальной технологией компиляции, которая дает разработчикам возможность многократно использовать скомпилированные части без потери эффективности при их исполнении. Приложения с Packages используют настраиваемую прикладную среду, которая поставляется и конфигурируется один раз, уменьшая как сложность этой операции, так и потребность в дополнительных ресурсах при дистрибуции.

Создание многозвенных систем

В палитре компонентов теперь имеется отдельная страница MIDAS, содержащая компоненты, используемые в серверах приложений и «тонких» клиентах, в частности, новые компоненты TCorbaConnection, TDCOMConnection, TSocketConnection, TOLEnterpriseConnection (последние три обладают свойством LoginPrompt, поддерживающим аутентификацию пользователя). В репозитарии объектов имеется соответствующая страница Multitier, содержащая генераторы соответствующих типов приложений.

MIDAS позволяет создавать распределенные приложения с тонким клиентом, которое легче поддерживать, модифицировать и корректировать через расширенную поддержку связи master-detail и вложенных таблиц. Полная информация реляционной базы данных, включая табличные структуры может распределяться по тонким клиентам без написания кода. Обновление всех данных осуществляется автоматически.

Серверы MIDAS теперь поддерживают открытую стандартную архитектуру CORBA, обеспечивая взаимосвязь работающих серверов приложений на различных платформах. Имеется больший выбор для серверов приложений с CORBA, связываемых с тонким клиентом.

MIDAS существенно ускоряет получение результатов клиентом, позволяя пользователю сразу просматривать простые данные, задерживая вывод blob-данных до завершения чтения других данных, или делая это только по требованию пользователя.

Ответом на требования разработки мобильных и не связанных постоянно с данными приложений баз данных является поддержка операций с отключенной связью с базой данных MIDAS. Все изменения в данных, включая добавления, удаления и модификации автоматически прослеживаются в dataset. Одношаговый процесс ресинхронизации автоматически оперирует с master-detail данными.

MIDAS распространяет приложения с тонким клиентом с минимальным сетевым трафиком. Эффективность возрастает при использовании низкоскоростных модемов или сетях, подобных Internet. MIDAS использует для связи только открытые и существующие стандарты, подобные TCP/IP, CORBA и DCOM.

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

После выбора соответствующей пиктограммы (например, Remote Data Module) из репозитария объектов и ввода характеристик соответствующего COM-объекта получим удаленный модуль данных, в который можно поместить компоненты доступа к данным.
Рис. Главная форма и модуль данных сервера приложения

Далее следует экспортировать компоненты доступа к данным из модуля данных:
Рис. Библиотека типов удаленного модуля

После этого можно скомпилировать сервер приложений и приступить к созданию «тонкого» клиента. С этой целью можно добавить в имеющуюся группу проектов еще один проект (если разработка клиента ведется на том же компьютере, где создавался сервер приложений), либо просто создать новый проект или активную форму (в случае «тонкого» клиента в виде ActiveX) и поместить туда какой-либо компонент доступа к удаленному серверу (например, TSocketConnection). Для осуществления удаленного доступа с помощью TSocketConnection следует запустить на том компьютере, где содержится сервер приложений, Borland Socket Server. Затем следует установить свойства Host и ServerName равными имени компьютера и удаленного модуля данных (в формате . ) соответственно. Далее можно поместить на форму компонент TClientDataSet, связать его с компонентом TSocketConnection и выбрать значение свойства ProviderName из выпадающего списка. Теперь можно помещать на форму компоненты для отображения данных (например, создав объекты TFields и переместив их на форму методом drag-and-drop из списка полей). Таким образом, «тонкий» клиент готов.

«Ложка дегтя» – MIDAS не поддерживает на прямую изменения таблиц с новыми BLOB и CLOB данными. Для изменения таких таблиц необходимо воспользоваться «ручным способом», а именно событием Tprovider.BeforeUpdateRecord;

Компоненты TsocketConnection, TMIDASConnection, ScktSrvr требуют операционную систему Windows 98 и NT, для Windows 95 необходимо установить WinSock 2 с Microsoft WEB Site.

Помимо соединения клиента с сервером с помощью протокола TCP/IP, возможно использование Microsoft DCOM (Distributed Component Object Model) и соответственно компонента TDCOMConnection, а также технологии OLenterprise (с помощью компонента TOLEnterpriseConnection).

Отметим, что CORBA-серверы и CORBA-клиенты с помощью Delphi 4 создаются примерно так же.

Поддержка Microsoft Transaction Server

Открытый стандарт XA допускает транзакции серверов (как например, Oracle) для связи с MTS менеджером ресурсов. Теперь приложение клиента может получить однократное уведомление об успешном или неудачным выполнением пакета транзакций, которые передаются серверами в разнородной среде.

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

Borland delphi 4 0 для начинающих создание форм activeform

Глава 1. Что нового в Delphi 4.0

Глава 2. Палитра компонентов

Глава 3. Типы данных

Глава 4. Создание приложений

Глава 5. Создание элементов управления ActiveX

Глава 6. Тестирование и отладка

Глава 1. Что нового в Delphi 4

Delphi 4 представляет следующие новые свойства и усовершенствования:

Новые расширения языка.

Delphi 4 в язык Object Pascal включены динамические массивы, методы обработки переполнения, установка значения параметров по умолчанию, и многое другое.

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

Новый проводник содержит выполняемые классы, навигацию по модулям, и браузер кода. Проводник кода делает создание классов проще, автоматизируя многие из шагов. Введение прототипа метода в разделе интерфейса и свойства выполняемого класса сгенерирует скелетный код в разделе реализации. Также проводник позволяет быстро перемещаться через файлы модуля, а так же между интерфейсом и реализацией. Использование символа Tooltip, позволяет просматривать информацию об объявлении любого идентификатора, затем используя браузер кода, можно перейти к его объявлению.

Закрепляемые окна инструментов.

IDE (Интегрированная Среда Разработки) содержит более перенастраиваемую конфигурацию окон инструментов, которые можно закреплять с редактором кода. Просто перетащите и отпустите окно инструмента к тому месту, к которому хотите. Проводник кода и менеджер проекта можно как закреплять, так и не закреплять.

Интегрированный отладчик имеет много новых свойств, включая удаленную и многопроцессорную отладку, просмотр кода центрального процессора, инспекторов, усовершенствованные точки прерывания, отладчик специфических подменю и закрепленных окон.

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

Delphi 4 обеспечивает расширенную поддержку ActiveX.

Иерархия объектов Delphi была расширена, чтобы включить новый компонент для NT Service приложений. Кроме того, новый компонент выполняемого списка (на Стандартной странице палитры), позволяет Вам централизовать управление меню и команд от кнопок. Управление VCL расширено, чтобы поддерживать drag-and-drop перетаскивания, обеспечивать дополнительный контроль над размещением окна, и многое другое.

Поддержка RTL для 2000-го года.

Глобальная переменная TwoDigitYearCenturWwindow используется функциями StrtToDate и StrToTateTime, чтобы управлять интерпретацией лет с двумя цифрами при преобразовании дат.


Версии Клиент/Сервер и предприятие включают поддержку для CORBA клиент и сервер приложений. Мастера помогут Вам легко создать сервер CORBA и Динамический Интерфейс Вызова (DLL), позволяя Вам записывать клиентов для существующих серверов CORBA. CORBA имеет возможность поддержки в многоуровневых баз данных. Вы можете даже создать сервер, который обрабатывает COM клиентов и CORBA клиентов одновременно.

Глава 2. Палитра компонентов

Если вам часто приходится заниматься ремонтом какой-либо вышедшей из строя техники, то вы знаете, как приятно всегда иметь под рукой нужный винт, болт или гайку. Легко представить радость создания программ с помощью Delphi: вам не придется бегать в скобяную лавку за каждой мелочью! Палитра компонентов (component palette) будет для вас ящиком с деталями, а мышь — единственным необходимым инструментом.

Основная палитра компонентов Delphi имеет двенадцать страниц.

Standard. Большинство компонентов на этой странице являются аналогами экранных элементов самой Windows. Меню, кнопки, полосы прокрутки — здесь есть все. Но компоненты Delphi обладают также некоторыми удобными дополнительными встроенными возможностям.

Additional. Эта страница содержит более развитые компоненты.

Например, компонент Outline удобен для отображения информации с иерархической структурой, а удивительный MediaPlayer позволит вашим программам воспроизводить звук, музыку и видео. Данная страница также содержит компоненты, главное назначение которых — отображение графической информации. Компонент Image загружает и отображает растровые изображения, а компонент Shape, украсит ваши формы окружностями, квадратами и т. д.

System. Поскольку не каждая потребность, связанная с обработкой файлов, может быть удовлетворена с помощью стандартных диалоговых окон, страница System предоставляет возможность комбинировать отдельные элементы, такие как списки дисков, каталогов и файлов. Страница System также содержит компоненты, обрабатывающие обмен высокого уровня между программами посредством OLE (Object Linking and Embedding). А компонент Timer может генерировать события через определенные, заранее установленные промежутки времени.

Win32. Эта страница содержит компоненты, позволяющие созданным с помощью Delphi программам использовать такие нововведения в пользовательском интерфейсе 32-разрядной Windows, как просмотр древовидных структур, просмотр списков, панель состояния, присутствующая в интерфейсе программы Windows Explorer (Проводник), расширенный текстовый редактор и др.

Dialogs. Windows 3.1 ввела в употребление стандартные диалоговые окна для операций над файлами, выбора шрифтов, цветов и т. д. Однако для использования их в обычной программе Windows может потребоваться написать немало вспомогательного кода.

Страница, Dialogs предоставляет программам Delphi простой доступ к этим стандартным диалоговым окнам.

Data Access и Data Controls. Delphi использует механизм баз данных компании Borland (Borland Database Engine, BDE) для организации доступа к файлам баз данных различных форматов.

Компоненты этих двух страниц облегчают программам Delphi использование сервиса баз данных, предоставляемого BDE, например многопользовательского считывания, записи, индексации и выдачи запросов для таблиц dBASE и Paradox.

С использованием этих компонентов создание программы просмотра и редактирования базы данных почти не требует программирования.

Win 3.1. На этой странице, как в сибирской ссылке, находятся компоненты Delphi 1.0, возможности которых перекрываются аналогичными компонентами Windows 95.

Internet. Эта страница предоставляет компоненты для разработки приложений, позволяющих создавать HTML-файлы непосредственно из файлов баз данных и других типов, взаимодействующих с другими приложениями для Internet. Delphi 4 дает вам возможность создавать приложения для Web-сервера в виде DLL-файлов: (Dynamic Link Library — Динамически компонуемая библиотека), способных содержать невизуальные компоненты. С помощью компонентов страницы Internet довольно просто создавать обработчики событий для обращения к определенному URL (Uniform Resource Locater — Унифицированный локатор ресурса), представлению документов в HTML-формате и пересылки их клиент-программе.

Samples. Эта отличающаяся полнотой страница содержит компоненты, которые не встроены в Delphi, но демонстрируют мощь системы компонентов. Для этих компонентов нет встроенной интерактивной справки. Все же они не менее полезны, чем компоненты с других страниц.

ActiveX. Эта страница содержит компоненты ActiveX, разработанные независимыми производителями программного обеспечения: сетка, диаграмма, средство проверки правописания.

Создание формы вручную на Delphi

Хочу попробовать создать форму полностью вручную.

Пишу вручную модуль:

В обработчике нажатия кнопки пишу:

При нажатии на кнопку выдает исключение:

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

3 ответа 3

Касаемо ошибки: «Resource TForm2 not found». Можно подключить пустой файл dfm к модулю формы и тогда форма будет нормально создаваться.

Dfm подключается через дерективу

PS: такой трюк еще полезен при наследовании форм без dfm

Дополнение

Еще можно использовать конструктор CreateNew

Все получилось! Нужно вместо стандартного конструктора Create использовать альтернативный конструктор CreateNew.

При программном создании формы, нужно в конструктор передавать nil вместо self . А при создании динамических компонентов формы следует уже указывать родителем саму форму. Все должно быть логично: форма не может быть родителем для самой себя, но может и должна быть родителем для размещаемых на ней визуальных компонентов.

По сути, .dfm – это лишь подобие файла ресурсов, который хранит свойства формы. Во время компиляции/сборки эти свойства читаются и устанавливаются (читай: присваиваются).

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

События и свойства форм в Дельфи

Продолжаем рассматривать Delphi, все полное описание свойств Вы можете узнать, если нажмете F1. Итак, модуль Forms, класс TCustomForm является базовым для класса форм Tform и некоторых других форм диалоговых окон. По сути получается, что наследники класса могут содержать в себе такие компоненты, как кнопки CheckBox, списки ComboBox (из палитры компонентов) и другие объекты.

Получается, что основные свойства класса TCustomForm можно представить в следующем виде:

Описание

Свойство
Active Boolean, возвращает true,если форма активна. Свойство только для чтения.
ActiveControl Показывает или задает компонент, который находится в фокусе на данной форме.
AlphaBlend Boolean, при значении true использует прозрачность формы.
AlphaBlendValue Измеряет степень прозрачности формы от 0 до 255.
AutoScroll Boolean, значение true по умолчанию, задает будут ли появляться полосы прокрутки.
BorderIcons Определяет кнопки в заголовке окна формы.
BorderStyle Определяет стиль бордюра формы и возможность пользователя изменять размер формы.
Canvas Канва формы, позволяющая рисовать на ней изображения. Используется для OnPaint формы.
ClientHeight Высота клиентской области формы в пикселях.
ClientRect Определяет клиентскую область формы.
ClientWidth Горизонтальный размер клиентской области формы в пикселях.
FormStyle Стиль формы.
HelpFile Файл справки, связанный с данной формой.
HorzScrollBar Горизонтальная полоса прокрутки, появляется автоматически при значении true.
Menu Определяет объект главного меню формы.
Position Определяет размер и положение окна при запуске.
PrintScale Определяет опции масштабирования изображения при печати
VertScrollBar Вертикальная полоса прокрутки, появляется автоматически при значении true.
Visible Определяет видимость формы, по умолчанию равно false.
WindowState Определяет состояние окна (нормальное, свернутое, развернутое).

Некоторые события формы:

Описание

Событие
OnActivate Cобытие наступает, когда форма становится активной, т.е. получает фокус, например при щелчке на ней.
OnClose Событие наступает при закрытии формы после события OnCloseQuery.
OnCloseQuery Первое событие при закрытии формы. В его обработчике можно прервать закрытие.
OnCreate Первое событие при создании формы. В его обработчике можно настроить форму и ее компоненты.
OnDiactivate Событие наступает когда форма перестает быть активной.
OnDestroy Последнее событие при закрывании формы и удалении ее из памяти.
OnHelp Событие наступает при запросе пользователем помощи.
OnHide Событие наступает перед тем, как форма становится невидимой.
OnPaint Событие наступает перед прорисовкой формы.
OnShortCut Событие наступает при нажатии клавиши пользователем
OnShow Наступает перед тем, как форма становится видимой.

. ComboBox полное описание дельфи ее delphi 7 события формы delphi 7 события edit delphi события формы

BestProg

Создание новой формы и подключение ее к главной форме программы

Содержание

Условие задачи

Нужно к главной форме Form1 добавить новую форму Form2 в приложении.

В главной форме Form1 :

  • создать кнопку «Show Form — 2» для вызова новой формы;
  • вывести сообщение в Form1 о результате возврата из Form2 .

В новой форме Form2 :

  • создать две кнопки с названиями «OK» и «Cancel» ;
  • запрограммировать реакцию формы на нажатие мышкой (клавиатурой) на соответствующей кнопке.
    Схема взаимодействия между формами изображена на рисунке 1.

Рис. 1. Схема взаимодействия между формами

Выполнение

1. Запустить Embarcadero Delphi 2010. Создать проект по шаблону VCL Forms Application

Подробный пример создания нового проекта по шаблону VCL Forms Application описывается здесь .

Сохранить проект и главную форму с именем «MainForm» в некоторую папку. Автоматически главной форме присваивается имя Form1 (свойство Name в Object Inspector ).

2. Проектирование главной формы Form1

Вынести на главную форму компоненты типа TLabel и TButton . Соответственно имена компонент будут Label1 и Button1 .


В свойстве «Caption» компонента Label1 вписываем текст «Result =» . В свойстве «Caption» компонента Button1 вписываем текст «Show Form 2» .

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

Рис. 2. Главная форма Form1

3. Добавление новой формы в проект

Новая форма в проект добавляется путем вызова последовательности комманд (рис. 3):

Рис. 3. Добавление новой формы в проект

В результате, на экране появится новая пустая форма (рис. 4). Получить доступ к свойствам и методам (процедурам и функциям) этой формы можно с помощью имени Form2 по умолчанию.

Рис. 4. Новосозданная форма с именем Form2

В Object Inspector имя формы отображается в свойстве Name . По желанию можно изменить название формы.

Сохранить новую форму в файле можно с помощью команды

Каждая новая форма сохраняется в отдельном файле (модуле). По умолчанию Delphi предлагает имя Unit2.pas . Оставим все как есть.

Автоматически, кроме модуля Unit2.pas , создается файл описания формы Unit2.dfm .

Таким образом, имеем две формы с такими же именами в программе (свойство «Name» ):

  • Form1 — основная форма (размещается в модуле MainForm.pas );
  • Form2 — второстепенная форма (размещается в модуле Unit2.pas ).
4. Настройка вида новой формы

Для настройки корректного вида новой формы ( Form2 ) выполняем следующие действия.

  1. Выносим на форму две кнопки (компонент типа TButton ) и одну метку ( TLabel ). Получаем три переменные-компоненты с такими именами: Button1 , Button2 , Label1 .
  2. Свойство Caption компонента Button1 устанавливаем в значение «OK» .
  3. Свойство Caption компонента Button2 устанавливаем в значение «Cancel» .
  4. Свойство Caption компонента Label1 устанавливаем в значение «Form — 2» .

По желанию можно настроить и другие свойства формы Form2 .

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

Рис. 5. Вид дочерней формы после корректировки

5. Подключение формы 2 к модулю формы 1

Для того, чтобы получить результат возврата из формы 2 ( Form2 ) или иметь доступ к методам или свойствам формы 2 нужно подключить ее к главной форме.
Это осуществляется с помощью директивы uses в начале текста модуля главной формы в разделе implementation .

6. Вызов дочерней формы из главной формы

Для вызова дочерней формы (Form2) программируем событие клика мышкой на кнопке « Show Form 2″.
Листинг программного кода этого события следующий.

Непосредственный вызов дочерней формы осуществляется с помощью функции ShowModal , возвращающей одно из двух значений (см. п. 7):

  • mrOk – означает, что в дочерней форме Form2 нажата кнопка « OK «;
  • mrNo – означает, что в дочерней форме Form2 выбрано « Cancel «.
7. Программирование событий в форме 2

Главной задачей есть определение того, какую кнопку нажал пользователь в дочерней форме Form2 . От этого зависит выполнение программы. Например, если выбрана кнопка «OK» , то это может означать выполнение каких-либо действий (чтение из файла, вывод на печать и т.д.).

В нашем случае программируем два события в модуле формы 2 ( Unit2.pas ):

  • клик мышью на кнопке «OK» ( Button1 );
  • клик мышью на кнопке «Cancel» ( Button2 ).

Листинг программного кода обработки этих событий имеет вид.

Внешняя глобальная переменная ModalResult формы Form2 определяет поведение формы. Как только ModalResult становится равным ненулевому значению ( mrOk или mrNo ), то форма закрывается с соответствующим кодом возврата.

В результате вызова из главной формы функции

дочерняя форма 2 будет отображена на экране до тех пор, пока пользователь не закроет ее стандартными средствами Windows.

Если пользователь выбрал кнопку «OK» , то ShowModal (см. п.6) возвратит значение mrOk . В другом случае ShowModal возвратит значение mrNo .

Теперь можно запустить программу на выполнение и протестировать ее.

Вывод

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

  1. Создание дочерней формы ( File -> New Form ).
  2. Подключение дочерней формы к главной форме ( uses Unit2 ).
  3. Вызов (отображение) дочерней формы из главной формы ( ShowModal ) и обработка результата возврата.
  4. Обработка событий подтверждения (не подтверждения) выполненной работы в дочерней форме с помощью глобальной переменной ModalResult .

DevProg: Блог для программистов

Секреты программирования. Примеры разработки. Обзоры программёрского софта, блогов и форумов и просто полезные советы!

RSS Новости

Рубрики

Интересно почитать

Полезные записи

Комментаторы

Poliakova#Galina[Rte… к записи Ставим МТС коннект модем на Li…
Tutoring services к записи Урок Delphi – Учимся подключат…
test prep к записи Ассемблер для начинающих. Урок…
search engine optimi… к записи Узелок впрок! Цветовые констан…
ТимурDot к записи Строго и по мужски! Форум прог…
AngieBrusy к записи Строго и по мужски! Форум прог…
oleg к записи Урок PHP — Как отправить…
PhilipHet к записи Урок PHP — Как отправить…
Warez к записи Ассемблер для начинающих. Урок…
KarGTU к записи Ассемблер для начинающих. Урок…

Архивы

Мы читаем

Статистика блога

Borland C++ Builder. Советы работы с формами.

Posted by devprog на Январь 29, 2009

Ещё один очень интересный FAQ! Все примеры можно легко перевести на Delphi. Но если вы испытываете трудности – милости просим, пишите – поможем.

// Чтобы запретить кнопку закрытия формы, напишите следующий
// код (Form1- ваша форма, Button1 — кнопка на ней):
void __fastcall TForm1::Button1Click(TObject *Sender)
<
HMENU MenuHandle = GetSystemMenu(Handle, false);
if(MenuHandle)
DeleteMenu(MenuHandle, SC_CLOSE, MF_BYCOMMAND);
>

// Чтобы запретить кнопку максимизации формы, напишите
// следующий код (Form1- ваша форма, Button1 — кнопка на ней):
void __fastcall TForm1::Button1Click(TObject *Sender)
<
HMENU MenuHandle = GetSystemMenu(Handle, false);
if(MenuHandle)
DeleteMenu(MenuHandle, SC_MAXIMIZE, MF_BYCOMMAND);
>
// ПРИМЕЧАНИЕ: максимизация формы двойным щелчком мыши
// по заголовку также будет невозможна

// Чтобы запретить кнопку минимизации формы, напишите
// следующий код (Form1- ваша форма, Button1 — кнопка на ней):
void __fastcall TForm1::Button1Click(TObject *Sender)
<
HMENU MenuHandle = GetSystemMenu(Handle, false);
if(MenuHandle)
DeleteMenu(MenuHandle, SC_MINIMIZE, MF_BYCOMMAND);
>

// Чтобы форма не закрывалась при нажатии комбинации клавиш
// Alt+F4, разместите на форме компонент TActionList(ActionList1),
// создайте новый TAction(Action1), и в свойстве ShortCut у Action1
// пропишите комбинацию клавиш Alt+F4, а обработчик события
// OnExecute должен выглядеть следующим образом
// (Form1- ваша форма):
void __fastcall TForm1::Action1Execute(TObject *Sender)
<
// чтобы при сохранении C++Builder не уничтожил обработчик
>


//В обpаботчике FormKeyDown пишешь:
if (Shift.Contains(ssAlt)&&Key==VK_F4) Tag=1;

//В обpаботчике FormCloseQuery:
if(Tag)
<
CanClose=false;
Tag=0;
>

// Напишите следующий обработчик события OnMouseDown формы
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
<
long SC_DRAGMOVE = 0xF012;
if(Button == mbLeft)
<
ReleaseCapture();
SendMessage(Handle, WM_SYSCOMMAND, SC_DRAGMOVE, 0);
>
>

// Напишите следующий код:
Form1->WindowState = wsMaximized; // развернуть
Form1->WindowState = wsMinimized; // минимизировать
Form1->WindowState = wsNormal; // первоначальный размер

// Для того чтобы сделать кусок формы прозрачным,
// напишите следующий код:

//Прямоугольный кусок
HRGN R1=CreateRectRgn(0, 0, Width, Height);
HRGN R2=CreateRectRgn(4, 24, Width-4, Height-4);
CombineRgn(R1, R1,R2, RGN_DIFF);
SetWindowRgn(Handle, R1, TRUE);

//Кусок в виде элипса
HRGN hRgn1 = CreateRectRgn(0, 0, Width, Height);
HRGN hRgn2 = CreateEllipticRgn(0, 0, Width, Height);
HRGN hRgn3 = CreateRectRgn(0, 0, Width, Height);
CombineRgn(hRgn3, hRgn1, hRgn2, RGN_DIFF);
SetWindowRgn(Handle, hRgn3, TRUE);
//можно заменить hRgn3 на hRgn2

//Кусок в виде пятиугольника
HRGN Reg1, Reg2;
HRGN Region;
POINT p[5];
p[0] = Point(100, 0);
p[1] = Point(Width-100, 0);
p[2] = Point(Width, Height/2);
p[3] = Point(Width/2, Height);
p[4] = Point(0, Height/2);
Region = CreatePolygonRgn(p, 5, ALTERNATE);
SetWindowRgn(Handle, Region, true);

// Для того чтобы создать новую форму напишите:
// следующих код:
TForm * Formik= new TForm(this);
TButton* button=new TButton(Application);
button->Parent=Formik;
button->Caption=»New Button»;
button->Left=10;
button->Top=15;
button->Show();
Formik->Caption=123;
Formik->ShowModal();
delete Formik;

// Для того чтобы сделать прозрачную форму напишите:
int Transparency = 75; //насколько прозрачным будет окно (0-100%)
long ExtStyle = GetWindowLong(Handle, GWL_EXSTYLE);
SetWindowLong(Handle, GWL_EXSTYLE, ExtStyle | WS_EX_LAYERED);
SetLayeredWindowAttributes(Handle, 0 , (255 * Transparency) / 100,
LWA_ALPHA);

// Для того чтобы создать форму напишите:
void __fastcall TForm1::Photo()
<
int X0,Y0;
bool Flag;
TRect ScreenRect;
TCanvas* ScreenCanvas=new TCanvas;
try
<
Top=0;
Left=Screen->Width;
W >Width;
Height=Screen->Height;
ScreenRect=Rect(0,0,Width,Height);
ScreenCanvas->Handle=GetDC(0);
Image1->Canvas->CopyRect(ScreenRect, ScreenCanvas,ScreenRect);
ReleaseDC(Handle,ScreenCanvas->Handle);
Left=Top;
> __finally
<
delete ScreenCanvas;
>
>

// Для того чтобы создать новую форму напишите:
void __fastcall TForm1::CreateParams(TCreateParams& Params)
<
TForm::CreateParams(Params);
Params.WndParent = 0;
>

Создайте новый проект. Дальше: Project->Remove from project

Для того чтобы определить класс определённого приложения напишите следующий код:

HWND hWnd=FindWindow(NULL,»Калькулятор»); //для русскоязычной Windows
if (hWnd)
<
char buff[100];
GetClassName(hWnd,buff,100);
ShowMessage(buff);
>
Автор: Srpj Сайт: http://srpj.narod.ru/

// Напишите следующий код:
PaintDesktop(Form1->Canvas->Handle);

Borland delphi 4 0 для начинающих создание форм activeform

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

Delphi — прекрасная система визуального объектно-ориентированного проектирования, одинаково радующая и новичков в программировании, и профессионалов. Начинающим Delphi позволяет сразу, с небольшими затратами времени и сил создавать прикладные программы, которые внешне неотличимы от программ, созданных профессионалами. А для опытного программиста Delphi открывает неограниченные возможности для создания сколь угодно сложных программ любого типа, в том числе, распределённых приложений, работающих с любыми базами данных.

Более подробно о том, что такое Delphi и почему её стоит изучать, можно прочесть на специальной страничке и этом переводе статьи «Why Delphi? (Delphi For Beginners)» :

Эта статья о Delphi имеет цель объяснить, что такое Delphi и что он может сделать для вас.

Прежде всего, я предполагаю, что вы умеете работать с компьютером, и знаете что такое программирование в целом. Ведь если это не так, вас здесь бы не было в любом случае! Скорее всего, у вас уже есть базовые знания в области программирования. По-моему, я прав! Теперь сядьте поудобнее, расслабьтесь и читайте дальше.

Borland Delphi представляет собой средство разработки приложений для Microsoft Windows. Delphi является мощным и простым в использовании инструментом для создания автономных программ, обладающих графическим интерфейсом (GUI) , или 32-битных консольных приложений (программ, которые не имеют графического интерфейса).

В сочетании с Borland Kylix, программисты Delphi могут создавать из одного исходного текста приложения и для Windows и для Linux, и это открывает новые возможности и увеличивает потенциальную отдачу от усилий, вложенных в изучение Delphi. В Delphi используется кросс-платформенная библиотека компонентов CLX и визуальные дизайнеры для создания высокопроизводительных приложений для Windows, которые повторной компиляцей можно легко превратить в приложения для Linux.

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

При создании графического интерфейса приложений Delphi, у вас все возможности языка программирования Object Pascal, «завернутого» в среду RAD . Такие компоненты окна графического пользовательского интерфейса, как формы, кнопки и списки объектов, включены в состав Delphi. Это означает, что вам не нужно писать никакого кода при добавлении их в ваше приложение. Вы просто «кладёте» их на вашу Форму, как в графическом редакторе. Вы можете также добавить на Форму элементы управления ActiveX, для создания в считанные минуты специализированных программ таких, например, как веб-браузеры. Delphi позволяет разработчикам дизайна внедрять в интерфейс новые элементы и кодировать их события одним щелчком мыши.

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

Паскаль

Лучшим способом представить что такое Delphi является Object Pascal на основе визуальной среды разработки. Delphi основан на Object Pascal, языке, аналогичном объектно-ориентированному C++, а в некоторых случаях даже лучше. Для разработчиков не имеющих опыта работы в Паскале, Delphi имеет шаблоны своих структур на Паскале, что ускоряет процесс изучения языка.

Компилятор Delphi упаковывает приложения в компактные исполняемые файлы, причем нет необходимости в громоздких библиотеках DLL — большое удобство, я должен сказать.

Библиотека Visual Component Library (автономные бинарные части программного обеспечения, которые выполняют некоторые конкретные предопределенные функции), или VCL, Delphi является объектно-ориентированной базой. В этой богатой библиотеке вы найдете классы для таких визуальных объектов Windows как окна, кнопки и т.д., а также классы для пользовательских элементов управления таких как таймер и мультимедийный плеер, наряду с невизуальными объектами, такими как список строк, таблицы базы данных, потоки и т.д.

Базы данных

Delphi может получать доступ ко многим типам баз данных. Используя BDE (Borland Database Engine — механизм доступа к базам данных), формы и отчеты, которые вы создаете, получают доступ к локальным базам данных, таким как Paradox и DBase, сетевых баз данных SQL Server, InterBase, также как и SysBase, и любые источники данных, доступные даже через ODBC (открытая связь с базами данных).

Итак, Delphi — прекрасная среда разработки Windows- и Linux-программ любого типа. Поэтому единственное, что вас должно уже сейчас интересовать —

Итак, запустим Delphi. Перед нами четыре окошка. Вверху во вcю ширину экрана окно управления проектом и средой разработки — главное окно Delphi. При его сворачивании сворачиваются и все остальные. Слева — инспектор объектов. В нём задаются свойства составляющих нашу программу компонентов. И наконец, в центре одно над другим два окна, окно формы будущей программы и окно программной начинки.

В пустой форме смысла нет. Наполнить её содержанием помогут компоненты Delphi. Они располагаются на главном окне, на нескольких вкладках. Все основные компоненты находятся на первых четырёх вкладках: Standard, Additional, Win32 и System. Их названия всплывают в виде подсказок при наведении мышки на пиктограммы.

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

Данные в компьютере можно рассматривать как ячейки памяти, имеющие свои имена (идентификаторы). Все данные в программе на языке Delphi должны быть описаны до их первого использования. И компилятор следит, чтобы в программе они использовались в соответствии с этим описанием, что позволяет избежать ошибок.

При создании любой серьёзной программы не обойтись без дополнительных, более сложных, чем числа и строки, типов данных. В Delphi программист может для своих целей конструировать собственные типы данных. Чтобы ввести в программу (описать) новый тип данных, применяется оператор с ключевым словом type.

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

Начало. Работа с файлами важная вещь в любом языке программирования. Для начала нужно упомянуть компоненты, которые умеют работать с файлами, считывать и сохранять своё содержимое, строки типа String, в файл текстового формата. Это компоненты ListBox, ComboBox и Memo, расположенные на первой же вкладке палитры компонентов.
Продолжение. В Delphi реализовано несколько способов прямой работы с файлами. Познакомимся с классическим способом, связанным с использованием файловых переменных. Прежде всего файл должен быть открыт.
Окончание. То, что мы узнали в предыдущей части урока, позволяет работать с файлами по адресу, жёстко записанному в тексте программы. Мы же хотим просматривать любые файлы по нашему выбору. В Delphi есть компоненты, позволяющие в работающей программе осуществлять выбор файлов.
Поиск файлов в Delphi производится в три этапа. На первом этапе функция FindFirst находит первый файл, удовлетворяющий критериям отбора. На втором этапе функция FindNext в цикле поочерёдно находит остальные файлы. На третьем этапе функция FindClose освобождает память, выделенную для осуществления поиска.
Задачка. Теперь, пользуясь всем вышеизложенным материалом, можно ответить, например, на вопрос: «как средствами Delphi определить размер файла». Есть несколько альтернативных способов, как подсчитать размер файла с помощью Delphi.
Список подпрограмм используемых при работе с файлами в Delphi. Содержит функции и процедуры создания, поиска, преобразования и удаления папок и файлов.

Редкая программа обходится одной формой. Delphi позволяет с лёгкостью создавать дополнительные формы, предоставляющие возможность, например, вести диалог с пользователем, принимать и выводить любую необходимую информацию.

Всё богатство стандартных процедур и функций Delphi не исчерпывает встающих перед программистом задач. Для выполнения повторяющихся операций с меняющимися данными Delphi программист может создавать собственные подпрограммы — процедуры и функции Delphi.
Пример. Вычисление факториала. Выполняя повторяющиеся участки кода, подпрограммы эффективно заменяют циклы. Классический пример — вычисление факториала числа, демонстрирующий также использование рекурсии. Этот проект также можно скачать.

Исключительные ситуации в Delphi встречаются постоянно. Исключительная ситуация это такая ситуация, в результате которой генерируется ошибка, и выполнение программы прерывается. Например, деление на ноль — классический пример исключительной ситуации. Для контроля исключительных ситуаций ввода-вывода также могут применяться директивы компилятора <$I>.

Применение компонентов Delphi позволяет избежать рутинного ручного кодирования. Компоненты Delphi охватывают практически все аспекты применения современных информационных технологий. Конечно, для работы в Delphi прежде всего требуется изучить базовые компоненты Delphi, которые требуются при подготовке практически любого приложения.
Страница Standart
Изучение Delphi естественным образом начинается со страницы палитры компонентов Standart. На этой странице расположены стандартные для Windows интерфейсные элементы, такие как главное и всплывающее меню, кнопка, однострочный и многострочный редакторы, переключатели, метки, списки, и некоторые другие компоненты, которые применяются наиболее часто. Рассматривается пример на переопределение символов , вводимых в компонент Edit, что может использоваться в формах для ввода пароля.
Страница Additional
На страницу палитры компонентов Additional помещены дополнительные компоненты, без некоторых из которых сегодня трудно представить программу для Windows: кнопки с дополнительными свойствами, таблицы , компоненты для размещения изображений и многие другие.
Страница Win32
Страница палитры компонентов Win32 содержит компоненты, представляющие собой интерфейсные элементы для 32-разрядных операционных систем Windows 95/98/NT (В версии системы Delphi 2 эта страница называлась Win95). Использующие эти компоненты программы выглядят в стилистике последних версий операционных систем Windows.
Страница System
На странице палитры компонентов System представлены компоненты, которые имеют различное функциональное назначение (например, Timer — очень важный в любой программе компонент), в том числе компоненты, поддерживающие стандартные для Windows технологии межпрограммного обмена данными OLE и DDE.

Работа со строками Delphi позволяет извлечь из строки необходимую информацию и представить её в нужном виде. Delphi предоставляет весь спектр необходимых функций для работы со строками и преобразования строк Delphi в необходимые форматы.
Продолжение. Использование списка строк. Список строк Delphi TStringList — это структура данных, напоминающая компонент ListBox, но не визуальная, а просто хранящая в памяти и имеющая свойства и методы для работы со строками типа TString.

Создание интерфейса пользователя сводится к выбору из палитры компонентов необходимых для работы программы компонентов Delphi, служащих интерфейсом управления, а также интерфейсом отображения информации, и перенесению их на Форму с последующей компоновкой.

Работа с графикой в Delphi это не только линии и рисунки, но также и и печать текстовых документов. Поэтому в Delphi работе с графикой нужно уделить немного времени. Работа с графикой в Delphi предполагает знакомство с канвой (Canvas) компонентов. Канва это тот холст, который умеет управлять состоянием каждого своего пиксела, и это свойство позволяет программисту отобразить то, что требуется.

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

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

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

RAD Studio from Embarcadero

пятница, 7 февраля 2014 г.

5. Свойства и методы формы. Лабораторные Delphi, C++ (2)

Приложение, содержащее несколько форм в Delphi и C ++ Builder

Задание характеристик главной формы

Положите на форму из списка Standard набора инструментов Tool Palette две кнопки Button . Кнопкам задайте надписи (свойство Caption ) Форма 2 и Форма 3. Форма примет следующий вид (рис. 1).

Создание дочерних форм

Задание стартовой формы

1 комментарий:

Зачем так сложно? Почему же не «aForm := TForm3.Create(Self);»?

И в немодальную форму стоит добавить подобный обработчик, иначе память течет:

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

Ну и если уж совсем буквоедствовать, то Form2 и Form3 можно перенести в список «Available forms» и создавать их не всегда при запуске приложения, а самостоятельно по требованию.

Илон Маск рекомендует:  Что такое код domnode &#62;get_content
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL