Однако, доступ к свойствам компонентов довольно легко получить программным путем. Все, что вы должны сделать для изменения какого-либо свойства - это написать простую строчку кода в редакторе кода аналогично следующей:
Component. Width := 40;
где Component - интересующий вас компонент. Например Button1. Название компонента указано в свойстве Name.
Вышеприведенная строка устанавливает ширину (Width) компонента в значение 40 пикселей. Если свойство Width компонента еще не было равно 40 к моменту выполнения данной строки программы, Вы увидите, как компонент визуально изменит свою ширину.
Естественно, что изменить просто так свойство нельзя. Его надо изменять только в ответ на какое-либо событие. Например на клик мышкой по кнопке. Для этого создается одноименная процедура обработки события. Рассмотрим пример.
Разместим в проектировщике форм Form1 кнопку Button1. Напишем реакцию на событие нажатия по этой кнопке.
Подробнее о реакциях на событие можно прочитать в уроке №2.
Запускаем Delphi. В меню File выбираем New Application. Открывается новый проект. В проектировщике форм устанавливаем кнопку Button. Выделяем ее одинарным щелчком мыши. Здесь и далее для того, чтобы добраться до свойств необходимого объекта, нужно выделить его. Свойства выделенного немедленно отображаются в Object Inspector. Установим свойство Width для кнопки Button1 равное 200. Кнопка немедленно расширяется на заданную ширину. Теперь установим другую ширину для этой же кнопки, но уже программно. Переключаем Object Inspector на страницу Events (события). Мы видим полный перечень доступных во время выполнения событий для этой кнопки. Нас интересует реакция на событие нажатия On Click. Необходимо создать процедуру обработки этого нажатия, иначе это действие будет проигнорировано программой. Дважды щелкаем мышкой в поле, правее надписи On Click или нажимаем на Ctrl+Enter. Delphi автоматически создает заголовок процедуры обработки события.
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Курсор установлен между операторными скобками begin и end. Это означает, что весь текст программы, относящийся к реакции на данное событие должно быть размещено только между ними.
Набираем строку:
Button1.Width:=40;
Запускаем программу на выполнение (F9). Смотрим на результат своей работы.
Object Inspector является удобным способом выполнения в режиме проектирования того, что может быть осуществлено программным путем в режиме выполнения. Заданные свойства объектов считаются начальными и присутствуют на момент запуска программы. Более того, как уже было сказано выше, у компонента могут быть свойства, не отображаемые в окне Инспектора Объектов, которые доступны только в момент выполнения программы.
Часть урока для продвинутых программистов
В прошлом уроке мы рассматривали компонент F1Book, который применяется для организации работы, наподобие программы MSExcel. В этом уроке мы остановимся на непосредственной работе с упомянутой программой.
Если у вас установлен Delphi 5, то его нововведением было появление закладки Servers на палитре компонентов. Но можно и без участия этих компонентов получать доступ к программам групп MS Office.
Рассмотрим пример организации отчета в Excel. Пример можно скачать здесь.
Для начала скажу, что если вы хотите создавать в Excel что-нибудь серьезное, то вам необходимо неплохо ореинтироваться на VBA, в число которых я не вхожу. Но важна сама идея.
Создаем OLE объект:
ExcelApplication := CreateOleObject ('Excel. Application');
где ExcelApplication - переменная типа Variant.
Не забудьте объявить в разделе подключаемых модулей ComObj.
Далее вся работа сводится к посылке сообщений к созданному приложению Excel.
Данную методику можно применять как замену различным отчетам типа Report. Преимущества налицо.
С уважением, ведущий уроков Semen *****@***net
Урок4. Работа в среде программирования Delphi. Запуск других приложений
Часть урока для новичков
Перед непосредственным написанием программ необходимо усвоить правилами работы над разрабатываемым проектом.
Проект Delphi
Как уже говорилось в первом уроке, любой проект имеет, по крайней мере, шесть файлов, связанных с ним. Три из них относятся к управлению проектом из среды программирования и напрямую программистом, как правило, не меняются. Вот этот перечень файлов:
· Главный файл проекта, изначально называется PROJECT1.DPR. Если необходимо переименовать название проекта, нужно перезаписать этот файл, выбрав в меню File команду Save Project As… При задании имени следует придерживаться правил задания имен в Object Pascal. Имя не должно содержать пробелов (используйте в таком случае знак подчеркивания), должно начинаться с буквы (цифры допустимы, но со второй позиции), не должно содержать других символов, кроме букв и цифр. Под каким именем вы сохраняете проект, под таким именем и будет создаваться исполняемый EXE файл, который вы всегда сможете самостоятельно переименовать.
· Модуль программы, который автоматически появляется в начале работы Unit1. Файл называется UNIT1.PAS по умолчанию, но его можно назвать любым другим именем, вроде MAIN. PAS. Это делается аналогично переименованию названия проекта. Необходимо выбрать в меню File команду Save As… Сохраняется активный модуль в редакторе кода.
· Файл главной формы, который по умолчанию называется UNIT1.DFM, используется для сохранения информации о внешнем виде формы (окна разрабатываемого приложения). При переименовании названия модуля автоматически меняет свое название.
· Файл PROJECT1.RES изначально содержит иконку для проекта. Создается автоматически. Имеет одноименное название с названием проекта.
· Файл PROJECT1.DSK содержит информацию о состоянии рабочего пространства. Состояние окон во время разработки приложения.
· Исполняемый EXE файл, который создается в процессе компиляции проекта.
Разумеется, если сохранить проект под другим именем, то изменят название и файлы с расширением RES и DSK.
После компиляции программы получаются файлы с расширениями:
DCU - скомпилированные модули PAS для последующей быстрой компиляции некоторые файлы не перезаписываются
EXE - исполняемый файл
~PA, ~DP - backup файлы редактора. Автоматически создаются и содержат информацию, перед последним сохранением.
Коротко про пункты главного меню Delphi
Пункт меню “File”
Если нужно сохранить проект, то Вы выбираете пункт главного меню “File” (с помощью мышки или по клавише Alt+F). У вас, в зависимости от установленной версии, он может выглядеть по другому, но это не меняет картины в целом. Пункт меню “File” выглядит следующим образом:
Как вы можете видеть, здесь есть шесть секций, разбиваемых по их функциональному назначению.
· Первая секция дает возможность управления проектом в целом. Создать новый… (проект, форму, модуль, отчет и т. д.). Создать новый проект. Создать новую форму (окно).
· Вторая секция позволяет открывать с диска файлы проекта.
· Третья позволяет сохранять открытые файлы на диске. Здесь можно закрыть активный файл в редакторе кода или закрыть весь проект.
· Четвертая позволяет подключать в текущий модуль другие в открытом проекте.
· Пятая управляет печатью.
· Шестая секция - выход из Delphi.
Каждая строка пункта меню “File”, как и другого пункта, объяснена в справке. Выберите меню “File”, подведите под интересующий вас пункт и нажмите F1.
Большинство из пунктов первой секции очевидны. “New Application” начинает новый проект, “Open Project” открывает существующий проект и т. д. Вложенный список “Reopen” позволяет открыть файл или проект, который недавно открывался.
При создании нового модуля Delphi дает ему имя по-умолчанию. Вы можете изменить это имя на что-нибудь более предпочтительное, чтобы название подходило к функциональным принадлежностям данного модуля (например, MAIN. PAS) с помощью пункта для первого сохранения “Save“ или для последующего изменения названия “Save As…“.
“Save File” сохраняет только редактируемый файл, но не весь проект. Для сохранения всех файлов проекта пользуйтесь "Save All". Вообще всегда удобнее пользоваться пунктом меню сохранить все, чем сохранять файлы по отдельности, тем более, что сохраняются только измененные.
“Close” закрывает файл из окна редактора. Если файл был изменен произойдет запрос сохранений перед закрытием.
“Close All” закрывает все открытые файлы проекта.
Пункт меню “Edit”
“Edit” содержит команды “Undo” и “Redo”, которые могут быть очень полезны при работе в редакторе для устранения последствий при неправильных действиях, например, если случайно удален нужный фрагмент текста или удален компонент из проектировшика форм.
Команды “Cut”, “Copy”, “Paste” и “Delete” - как во всех остальных приложениях Windows, но их можно применять не только к тексту, но и к визуальным компонентам. Например, если необходимо размножить необходимый компонент на форме. Принцип действия первой и второй секции человеку, работающему в Windows, думаю ясен. Третья секция предназначена для работы с редактором формы. Не буду полность описывать ее содержание. Расскажу только о некоторых. “Bring to Front” - установить выбранный компонент на уровень выше; “Send to Back” - компонент на уровень ниже; “Align...” - выравнивание компонентов, совместное позиционирование; “Size” - точные размеры компонента; “Tab Order” - порядок перехода по элементам формы с помощью кнопки Tab.
Сохранение проекта
Как известно, чтобы в последствии открывать свой проект для дальнейшего корректирования и управления необходимо его сохранить на диске.
Первый шаг - создать поддиректорию для программы. Лучше всего создать директорию, где будут храниться все ваши программы и в ней - создать поддиректорию для данной конкретной программы. Например, вы можете создать директорию LESSONS и внутри нее директории, связанные с тем или иным уроком LES4, которые содержали бы программы, над которыми мы работали.
После создания поддиректории для хранения вашей программы желательно выбрать пункт меню “File” “Save All”. Сохранить нужно будет два файла. Первый - модуль (unit), над которым Вы работали, второй - главный файл проекта. Здесь и далее сколько окон (форм) в вашем проекте, столько и модулей.
Открытие проекта
Для открытия проекта необходимо выбрать пункт меню файл "Open Project" и выбрать название интересующего вас проекта DPR. При этом открываются как сам проект, так и становятся доступными все привязанные к нему файлы.
Если вы хотите открыть для редактирования отдельный модуль, или модуль формы, необходимо выбрать пункт "Open" и выбрать файл PAS. В этом режиме будет доступно для редактирования только форма и модуль. Чтобы запустить это окно на выполнение сначала открывайте проект.
Часть урока для продвинутых программистов
Запуск других приложений из вашего
Существует две наиболее часто применяемых функций. WinExec и ShellExecute.
Функция WinExec
WinExec, оставлена для совместимости с ранними версиями Windows, но я рекомендую для обычного запуска программы с командной строкой использовать эту. У нее мало параметров запуска.
Используемый модуль – Windows.
Описание: WinExec (FileName: PChar; CmdShow: Cardinal) : Cardinal;
где: FileName – путь, имя запускаемого приложения, параметры командной строки. Все указывается в одной строке;
CmdShow – стиль окна. Показывает, в каком состоянии будет отображаться окно при запуске.
Параметры отображения окна CmdShow:
SW_HIDE | Запускаемое приложение делается невидимым |
SW_MAXIMIZE | Расширяет окно на весь экран |
SW_MINIMIZE | Запускаемое приложение минимизируется. После запуска активизируется окно высшего уровня, т. е. окно, откуда было запущено это приложение |
SW_RESTORE | Делает окно таким, каким оно было запущено в последний раз |
SW_SHOW | Отображает окно в своем текущем размере и позиции |
Для не-Windows приложений определяет состояние окна файл PIF, если таковой имеется в наличии. Если необходимо закрывать окно после завершения работы такого приложения необходимо создать PIF ярлык к нему в том же каталоге с таким же названием и поставить галочку "Закрывать окно по завершению сеанса работы". Все дополнительные параметры запуска устанавливаются там же.
Возвращаемые значения функции WinExec:
31 | нормальный запуск |
0 | системе не хватает памяти или ресурсов |
ERROR_BAD_FORMAT | EXE файл поврежден или имеет неверный формат (Windows на такой файл говорит, что он не является приложением Win32) |
ERROR_FILE_NOT_FOUND | файл не найден |
ERROR_PATH_NOT_FOUND | путь к файлу задан неверно |
Если имя выполняемого файла в параметре FileName не содержит пути директории, Windows производит поиск выполняемого файла в такой последовательности:
1. Каталог из которого приложение было запущено. Это рабочий каталог
2. Системный каталог Windows (обычно C:\WINDOWS\SYSTEM).
3. Каталог Windows.
4. Директории, указанные в переменной операционной среды в среде PATH. Узнать о каталогах этой переменной можно, введя PATH в командной строке сеанса MS-DOS.
Пример использования функции WinExec в программе:
WinExec ('', SW_SHOW); // запускает сеанс MS-DOS
Функция ShellExecute
Функция ShellExecute не только запускает программы, а открывает, редактирует или печатает файл, с учетом зарегестрированного типа, а также открывает указанную папку проводником. Возвращает Handle ссылку на открытое окно.
Используемый модуль ShellAPI. Его нужно не забыть указать в разделе Uses.
Описание: ShellExecute (hWnd: HWND; Operation: PChar; FileName: PChar; Parametrs: PChar; Directory: PChar; CmdShow: Integer): HINST;
где: hWnd – Handle родительского окна, в который будут передаваться сообщения запускаемого приложения. Можно указывать Handle-ссылку окна вашего приложения.
Operation – производимая операция. Open – открыть, print – напечатать, explore – открыть папку. По умолчанию open, если указать nil.
FileName – имя файла или документа, интернет ссылка, e-mail адрес.
Parametrs – параметры, передаваемые приложению в командной строке.
Directory – каталог по умолчанию.
CmdShow – стиль окна. Показывает, в каком состоянии будет отображаться окно при запуске. Подробно рассказано выше.
Вместо параметров Operation, Parametrs и Directory можно ставить nil. Они являются не обязательными параметрами для запуска.
В случае успешного запуска возвращает Handle окна, в случае неудачи возвращает код ошибки меньше или равное 32. Список возможных ошибок можно прочитать в справке по этой команде.
Пример использования команды ShellExecute в программе:
ShellExecute (Form1.Handle, nil, 'http://programming. *****', nil, nil, SW_RESTORE); //запуск нашей странички
ShellExecute (Form1.Handle, nil, PChar (Application. ExeName), nil, nil, SW_RESTORE); //запуск второй копии этой программы
ShellExecute (Form1.Handle, nil, 'iexplore', 'http://programming. *****', nil, SW_RESTORE); //запуск в отдельном окне
ShellExecute (Form1.Handle, nil, 'mailto:*****@***net? subject=delphi', nil, nil, SW_RESTORE); //написать мне письмо
ShellExecute (Form1.Handle, nil, 'c:\1.doc', nil, nil, SW_RESTORE); //открыть документ
С уважением, ведущий уроков Semen *****@***net
Урок5. Многооконная структура программы. Перетаскивание файлов в приложение
Часть урока для новичков
Приложения MDI и приложения SDI.
Прежде чем устанавливать вид и свойства вашего приложения надо подумать о том, какой вид приложения вы желаете создать. Это во многом зависит от его функционального назначения. Можно выбирать между так называемыми MDI - или SDI-приложениями.
MDI – сокращенно от Multiple Document Interface (интерфейс для одновременной работы со многими документами), а SDI – от Single Document Interface (интерфейс для работы с одним документом). В MDI приложениях два или более окон могут быть активны одновременно. В SDI-приложениях это невозможно. Здесь в каждый момент времени может быть активным только одно окно.
MDI-приложения являются удобным средством для одновременного выведения на экран текста или данных, которые хранятся в различных файлах. Такую структуру построения окон можно использовать для редактирования текстов, открывая и выводя на экран одновременно несколько различных документов. С помощь этих приложений можно также производить табличные вычисления, обрабатывая несколько таблиц одновременно, перенося или сравнивая данные из одной в другую. Пример такой работы над файлами – программа MS Word. Здесь файлы текстового и графического формата открываются в отдельных окнах, находящихся внутри главного окна программы.
Различные открываемые документы в окнах имеют общее рабочее пространство, в пределах которого они отображаются, называемое родительским окном. Всегда в MDI-приложении родительское окно является главной формой приложения. Все внутренние формы, называемые дочерними окнами отображаются в пределах рабочего пространства родительского окна и не могут быть помещены за ее пределы. Даже при свертывании. При максимизации таких окон, они занимают все рабочее пространство родительского окна, оставаясь внутри его.
Родительское окно может быть в MDI-приложениях только одно, а дочерних окон может быть теоретически бесконечно.
Большинство MDI-приложений имеют меню "Window" ("Окно") со следующими пунктами: Cascade, Arrange Icons, Tile Horizontal, Tile Vertical. С их помощью пользователь может управлять дочерними окнами приложения. Обычно нижняя часть меню отделена и представляет список всех открытых окон. Это свойство весьма удобно для быстрого перехода к тому или иному редактируемому файлу.
Модальные окна.
Все SDI-окна можно разделить по свойствам доступа друг к другу как модальные и немодальные. Они определяют, может пользователь или нет переключаться на другие окна. Когда модальное окно открыто, все другие открытые окна становятся недоступными. Пример можно увидеть практически из любой программы, вызвав пункт меню "About" ("О программе"). Отображаемое окно в приложении, как правило, не дает переключится на другое, пока не будет закрыто. Такое свойство иногда бывает очень полезным. Например, когда нужно чтобы пользователь ввел пароль, а затем получил доступ к определенному окну с данными, или окно фильтра данных, указав условия отбора, получает доступ к результату.
Итак, модальными или немодальными могут быть только SDI-окна.
С сегодняшнего урока мы с вами начинаем разрабатывать довольно сложный пример простого многооконного текстового редактора.
Пример MDI-приложения.
1. Запускаем Delphi. В меню "File" выбираем пункт "New Application".
2. Переименовываем свойство имени формы Name из Form1 в MainForm.
3. Устанавливаем свойство в инспекторе объектов FormStyle в fsMDIForm. Его можно выбрать из ниспадающего списка доступных свойств. Свойство означает, что данное окно будет родительским в MDI-приложении.
4.
В палитре компонентов выбираем MainMenu.
Это второй компонент слева на вкладке Standart. Помещаем его на проектировщик формы Form1. Дважды щелкаем по нему. Появляется конструктор меню окна. Здесь и далее для того, чтобы вызвать конструктор для размещенного в форме компонента главного меню (MainMenu), необходимо или дважды кликнуть по нему мышкой или дважды кликнуть в Object Inspector по свойству Items. Далее, пользуясь свойством Caption задайте меню такой вид, как на рисунке. Примечание: выбрать изменяемый пункт можно мышкой, для изменения названия выберите в инспекторе объектов свойство Caption, для отделения секций меню линией используйте знак тире в свойстве Caption для нужного пункта меню. Создание меню очень простое. Вы сразу видите результат изменения, добавления или удаления пунктов в редакторе формы. Вы всегда можете пополнить пункты меню, используя дополнения, выделенные пунктирной рамкой. Всегда можно вставить или удалить пункт меню в нужное место. Для этого воспользуйтесь правой клавишей мыши. Выбрать интересующее действие можно из выпадающего меню.
Итак, содержание главного меню:
Файл | Правка | Окна | Помощь |
Новый | Вырезать | Упорядочить | О программе |
Открыть | Копировать | ||
Сохранить | Вставить | ||
Сохранить как… | |||
Закрыть | |||
- | |||
Выход |
5. Выбираем пункт меню "Окна" и переименовываем его имя (идентификатор) Name в инспекторе объектов в WindowMenu.
6. Выбираем мышкой форму MainForm. В Object Inspector в свойстве WindowMenu устанавливаем их ниспадающего списка пункт меню WindowMenu. Теперь во время работы приложения все дочерние окна будут списком отображаться в меню "Окна".
7. Поскольку дочерних окон в этом приложении будет много и по внешнему виду они будут подобные, то нет смысла проектировать каждое окно отдельно. Спроектируем одно. Для помещения в проект новой формы выбираем из меню "File" пункт "New Form".
8. Устанавливаем размеры окна Form2 меньшими главного родительского окна.
9. Переименовываем свойство Name для этого окна из Form2 в ChildForm.
10. Устанавливаем свойство дочернего окна для MDI-приложения FormStyle в fsMDIChild.
11. Выбираем из палитры компонентов Memo
и устанавливаем его в дочернюю форму ChildForm.
12. Меняем свойство Align для этого компонента на alClient. Он немедленно расширяется на все доступное пространство окна.
13. Далее будем писать событие выбора пункта меню "Новый". При нажатии на него должно появляться дочернее окно. Поступаем следующим образом. Поскольку дочерних окон будет множество, то мы программа должна их автоматически при необходимости создавать. По умолчанию Delphi устанавливает автоматическое создание окна во время запуска приложения. Это избавляет программиста от написания некоторых команд. В данном случае мы все сделаем сами. Выбираем из меню "Project" пункт "Options…". На вкладке Forms снимаем установку "Auto-create forms" для окна ChildForm. Для этого выбираем его и перегоняем одинарной стрелкой в сторону "Available forms". Нажимаем кнопку OK.
14. Сохраняем проект на диске. Для этого проводником Windows создаем отдельную папку для хранения этого примера. В меню "File" выбираем пункт "Save All". Дальше появляются диалоги сохранения модулей окон и файл проекта. Модуль Unit1 родительского окна можно назвать, сохранив его под именем MainUnit. Модуль Unit2 дочернего окна приложения. можно сохранить под именем ChildUnit. Весь проект можно сохранить под именем MyEdit.
15. Теперь напишем в редакторе кода процедуру создания дочернего окна. Выбираем окно MainForm и дважды щелкаем по компоненту MainMenu1. Выбираем пункт меню "Новый". В Object Inspector переходим на вкладку событий Events. Дважды щелкаем по полю, правее OnClick. Или нажимаем Ctrl+Enter. Появляется готовый заголовок процедуры нажатия на пункт меню "Новый". Между begin и end пишем следующую строку:
TChildForm. Create(Self);
Поскольку в этом окне создается другое, то в переименованный модуль MainUnit необходимо подключить ChildUnit. Для этого выбираем из меню "File" пункт "Use Unit…" и указываем модуль ChildUnit. Нажимаем OK.
Все, запускаем программу на выполнение. Во время работы обратите внимание на список появившихся окон в меню "Окна", по которым удобно переключаться на необходимое окно.
В следующих уроках мы подробнее остановимся на написании этого примера. Если в этом уроке у вас что-то не получается, то пример на данном этапе разработки можно скачать здесь (2 KB). Если вы в последствии открываете свой или скаченный проект, не забывайте, что нужно открывать DPR файл.
Часть урока для продвинутых программистов
Перетаскивание файлов в приложение
Иногда очень полезно избавить пользователя от лишних операций при открытии файла. Он должен нажать на кнопку "Открыть", затем найти интересующий каталог, выбрать файл. Проще перетащить мышкой файл сразу в окно приложения. Рассмотрим пример перетаскивания Drag & Drop в окно произвольного текстового файла, который сразу же открывается в компоненте Memo1.
Простой пример текстового редактора, который рассматривается ниже, можно скачать здесь (3KB).
Для начала в разделе Uses необходимо подключить модуль ShellAPI.
В private области окна нужно вставить следующую строку:
procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES; //получение сообщений о переносе файла в окно приложения
Процедура обработки этого сообщения будет выглядеть следующим образом:
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
var
CFileName: array[0..MAX_PATH] of Char; // переменная, хранящая имя файла
begin
try
If DragQueryFile(Msg. Drop, 0, CFileName, MAX_PATH)>0 then // получение пути файла
begin
Form1.Caption:=CFileName; // имя файла в заголовок окна
Memo1.Lines. LoadFromFile(CFileName); // открываем файл
Msg. Result := 0;
end;
finally
DragFinish(Msg. Drop); // отпустить файл
end;
end;
Для того, чтобы форма знала, что может принимать такие файлы, необходимо в процедуре создания окна указать:
procedure TForm1.FormCreate(Sender: TObject);
begin
DragAcceptFiles(Handle, True);
end;
С уважением, ведущий уроков Semen *****@***net
Урок6. Палитра компонентов, часть первая
В нескольких уроках будут рассмотрены основные страницы с компонентами, содержащиеся в палитре компонентов главного окна Delphi. Будут рассмотрены описания некоторых свойств, место их применения. На этом занятии будут рассмотрены страницы Standart, Additional и Win32.
Не обязательно заучивать, запоминать нужные или ненужные на данном этапе обучения те или иные компоненты. Эти данные вы можете использовать в дальнейшем в справочных целях.
Поскольку у меня установлена 4 версия Delphi, то объяснять буду именно для нее. В других версиях имеются некоторые различия, но это не меняет всей картины в целом.
Первой кнопкой на каждой вкладке палитры компонентов всегда указатель в виде курсора. Это не компонент, эта кнопка позволяет быстро отказаться от уже выбранного компонента. Если вам нужно в форму установить несколько одинакавых компонента, то выбирайте его из палитры при нажатой клавишей Shift. В этом случае после перенесения компонента в окно, кнопка на палитре продолжает оставаться нажатой. Чтобы выйти из этого режима используйте вышейказанную кнопку отмены.
Страница Standart |
|
Компоненты на этой странице представляют стандартные Windows-элементы (кнопки, списки, меню и т. п.) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Страница Additional |
|
Компоненты на этой странице предназначены для красочного оформления приложения, усовершенствованные компоненты из предыдущей страницы. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Страница Win32 |
|
Компоненты на странице Win32 обеспечивают доступ к 32-битным элементам Windows (Windows95/NT). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
С уважением, ведущий уроков Semen *****@***net
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |





