
OOП
.pdf
Таблица 1 Специ икации орматов |
|
|
âð ìÿ |
|
|
|
|
символ |
äàòà |
символ |
|
|
|
|
|
описание |
описани |
|
|
|
|||
ddd, %d |
нулямесяцацабезс лидирую•лидирую• |
hhh, %h |
|
|
|
h |
|
|
щимденьщегодень нулеммес |
|
часыдирующегочасы вв орматеорматенуля12 |
|
áåç ëè• |
||
ddd |
ройденьднямесяцанеделисаббревиату• |
H, %H |
часыдирующимворматенулем12h ñ ëè• |
||||
dddd |
деньвниеммесяцадня недеспоëíûìè íà• |
HH |
часыдирующеговорматенуля24h |
áåç ëè• |
|||
|
çначениебезмесяцамесяцалидирующеговввидевиде |
mmm, %m |
|
|
|
|
h |
MMM, %M |
значениенулячисла |
|
минутынуляминутыдирующимсбезлидирующимнулемлидирующего24 ñ ëè•íó• |
||||
|
числа с лидирующим ну• |
|
ëåì |
|
|
|
|
MMM |
ëåì |
s, %s |
секунды без лидирующего |
||||
окращенное название ме• |
|||||||
MMMM |
ñÿöà |
ss |
íóëÿ |
|
|
|
|
полное название месяца |
секунды с лидирующим |
||||||
y,%y |
значение года без обозна• |
t, %t |
нулем |
ормате |
|||
äëÿ |
времени |
||||||
yy |
щимчениязначениенулячения векаулемвека,годаинолидирующегобезслидирую•обозна• |
tt |
h |
временинияпервогосимволаAM/PMсимволармате |
|||
|
|
|
12дляобозначвывод |
|
|
|
|
/yyyy |
ниюразделительниемзначениедлявекаполейгодапосдатыобозначе•умолча• |
: |
h |
|
|
|
îбозна• |
|
|
|
12ниюразделительчениявыводдляAM/PMполейповремениумолча• |
20

|
3.4 Списки ComboBox |
|||
|
Элемент управления ComboBox (выпадающий список объединение строки ввода |
|||
и списка) содержит текстовые строки, которые могут быть выбраны пользователем. Эле• |
||||
менты списка представляются экземплярами класса ListItem, содержащими свойства: |
||||
Text текст элемента |
ïèñ ; |
|||
Va ue произвольная |
строка, связанная с пунктом списка; |
|||
Sele ted выбран ли данный элемент (значение true) или нет (значение false); |
||||
Count количест |
элементов в списке; |
|||
Sele tedIndex |
возвращает целочисленное значение, соответствующее индексу вы• |
|||
бранного элемента ( если список выбора пустой, то возвращает -1); |
||||
Sele tedItem возвращает текстовую строку, соответствующую выбранному эле• |
||||
менту. |
|
|
|
|
Ïðè â |
боре элемента списка изменяется значение свойства Sele tedIndex, при этом |
|||
жет быть вызвано событие Sele tedIndexChanged, кото ое позволяет определить после |
||||
до ательность действий при выборе пункта списка. Напðимер, пусть на калькулятор мо•до |
||||
бавлен |
|
ComboBox с именем fun tions (т.е. войство Name добавленного элемента |
||
ComboBoxэлементимее значение fun tions). Добавим в спиñок два пункта: sin и os. При выборе |
||||
пункта в сп ске в окно редактора result1 долж о выво иться значение тригон метриче• |
inte:. ункцииСоздадимSystem::Voidматематическуюот(выбранного>SeleзаголовокfunилиtedIndex;tio s Sele)пунктаоперацию:отtedIndexChanged(System::Objeункциизначениясспискедляаргумеобработки(т.е.вíзависимостита,t^событиявведенногоsender, System::EventArgs^отSeleзначениявпервоеtedIndexChangedSeleтекстовоеe) tedIndexполеи,в), |
|||||
{определимзависимостиfirstскойpriva |
SIN |
COS |
|
||
|
a=fun tions- |
|
|
->Text); |
|
double ; |
|
|
|
|
|
swit h b=System::Convert::ToDouble(firsta ) |
|
||||
{ |
ase |
0: |
|
|
|
=System::Math::Sin(b); |
|
||||
|
break; |
|
|
|
|
|
ase 1: |
|
|
21 |
|
|
=System::Math::Cos(b); |
|
re} |
ult1break;->App |
->Sele dIt m+"("+first->Text+") = "+System::Convert::ToString( )+" |
\t"+ |
||||
} |
System::Convert::ToString(SyndText(fun tionstem::DateTime::Now)+"\n"); |
|
|
|
|
|||
|
3.5 Зависимые кнопки RadioButton |
|
|
|
|
|||
|
|
Элементы RadioButton создают список взаимоисключающих элементов. Щелчок |
||||||
по кнопке включает ее, одновременно отключая все остальные. Элемент RadioButton яв• |
||||||||
ляется производным от Che kBox. |
|
|
|
|
||||
|
|
Чтобы организовать вз имодействие кнопок следует сначала размест ть на орме |
||||||
ëèáî Panel, ëèáî GroupBox. Çàтем, разместить кнопки RadioButton на |
ýòèõ |
элементах |
||||||
управления. |
|
|
|
|
|
|
||
|
|
Вообще GroupBox комп ненты используют, чтобы обеспечить разделение |
||||||
не тов на р з ичные группы, |
которые становятся для них родителями с тем, чтобыкомпо• |
|||||||
|
ненты унаследовали |
свойства своих |
|
. Обычно так делают, чтобы |
||||
ïîдразделить орму на неск лько ункций. Да |
родителейдизайн осуществлять удобнее: пере• |
|||||||
мещая только GroupBoxнекоторые, мы дновременно перемещаем все компоненты, которые в нем |
||||||||
находятся. |
|
|
|
|
|
|
||
|
|
Необходимые свойства элемента RadioButton: |
|
|
|
|||
|
1) Text хранит метку элемента RadioButton; |
|
|
|
|
|||
|
2) |
Che ked указывает, выбран ли данный элемент (значение true) или нет (значение |
||||||
|
|
false). |
|
|
|
|
|
|
|
|
ассмотрим пример: пусть на калькуля оре размещен элемент RadioButton, при• |
||||||
Если же элемент не выбран,калькуляторена калькулятореприсутствуютне ак ивен элемент ComboBox. |
|
|||||||
чем, если он выбран, то на |
|
все ранее добавленные элементы. |
||||||
Name |
азм стите на |
RadioButton, измените з ачение свойства |
||||||
значение advanкалькулятореed, значениеэлементсвойс ва Che ked установите равíûì false. |
||||||||
íèòå |
значение |
свойства Text на значение асширенный. В этом случае при запуске прилоИзме• |
||||||
жения кнопка Radiobutton |
будет выбрана. В этом случае по условию задачи элемент |
|||||||
ComboBox должен быть неактивным. Это можно реализовать одним из следующих спосо• |
||||||||
áîâ: |
|
|
|
|
òà ComboBox |
ачение false |
||
|
установите значение свойства Enabled вашего элем |
|||||||
|
|
(после запуска приложения элемент будет недоступеí для использования); |
||||||
|
|
|
|
22 |
|
|
|
|

|
|
(послеустановитезапусказначениеприложениясвойства Visibleíå вашегобудет виденментаíà îðìå)ComboBox. |
в значение false |
|||||||
Для того, чтобы после выбора элементаRadioButton элемент ComoBox стал активным (или |
||||||||||
видимым) необходимо написать обработчик собы ия Che kedChanged элемента RadioButton, |
||||||||||
которое вызывается |
раз, когда |
зменяется значение свойства Che ked элеме та |
||||||||
RadioButton. Перейдитевсякийсписку |
событий элемента RadioButton |
найдите там назваíèå |
||||||||
нужного события, сгенерируйте заголовок соответствующей |
ункции в коде программы. |
|||||||||
Тело ункции будет следующим: |
(System::Obje t^ sender, System::EventArgs^ e) |
|
|
|||||||
private: Syst m::Void advan ed Che kedCh ng |
|
|
||||||||
} |
if(advan ed->Che ked) {fun tions->Enabled=true;}; |
|
|
|
|
|
||||
{ |
|
Здесь, если значение свойства Che ked элемента RadioButton |
именем advan ed |
|||||||
|
ринимает значение true, то элемент ComboBox с именем fun tions |
становится активным, |
||||||||
ïоскольку его свойство Enabled принимает значение true. |
|
|
|
|
||||||
|
|
4 Управление ормами |
|
|
|
|
|
|
||
|
|
В лекцио ном курсе подробно рассматривается процесс управления ормой Form1, |
||||||||
дается список осíовных свойств ормы, которые позволяют изменять ее внешний вид и |
||||||||||
ïîâ |
ние, а также список основных событий, определяющих реакцию |
íà |
||||||||
определенные действия пользователя. На |
занятиях студенты вып лняют |
|||||||||
задания, позволяющие |
науч ться объединя ь одном приложении несколькоприложениярм, ко• |
|||||||||
торые при определенных услов ях взаимодейспрактическихвуют друг с другом. Материал лекций для |
||||||||||
|
|
зад ний необходим, |
|
|
приходится оперировать со |
|
|
|||
выполнениясоздавать обрàботчики основных бытий, оступных для орм. Такжесвойствамилекцио ноорм |
||||||||||
курсе подробно рассматриваетсяпосколькуалг ритм |
задания, которое студенты затем выполняют |
|||||||||
на практических |
. |
|
|
|
|
|
|
|
||
|
|
Ниже ещезанятияхр приводится алгоритм задания и подробно рассматриваются все тон• |
||||||||
кости выполнения задания. |
|
|
|
|
|
|
|
|||
|
|
4.1 С здание нескольких элементов Form и их связь |
|
|
|
|||||
|
|
Äëÿ òîго, чтобы добавить |
приложение несколько |
овых орм, воспользуйтесь |
||||||
пунктом меню Проект и выберите До ить но ый эл м нт. В |
|
|
диалого• |
|||||||
вом окне выберите Форм Windows Forms. Введите имя ормы. Послепоявившемсяэтого |
текущий |
|||||||||
|
|
|
|
|
|
23 |
|
|
|
|
проект будет добавлена новая орма, которая |
жет содержать различные элементы |
|
||||||||
|
|
асс отримñконкретнуюуже имеющейсязадачу:проектеразработатьормойприложение,. |
состоящее из трех орм. |
|||||||
взаимодействоватьПе вая должна содержать заставку |
приложению Калькулятор , |
|
также ин• |
|||||||
ормациюор разрабо |
чике. Форма должна закрываться через 5 секунд или |
раньше, если |
||||||||
ароля. Если пользователь |
вводит верные значения, то открываетсяклавишулькулятор, иначе |
|||||||||
пользователь кликае |
на орме мышкой или нажимает любую |
íà |
|
. |
||||||
Вторая орма должна содержать два поля: для ввода имени пользов теля |
клавиатуредля ввода |
|||||||||
ïриложение закрывается. |
|
|
|
|
|
|
|
|||
|
|
вып лнение задания начинается с добавления двух н вых орм в проект кальку• |
||||||||
лятора. Назовите первую орму logo, а вторую password. После |
этого сохраните проект |
|||||||||
и запустите отладку. Запуст в прило ение, вы обнаружите, что новые ормы не появ• |
||||||||||
ляются на экране, приложенè |
ïî ïðåæнему запускается как калькулятор. Это связано |
|
||||||||
вой. Поря ок запуска, определяется, например, в айле с имен м |
проекта и расширением |
|||||||||
тем, что первая орма, соз |
анная в проекте считается главной и запуск ется всегда п р• |
|||||||||
. pp. Íàéäите этот айл и изучите его содержимое: вы увидите, что этот айл содержит |
||||||||||
ункцию main, где вызыв ется орма Form1 как аргумент ункции Appli ation::Run. |
||||||||||
этому именно эта |
îðìà |
будет загружат ся первой. Чтобы при запуске пр ложения |
||||||||
ïîявлялись две другие ормы, пользователü должен инициировать их запуск из ормы |
||||||||||
Form1 |
. |
Чтобы определить порядок появления орм, откройте список с бытий для ормы |
||||||||
|
найдите там событие Load, сгенерируйте стандартный заголîвок ункции для |
|||||||||
обработки этого события: |
|
|
|
|
|
|
|
|||
private: System::Void Form1_Load(System::Obje t^ sender, System::EventArgs^ e) |
|
|||||||||
{ |
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
первым выводом ормы на экран при запуске приложе• |
|||||
Это событие выполняется пе |
||||||||||
ния. Именно здесь можно определить порядок появления двух дополнительных орм. |
|
|||||||||
|
|
Важным является вопрос: каким образом пользователь будет вызывать дополни• |
||||||||
тельные ормы. Как известно, для любой ормы доступны два метода: |
|
|
|
|||||||
|
|
; |
|
|
24 |
|
|
|
|
|
ShowDialog(). |
|
|
|
|
|
|
|

Первый метод метод Show() выводит на экран ту орму, для которой он вызван. При |
||||||||||
этом, если на экране есть активные ормы, они также останутся видимыми, пользователь |
||||||||||
будет иметь |
озможность обратиться к ним. Второй метод метод ShowDialog() |
òêðû• |
||||||||
âàåò ðìó |
в модальном режиме. Этот метод |
|
|
тогда, |
огда орма должна |
|||||
ждать |
отклика пользователя на св |
появление.используетсяДо х пор, пока отклик не получен (или |
||||||||
не закрыта текущая орма), пользователь не может перейти |
другим ормам. Поск |
ó |
||||||||
в задании ормы появляются последовательно |
калькулятор должен запускаться |
только |
||||||||
при определенном условии, необходимо использовать метод ShowDialog(). |
|
|
||||||||
|
|
4.2 азработка ормы |
логотипом |
|
|
|
|
|
|
|
îðìà |
Д я того, чтобы при запуске приложения на экране в первую очередь появлялась |
|||||||||
оготипом (logo) добавим в обработчик события Load главной ормы Form1 |
||||||||||
следующие строки: |
|
|
|
|
|
|
|
|||
|
^ logoform = g new logo(); |
|
|
|
|
|
|
|
||
logoform->ShowDialog(); |
|
|
|
|
|
|
|
|||
В первой строке создается экземпляр класса logo с именем logoform. В следующей строке |
||||||||||
для этого экземпляра класса вызывается метод ShowDialog(). Таким образом, обработчик |
||||||||||
события Load теперь выглядит следующим образом: |
|
|
|
|
|
|||||
private: System::Void Form1 Load(System::Obje t^ sender, System::EventArgs^ e) |
|
|
||||||||
{ |
|
^ logoform = g new logo(); |
|
|
|
|
|
|
||
} |
logoform->ShowDialog(); |
|
|
имо в айл Form1.h включить |
||||||
Для того, чтобы компиляция прошла успешно, необх |
||||||||||
заголовочный айл logo.h, поскольку в этом айле содержится объявление и описание |
||||||||||
класса logo. Добавьте в начало айла Form1.h строку |
|
|
|
|
|
|||||
#in lude "logo.h" |
|
|
|
|
|
|
|
|||
Запустите компиляцию само приложение. Теперь, если все сделано правильно, в первую |
||||||||||
очередь на экране появится орма logo. Форма-калькулятор появится только после того, |
||||||||||
как польз ватель закроет орму logo. |
|
|
|
приложению Каль• |
||||||
|
|
По условию задачи |
logo должна содерж ть заставку |
|||||||
|
лятор , |
также ин ормациюорма |
разработчике. Форма должна закрываться через 5 |
ñå• |
êóнд или раньше, если пользователь кликает на орме мышкой или нажимает любую 25
клавишу на клавиатуре. Все эти параметры определяются свойствами событиями ор• |
|||||||
ìû logo. |
|
|
|
|
|
|
|
1) |
Свойство Ba kgroundImage хранит путь к айлу с оновой картинкой, помещенной |
||||||
2) |
íà îðìå. |
|
|
|
его свойство Text можно использовать |
||
Элемент Label, помещенный на орму logo, |
|||||||
3) |
для добавления на орму ин ормации о разработчике приложения. |
||||||
Свойство ормы StartPosition со значением S reenCenter позволяет разместить |
|||||||
4) |
орму по центру экрана при ее запуске. |
|
|
|
|||
Свойство KeyPreview |
чением true, чтобы орма реагировала на нажатие кла• |
||||||
5) |
виш на клавиатуре послезнàпуска. |
|
|
|
|||
Свойство FormBorderStyle со значением None уберет рамку вокруг ормы, в том |
|||||||
6) |
числе панель с кнопками |
верху. |
|
|
|
||
Свойство ShowInTaskBar |
ñî |
значением false приведет к тому, что орма не будут |
|||||
|
отображаться в панели задач (и пользователь никак не сможет орму закрыть, пока |
||||||
|
не созданы обработчики событий для ее закрытия. Злобный смех за кадром...) |
||||||
Все эти свойства определяют визуальное представление |
но никак не определяют |
||||||
ее поведение. Для того, чтобы определить |
ормы,необходимо использовать |
||||||
элемент Timer, а также создать обработчик с бытия KeyDown. Таймер необходим, чтобы |
|||||||
задать интервал |
по истечении которповедениего орма закроется автоматически. Собы• |
||||||
тие KeyDown возникаетвремени,том случае, если пользователь нажимает произвольную клавишу |
|||||||
на клавиатуре. В этом случае орма также должна закрываться. |
добавьте на орму |
||||||
|
Чтобы вызвать закрытие ормы logo по истечении 5 |
|
|||||
элемент Timer, задайте значение свойства Interval равным секунд,5000 а значение свойства |
|||||||
Enabled равным true. Создайте обработчик события Ti k таймера и внутри тела |
|||||||
укажите команду Close() так же, как это было сделано выше для закрытия ормыункциипр |
|||||||
нажатии на кнопку. |
|
|
logo ïðè |
любой клавиши на клавиату• |
|||
|
Чтобы вызвать закрытие |
ре, для ормы создайте обработчикормысоб тия KeyDownнажатиив теле ункции для этого события |
|
также укажите ункцию Close(). |
26 |
|
ïîÿ |
Сохраните проект и запустите приложение. Если все сделано правильно, сначала |
||
тся орма с заставкой, она закрое ся сама через 5 секунд и и при нажатии любой |
|||
клавиши на клавиатуре. После ее закры ия вы увидите орму-калькулятор. |
|||
|
4.3 азработка ормы входа приложение |
||
|
Для того, чтобы после ормы с |
заставкой появлялась орма входа в приложение |
|
password íå |
вызвать ее из ункции Load главной ормы Form1 так же, как это |
||
было сделанобходимодля рмы logo. Добавьте в ункцию Load две новые строки: |
|||
w |
d^ passform = g new password(); |
||
passform->ShowDialog(); |
|
||
Здесь мы создвли экземпляр класса password и применили к нему метод ShowDialog(), |
|||
чтобы открыть орму password как диалоговое окно. В айл Form1.h добавьте строку |
|||
#in lude "password.h" |
|
||
так же, как это было сделано для айла logo.h выше. |
|||
|
при запуске приложения после ормы с заставкой появится орма password. |
||
|
Теперь нужно определить свойства ормы password и ее поведение, как указано |
||
|
задачи: орма password должна содержать два поля: для ввода имени пользо• |
||
â условияхтеля для ввода |
ароля. Если пользователь вводит верные значения, то открывается |
||
êàлькулятор, иначе |
ïриложение закрывается. |
||
|
|
орму password два текстовых поля, уста овите свойство Name пер• |
|
вого поляДобавьтезначение login, а |
Name второго поля в значение passwd. Добавьте |
||
к каждому полю элемент Labelзначениеук жите в свойстве Text каждой метки, какого рода |
|||
ин ормацию должен ввести поль ов тель в поле (имя, пароль). азместите на орме |
|||
две кнопки эл менты Button со начениями свойства Text равными соот ественно OK и |
|||
Can el. Значение свойства Name задайте |
равными ok и an el для первой и второй кнопок |
||
соответственно. |
|
|
|
|
Основные свойства элементов, размещенных на этой орме, и самой ормы пред• |
||
ставлены ниже. |
|
|
|
1) Свойство ормы StartPosition со значением S reenCenter позволяет разместить |
|||
орму по центру экрана при ее запуске. |
|||
2) Свойство ормы KeyPreview о |
чением true, чтобы орма реагировала на нажа• |
тие клавиш на клавиатуре поñëåçíàпуска. 27

|
3) |
том числе панельFormBorderStyleс кнопками сверху. |
|
|
None уберет рамку вокруг ормы, |
|||||
|
4) |
Свойство ормы ShowInTaskBar |
|
значениемfalse приведет к тому, что орма не |
||||||
|
|
пока не созданы обработчики событий |
äëÿ |
ее закрытия. Злобный смех за кадром...) |
||||||
|
5) |
будут отображаться в панели задач (и по ьзователь никак не сможет орму закрыть, |
||||||||
|
В свойстве ормы A eptButton выберите кнопку с именем ok, чтобы обработчик |
|||||||||
|
|
события для этой кнопки запускался при нажатии на клавишу [Enter на клавиа• |
||||||||
|
6) |
òóðå. |
|
|
|
|
|
|
|
|
|
В свойстве ормы Can elButton выберите кнопку с именем an el, чтобы |
|||||||||
|
|
чик события для этой кнопки запускался при нажатии на клавишу [Es наобработ•клави |
||||||||
|
7) |
атуре. |
|
|
|
|
свойстве PasswordChar символ, который бу• |
|||
|
Для текстового поля passwd укажите |
|||||||||
|
8) |
дет отображаться в поле вместо |
введенного пароля. ok в значение OK. |
|||||||
|
9) |
Установите значение свойства DialogResult кн пки an el в значение Can el. |
||||||||
Для того, чтобы происходила проверка имени пользователя |
пароля, воспользуемся об• |
|||||||||
работчиком события Cli k кнопки ok. Создайте заголовок ункции для обработки этого |
||||||||||
события. Функция может иметь следующий вид: |
ender, System::EventArgs^ e) |
|||||||||
private: System::Void ok Cli k(Sy tem::Obje t^ |
|
|||||||||
{ |
if(login->Text=="user" && pass |
->Text=="password") |
|
|||||||
|
|
DialogResult=System::Windows::Forms::DialogResult::OK; |
||||||||
|
|
{ |
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
else{ |
|
|
|
|
|
|
|
|
|
} |
|
DialogResult=System::Windows::Forms::DialogResult::Can el; |
||||||||
|
} |
÷òî åñ |
è â |
|
|
поле пользователь ввел слово user (т.е. |
||||
Здесь, сущности, |
|
|
||||||||
èìÿ |
пользователя), указано,во второе поле |
онпервоекачестве пароля ввел password, то свойству |
||||||||
|
|
|
|
|
|
28 |
|
|
|
èíîðìûормациюDialogResultâ îäíî ïîëåприсва(иливаетсяоба поля),значението значениеOK, иначе,DialogResultесли пользовательбудетââåëравноневернуюCan el. |
||||||||||
Важно |
|
|
что при нажатии кнопки an el свойство DialogResult будет также |
|||||||
равно Canотметить,el поскольку в этом случае свойству ормы DialogResult будет присвоено |
||||||||||
значение свойства DialogResult |
а для кнопки Can el оно |
значение Can el. |
||||||||
|
|
Теперь необходимо вернутьсякнопки,событию Load ормы Form1имеетуказать, что если |
||||||||
свойство DialogResult |
ормы password имеет значение OK, то можно запускать |
предыорму• |
||||||||
калькулятор (т.е. пользователь ввел правильный пароль и имя |
|
íà |
||||||||
дущей орме). Если же свойство DialogResult ормы passwordпользователяимеет |
|
Can el |
||||||||
(пользователь неверно ввел пароль и/или имя |
то приложе ачениенеобход мо |
|||||||||
закрыть. Для того, чтобы реализовать такую проверку,льзователя),ункцию Load |
нужно добавить: |
|||||||||
if (passform->DialogResult!=System::Windows::Forms::DialogResult::OK) |
|
|
||||||||
{ |
System::Windows::Forms::Appli ation::Exit(); |
|
|
|
|
|||||
} |
|
|
|
|
||||||
Обратите внимание, что здесь первый раз происходит обращение к свойству дополни• |
||||||||||
тельной ормы внутри главной ормы: мы явно указали passform->DialogResult, т.е. |
||||||||||
проверяется свойство DialogResult ормы passform. Если значение его не равно OK, при• |
||||||||||
ложение будет закрыто. |
|
|
|
|
|
|
||||
ùèì: |
Таким образом, полностью обработчик события Load ормы Form1 будет следую• |
|||||||||
private: System::Void Form1_Load(System::Obje t^ sender, System::EventArgs^ e) |
|
|||||||||
{ |
logo |
^ logoform = g new logo(); |
|
|
|
|
|
|||
|
|
d^ passform = g new pas word(); |
|
|
|
|
||||
|
passf |
m- |
(); |
|
|
|
|
|
||
|
if (pa sform>Show- DialogResult!=System::Wi dows::Forms::DialogResult::OK) |
|
|
|||||||
} |
{ |
System::Windows::Forms::Appli ation::Exit(); |
|
|
|
|
||||
} |
|
|
|
|
Дополнительно установите свойство StartPosition ормы Form1 в значение CenterS reen. 29