Смотрелка - своими руками

Unforgiven(unfogi@sanet.ru, 60818116)

Что куда коннектится

Дарова, перец. Вот сидишь ты сейчас, наверное, за компом, смотришь картинки. А вот на компе у тебя наверняка для этого дела - для разглядывания картинок - ACDSee стоит. И тыкаешь ты в нее, смотришь порнушку втихаря... Ну ладно, речь-то сейчас не о порнушке. Я тебе о другом говорю. Давай напишем свою прогу для просмотра картинок! Прикинь, приводишь ты к себе подругу, садитесь с ней вместе подозрительные имейджи смотреть, и тут ты как бы случайно тыкаешь мышкой в графу "credits" или, там, "разработчик", а в этой графе - ТВОЕ имя. И ты подружке спокойно так выдаешь: "...а, это меня тут Билл Гейтс, когда мою прогу увидел, приглашал к себе работать - я не пошел, лучше буду писать компоненты для 1С...". Поверь, после этакой тирады дама - какая бы она ни была крутая - твоя! И уж что с ней делать дальше, я тебе не подскажу. Сам разберешься, что куда коннектится :).

Ну ладно, замечтались. Вернемся к нашим баранам. Писать будем на С++ Builder - несложно, визуально - все как положено. Поэтому срочно беги к ближайшим представителям одноглазой расы в тельняшках, покупай там у них Builder C++ (чем свежее - тем лучше), и, если хватит средств, то можешь прихватить какую-нибудь книженцию по программировании на C++ - на будущее. RTFM - было, есть и будет главным правилом любого кодера.

Небо в клеточку - друзья в полосочку

Ты уже наверняка запустил C++ Buider и ничего не понял... какая-то панелька в точечках и куча кнопок. Главное в нашем деле - не бояться, а смело на все жать и испытывать... эээ, погоди ты. Начнем вот с чего: представим себе нашу прогу. Она должна уметь просматривать BMP, EMF, ICO и иже с ними стандартные виндовые файлы графических изображений. Представил? Ну, стандартные такие виндовые менюшки, окошко... Вот и ладушки.

Вернемся к реальности. Билдер запущен. Что ты видишь? Ты видишь три панельки. Верхняя - там различные кнопки и меню. Она, в принципе, самая главная.

Левая панель - Object Inspector. Тут ты будешь задавать свойства всех компонентов и будешь объяснять им, как работать. Об этом, впрочем, чуть-чуть попозже. И еще ты видишь огромную панель, которая вся усыпана точками. Не пугайся. Это сделано специально, чтобы тебе было легче размещать компоненты и не пришлось бегать с линейкой, меряя свой пятнадцатидюймовый (хе-хе, монитор :-)). Именно эта форма - в точечку - будет основой твоей новой супер-хакер-крякер проги под названием Вьювер :-). Сверху ты видишь кучу кнопок - это компоненты (ну, пимпы, меню, панельки, точки) - вот тебе и визуальная среда. Тебе не надо описывать самому каждую деталь программы - ты кликаешь на пиктограмме (во загнул - ну, на кнопке с картинкой, в общем) и потом кликаешь на этой форме, которая в точечку. И что получается? Правильно, в твоей программе появился новый компонент. Теперь надо описать основные свойства компонента (длина, ширина, название, отпечатки пальцев и др.) и, наконец, - самое главное - нужно описать действие объекта на какое-либо событие (например, на клик, на двойной клик, на перемещение мышки етс). Причем, если вся визуальная среда понятна и ламеру - везде надо лишь кликать и выбирать, то описывать события тебе придется на чистом программерском языке С++. Вот, с визуальной средой ты уже и знаком :-).

Давай дело делать

Начнем с менюшки :-). Находишь компонент под названием MainMenu - он находится в закладке Standard (второй слева). Как, ты до сих пор не видишь эту закладку? Не видишь... тогда попробуй включить монитор. Так вот: кликаешь на этой пиктограмме, потом ползешь на свою форму и кидаешь менюху в любое место (она все равно будет на самом верху :-)). Теперь даблкликаешь на пиктограмме, которая на форме уже лежит - вот, ты видишь новую форму, но уже без точек. Называться она должна примерно так: "Form1->MainMenu1". Здесь ты и будешь писать свою первую в жизни пользовательскую менюшку. Слева ты прописываешь в свойстве Caption название меню. Стандартно пишем "Файл", а если ты хочешь быстро обращаться к этому пункту, то подставь в названии еще символ "&" ( получится "&Файл"), и тогда при нажатии Alt+Ф (ф - первая буква слова Файл :)) ты увидишь, как на этой маленькой панельке появилось меню "Файл" - это ты его сделал! Кликаешь на нем, и выскакивает подменю - вот именно им-то мы сейчас и займемся. Ты кликаешь на этом подменю и точно так же, в свойстве Caption, пишешь название "&Открыть" - теперь ты уже видишь готовое подменю с одним пунктом, но на этом мы не остановимся. Точно так же ты прописываешь в подменю "Файл" еще два пункта - "&Закрыть" (не забудь, каждая твоя прога должна классно выглядеть... поэтому впиши в следующем пункте просто черточку (-) и ты увидишь, что произойдет) и "&Выйти". Вот мы и описали систему менюшек - создали, так сказать, базу интерфейса. Теперь ты находишь в закладке Dialogs компонент "OpenPictureDialog", по старой технологии кликаешь на нем и кидаешь на форму. Ты уже заметил, что на твоей главной форме появилось то меню, которое ты только что написал? Оно уже вполне работает, осталось только описать его действия. Ты кликаешь на пунктах подменю и описываешь действия, связанные с этими пунктами. Например, в подменю "Открыть", после даблклика, ты увидишь, как выскочит что-то типа блокнота вот с таким текстом:

void __fastcall TForm1::N2Click(TObject *Sender) - вызов функции из класса

{ - начало функции

- тело функции

} - конец функции

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

void __fastcall TForm1::N2Click(TObject *Sender)

{

if(OpenPictureDialog1->Execute())

{

Image1->Picture->LoadFromFile(OpenPictureDialog1->FileName);

}

}

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

Опишем оставшиеся подменю. Смонтируем подменю "Закрыть". Точно так же кликаешь на нем и прописываешь меж фигурных скобок вот эту строчку:

Image1->Picture=NULL;

И самое последнее подменю - "Выйти" - описываем так (меж фигурных скобок):

Form1->Close();

 

Кончина

Теперь осталось кинуть на форму последнюю пару компонентов, и нашу супер-прогу можно уже продавать - если, конечно, ты раскрутишь ее, то она наверняка сможет конкурировать с прогами Майкрософт :-). Ну вот: находишь в закладке Additional компонент под названием "ScrollBox" и кидаешь его к себе на панельку. Ищешь в панели свойств "Align", кликаешь по нему и выбираешь там "alClient". Теперь в той же закладке ищешь компонент Image, кидаешь его на панельку (кстати, ты уже заметил, что твой компонент ScrollBox занял всю панель? Так и должно быть - верным путем идете, товарищи!). Описываем компонент "Image" - находим свойство "AutoSize" и устанавливаем его в значение true... Все! Прога готова. Осталось только из исходных кодов сделать исполняемый модуль - откомпилировать программу. Для этого ищешь в верхнем меню Project подменю Build AllProject (или просто всевозможный Build) и нажимаешь BuildAll. Компилятор несколько минут помучается (в зависимости от производительности твоей тачки может мучаться и часами) и... Вот ты и получил ЕХЕшник. И можешь юзать свою прогу по полной программе. А вообще-то, это всего лишь легкий примерчик - возможностям C++ Builder нет предела. Ты скоро поймешь это, если, конечно, не будешь лениться :). Удачи!

ACDSee - отличная программа, но ее тоже написали. Причем тоже живые люди и тоже голыми руками. А тебе слабо? Просто открой эту статью, садись за комп и... вперед! Максимум - 15 минут, и у тебя в руках - твой собственный аналог этой проги (правда, чуть попроще, но зато - СВОЙ).

А ты когда-нибудь слышал про визуальную среду программирования? Если нет, то, наверно, плохо слушал или забыл вынуть тампоны из ушей после сна. Все крутые программеры, которые не хотят тратить много времени на разработку проги, используют именно компиляторы с поддержкой визуальной среды программирования. Для тебя это тоже лучший из вариантов.



Опубликовал admin
12 Дек, Пятница 2003г.



Программирование для чайников.