Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


ƒиспетчеризаци€ действий на основе компонента ActionList




1. —оздайте новое приложение и командой —охранить все сохраните файл модул€ и проект. ¬ свойство Caption формы впишите “ест нестандартных действий.

2. ѕеренесите на форму со страницы —тандарт компонент ActionList1. ѕеренесите также со страницы ƒополнительно компонент ImageList1 и сошлитесь на него в свойстве Images компонента ActionList1.

3. «агрузите в компонент ImageList1 не менее трех изображений. »зображени€ в компонент ImageList1 могут быть загружены в процессе проектировани€ с помощью редактора списков изображений. ќкно редактора вызываетс€ двойным щелчком на компоненте ImageList1 или щелчком правой кнопки мыши и выбором команды контекстного меню –едактор ImageList. ¬ окне редактора можно добавить в списки изображение (кнопка ƒобавить), удалить изображение из списка кнопкой ”далить, очистить весь список кнопкой ќчистить.

ѕри добавлении изображени€ в список, которое начинаетс€ с нажати€ кнопки ƒобавить, открываетс€ окно открыти€ файлов изображений, в котором можно выбрать нужный файл. ћножество изображений, размещаемых обычно на кнопках, содержитс€ в папке Е\Program Files\Common Files\Borland Shared\Images\Buttons.

—ледует помнить, что размер всех изображений в списке должен быть одинаковым.  ак правило, это размер, используемый дл€ пиктограмм в меню, списках, кнопках. ѕри добавлении в список изображений дл€ кнопок надо иметь в виду, что они часто содержат не одно, а два и более изображений. ¬ этих случа€х после выбора имени файла изображений при щелчке на кнопке ќткрыть задаетс€ вопрос: УBitmap dimensions for Е are greater then imagelist dimensions. Separate into Е separate bitmaps?Ф (У–азмерность изображени€ Е больше размерности списка. –азделить на Е отдельные изображени€?Ф). ≈сли ответить отрицательно, то все изображени€ уменьшатс€ в горизонтальном размере и л€гут как одно изображение. »спользовать его в дальнейшем будет невозможно. ѕоэтому на заданный вопрос надо ответить положительно. “огда загружаема€ битова€ матрица автоматически разделитс€ на отдельные изображени€, а затем те из них, которые не нужны, удал€ют.

 аждое загруженное в список изображение получает индекс. »менно на эти индексы впоследствии ссылаютс€ в соответствующих свойствах разделов меню, списков, кнопок и т.д., когда надо загрузить в них то или иное изображение. „тобы изменить последовательность изображений в списке, перетаскивают изображение мышью на новое место.

4. —делайте на компоненте ActionList1 двойной щелчок, чтобы попасть в –едактор ƒействий (окно –едактирование Form1->ActionList1), позвол€ющий вводить и упор€дочивать действи€.  олонка  атегории: пока не будет иметь отношени€ к проектированию приложени€. ўелчок правой кнопкой мыши или щелчок на маленькой кнопке со стрелкой вниз правее первой быстрой кнопки окна редактировани€ позвол€ет выбрать одну из команд: Ќовое действие или Ќовое стандартное действие. ѕерва€ из них относитс€ к вводу нового действи€ любого типа. ѕока будем пользоватьс€ только командой Ќовое действие. “рижды выберите эту команду. ¬ колонке ƒействи€: по€в€тс€ имена действий по умолчанию: Action1, Action2, Action3.

5. ¬ыделите Action1. ¬ »нспекторе ќбъектов указанным ниже свойствам объекта действи€ Action1 присвойте следующие значени€: Caption Ц &‘ормирование, Hint Ц размер 3х5, ImageIndex Ц 0, Name Ц AMatr, ShortCut Ц Ctrl+A. ƒл€ Action2: Caption Ц &“ранспонирование, Hint Ц однократное, ImageIndex Ц 1, Name Ц ATrans, ShortCut Ц Ctrl+B. » дл€ Action3: Caption Ц &—тереть, Hint Ц очистка Memo1, ImageIndex Ц 2, Name Ц ADel, ShortCut Ц Ctrl+C.

6. Ќа странице событий »нспектора ќбъектов дл€ каждого действи€ определено три событи€: OnExecute, OnUpdate и OnHint. —обытие OnExecute возникает в момент, когда пользователь инициализировал действие, например, щелкнув на компоненте (разделе меню, кнопке), св€занном с данным действием. ќбработчик этого событи€ должен содержать процедуру, реализующую данное действие. —обытие OnUpdate периодически возникает в промежутках между действи€ми. ¬озникновение этих событий прекращаетс€ только во врем€ реализации событи€ или во врем€, когда пользователь ничего не делает и компьютер находитс€ в состо€нии ожидани€ действий. ќбработчик событи€ OnUpdate может содержать какие-то настройки, подготовку ожидаемых дальнейших действий или выполнение каких-то фоновых операций. —обытие OnHint возникает в момент, когда на экране отображаетс€ €рлычок подсказки в результате того, что пользователь задержал курсор мыши над компонентом, инициализирующим событие. Ќаличие в объекте действи€ событий OnUpdate и OnHint расшир€ет возможности по проектированию приложени€.

7. —о страницы —тандарт перенесите на форму компонент Memo1. ”становите шрифт (Font) Courier, полужирный, размер Ц 12.

8. ¬ файле реализации модул€ поместите следующие объ€влени€ и обработчики событий OnExecute (курсив):

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

 

int r[50][50],a[50][50],n=3,m=5;

AnsiString s[50][50],s1[50];

//---------------------------------------------------------------------------

void __fastcall TForm1::AMatrExecute(TObject *Sender)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

r[i][j]=random(10);

Memo1->SetFocus();

Memo1->Clear();

for(i=0;i<n;i++){

s1[i]="";

for(j=0;j<m;j++){

s[i][j]=" "+IntToStr(r[i][j]);

s1[i]+=s[i][j];}

Memo1->Lines->Add(s1[i]);}

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ATransExecute(TObject *Sender)

{

int i,j;

for(i=0;i<n;i++)

for(j=0;j<m;j++)

a[j][i]=r[i][j];

i=n;n=m;m=i;

Memo1->SetFocus();

Memo1->Clear();

for(i=0;i<n;i++){

s1[i]="";

for(j=0;j<m;j++){

s[i][j]=" "+IntToStr(a[i][j]);

s1[i]+=s[i][j];}

Memo1->Lines->Add(s1[i]);}

i=n;n=m;m=i;

}

//---------------------------------------------------------------------------

void __fastcall TForm1::ADelExecute(TObject *Sender)

{

Memo1->Clear();

}

//---------------------------------------------------------------------------

 

7. ѕеренесите на форму со страницы —тандарт компонент MainMenu1. ¬ свойство Images внесите ImageList1. ƒвойным щелчком на компоненте MainMenu1 перейдите в окно Form1-> MainMenu1  онструктора ћеню. ¬ свойство Caption головного раздела меню впишите &ћј“–»÷ј. ¬ трех создаваемых затем разделах в свойство Action вносите соответственно значени€: AMatr, ATrans, ADel.  ак показывает »нспектор ќбъектов, при этом в разделы меню перенос€тс€ свойства соответствующего объекта действи€. Ѕолее того, в событие Ц щелчок на разделе Ц подставитс€ обработчик, предусмотренный дл€ данного действи€. “аким образом, если в свойстве Action раздела указать им€ объекта действи€, то свойства и обработчики событий объекта действи€ будут перенесены на этот раздел меню.

8. —о страницы Win32 перенесите на форму инструментальную панель Ц компонент ToolBar1. ѕо умолчанию он расположитс€ вверху, поскольку его свойство Align по умолчанию равно alTop. ”становите Align=alNone, чтобы панели можно было придать любую форму и расположить ее в любом месте.

9. ¬ свойство Hint впишите инструментальна€ панель, в свойство Images внесите ImageList1, в свойства ShowCaptions и ShowHint Ц true. ўелкните правой кнопкой мыши на компоненте ToolBar1 и из всплывшего меню выберите команду Ќова€ кнопка. ¬ свойство Action кнопки внесите AMatr, а в свойство ShowHint Ц true. ѕовторите эту команду еще дл€ двух кнопок, внос€ в свойство Action соответственно ATrans, ADel, в свойство ShowHint Ц true. ќтметим, что свойства и обработчики событий объекта действи€ будут перенесены на соответствующие кнопки инструментальной панели.

10. —о страницы ƒополнительно перенесите на форму три кнопки BitBtn.  нопка BitBtn отличаетс€ от кнопки Button возможностью отобразить на ее поверхности изображение. ¬ свойство Action кнопок внесите значени€ AMatr, ATrans, ADel соответственно, в свойство ShowHint Ц true. ѕри этом свойства и обработчики событий объекта действи€ будут перенесены на соответствующие кнопки BitBtn.

11. ѕосле ввода команды —охранить все запустите приложение на выполнение. ”бедитесь в работоспособности приложени€.

 

ѕримечание. —в€зь между свойствами объекта действи€ и свойствами управл€ющих элементов выполн€етс€ классом TActionLink и его наследниками. ѕередаютс€ такие свойства действи€, как Caption, Checked, HelpContext, Hint, ImageIndex, ShortCut, Visible. ќднако в любом компоненте разработчик может изменить переданное в него свойство. ќбратной св€зи TActionLink с компонентами нет, так что эти изменени€ будут локальными и не отраз€тс€ на других компонентах. ≈сли же требуетс€ изменить свойства всех св€занных с одним действием компонентов, надо измен€ть свойство объекта действи€. Ёто облегчает программное управление компонентами, св€занными с одним и тем же действием.

 

ѕерейдем к рассмотрению другой команды окна –едактора ƒействий Ц Ќовое стандартное действие. ќна открывает окно —тандартные  лассы ƒействи€, в котором можно выбрать из списка необходимое стандартное действие (или сразу несколько действий). ƒействи€ в списке сгруппированы по категори€м. —писок включает 26 действий. —тандартные действи€ охватывают операции редактировани€ текстов (категори€ ѕравка), форматировани€ текстов (категори€ ‘ормат), поиска в текстах (категори€ ѕоиск), работу со справками (категори€ ѕомощь), с файлами (категори€ ‘айл) и другие. ¬ыполним эксперимент, который позволит пон€ть отличие стандартных действий от нестандартных.

1. —оздайте новое приложение и командой —охранить все сохраните файл модул€ и проект. ¬ свойство Caption формы впишите “ест стандартных действий.

2. ѕеренесите на форму компоненты ActionList1 и ImageList1. —ошлитесь в свойстве Images компонента ActionList1 на список ImageList1. ѕерейдите в окно –едактора ƒействий, вызовите окно —тандартные  лассы ƒействи€, выделите в нем все действи€ категории ѕравка и действие TFileExit категории ‘айл, нажмите кнопку OK.

3. ¬ окне –едактора ƒействий увидите, что в список автоматически занеслись выбранные действи€, причем большинство из них имеют пиктограммы, хот€ в компоненте ImageList1 пиктограмм не было. ¬ыделите ImageList1 и убедитесь, что в нем наход€тс€ пиктограммы выбранных действий.

4. ќбратите внимание на то, что каждый вид стандартного действи€ имеет класс, производный от TAction. Ќазвани€ этих классов даны в окне —тандартные  лассы ƒействи€. ¬ »нспекторе ќбъектов также видно, что в стандартные действи€ заложены общеприн€тые значени€ множества свойств: надписи (Caption), подсказки (Hint), Ђгор€чиеї клавиши (ShortCut). Ќо самое главное отличие стандартных объектов действий от нестандартных заключаетс€ в том, что дл€ стандартных действий не надо писать обработчики событий OnExecute. ¬се операции, необходимые дл€ выполнени€ стандартных действий, уже заложены в их объекты. ќни не только не требуют обработчиков событий OnExecute, но могут реализовыватьс€ через Ђгор€чиеї клавиши даже без инициаторов действий Ц разделов меню, кнопок и т.п. „тобы убедитьс€ в этом, продолжите эксперимент. ƒобавьте на форму инструментальную панель ToolBar1 и св€жите ее свойством Images со списком изображений ImageList1. ”становите в ToolBar1 свойство ShowHint в true.

5. —оздайте на инструментальной панели быстрые клавиши дл€ всех действий, имеющих пиктограммы. ¬ каждой новой кнопке ссылайтесь в свойстве Action на соответствующее действие.

6. ƒобавьте на форму окна редактировани€ RichEdit1 и Edit1.

7. ѕосле ввода команды —охранить все запустите приложение на выполнение. ”бедитесь, что вначале доступна только кнопка выхода. ѕричины такого состо€ни€: выделенного текста нет, поэтому нечего копировать или вырезать; редактировани€ не было, поэтому нечего отмен€ть. ≈сли выделить текст в одном из окон редактировани€, то, пока это окно находитс€ в фокусе, будут доступны кнопки  опировать (Copy), ¬ырезать (Cut), ”далить (Delete). ѕроведите какую-либо операцию редактировани€ и убедитесь, что стала доступной кнопка ќтменить (Undo). Ќо если переместить курсор в другое окно редактировани€, где нет выделени€ и не было редактировани€, то эти кнопки станут недоступны.

8. „тобы убедитьс€ в том, что доступ к стандартным действи€м через Ђгор€чиеї клавиши сохран€етс€, даже если в приложении отсутствуют их инициаторы или они недоступны, задайте дл€ действи€ FileExit1, обеспечивающего выход из приложени€, Ђгор€чиеї клавиши Ctrl+E. —делайте невидимой инструментальную панель ToolBar1 (Visible = false) и снова запустите приложение. Ќи один управл€ющий элемент не будет доступен. Ќо все Ђгор€чиеї клавиши будут действовать. Ќажмите Ctrl+E, и приложение закроетс€.

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-10-01; ћы поможем в написании ваших работ!; просмотров: 574 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

¬ы никогда не пересечете океан, если не наберетесь мужества потер€ть берег из виду. © ’ристофор  олумб
==> читать все изречени€...

1297 - | 1223 -


© 2015-2024 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.02 с.