Форма във Форма

9 отговора 374 прегледа
#1

Форма във Форма

ИЗВИНЕТЕ, ЧЕ НЕ ПИША НА КИРЕЛИЦА КАТО БЪРЗАМ.

ИСКАМ ДА НАПРАВЯ НИЯКОЛК ПРИПОКРИВАЩИ СЕ ФОРМИ, КОИТО ДА МОГАТ ДА СЕ ПРЕВКЛУЧВАТ КАТО МЕНИУТАТА НА WIN НАПРИМЕР. (само в горната част се виждат всички форми)

Някои може ли да ми обиасни деиствието на ини_фаиловете.
(или хубав линк)
Надиажам се, че не питам "много" ...

Отговор
в отговор на PAДУШ #2

Re: Форма във Форма

баси, отдавна не бях виждал толкова правописни грешки в единица текст на КИРЕЛИЦА.
А и въпроса не го разбрах.
..
Май не трябваше да се обаждам "изобщо" :)

Отговор
в отговор на PAДУШ #3

Re: Форма във Форма

Е, определено ще е по-лесно, ако не бързаш толкова много.

"Припокриващи се форми" могат да се направят по много начини, но определено най-приятно ще бъде да е лесно. Сега, защо искаш точно форми да бъдат, а не TabStrip например. Нали си виждал диалоговите прозорци за настройки, как имат отгоре няколко "листчета", по които ако кликаш - се сменява съдържанието на прозореца. Един вид - няколко прозореца, в които има различни компоненти, и може да ги превключваш. Ако това ще ти свърши работа, използвай "SStab", малко по-интелигентен е.

INI файловете нямат определено действие. Хората ги използват, за да си "запомнят" разни неща, които са индивидуални за програмата. Например, ако пишеш програма за чатене, можеш да си "запомниш" в такъв файл името на сървъра за кънектване, за да не го пишеш всеки път при стартиране на програмата. Например при стартиране на програмата тя да си чете INI файла, и да взема определени настройки от него, а при затваряне напрограмата - да си ги записва обратно във файла, за да ги ползва следващия път.

Ето например как бих "запомнил" в INI файл размера и позицията на прозореца, за да се отваря всеки път на едно и също място:
[Window]
Left=150
Top=400
Width=2600
Height=4000


Така при стартиране - програмата ще "прочете" тези стойности, и ще може да си позиционира главната форма по тях. След преместване на прозореца тези данни в INI файла може да се запишат пак там, защото самата програма няма къде на друго място (освен разбира се в регистъра), където да знае какво е правила при предишно стартиране. Не че не може да се направи дори база-данни, но ще бъде безсмислено.

...

Абе, имам готови модули за четене/запис в INI файл и в регистъра. Обади се, ще ти ги дам.

Отговор
в отговор на Microsoft #4

Re: Форма във Форма

сЕгУрно чУвекЪ е иЗкЪл да звОчи по-аФторитетно, бързаИки и грешеИки на кирЕлица, може пък дЪ е забравил бАлгарскиАт езиГ

Наведи главата защото прелитам ниско с асконата !!!
Отговор
в отговор на PAДУШ #5

Re: Форма във Форма

Всъщност съм забравил да спомена, че INI файловете останаха като стандарт от Windows 3.1х. Да кажем - всички 16-битови програми си записват настройките в INI. В съвременните операционни системи Регистърът замества всички тези INI файлове, и дава възможност на програмистите да пазят настройките си там.

Лично мен ме дразни препълването на регистъра с излишни класове, асоциации на файлови разширения, и т.н. глупости, и на по-бавна машина това значително се усеща в скоростта. Затова аз лично все още предпочитам да правя индивидуален INI файл за всяка програма поотделно, които настройки записани в него няма да заемат памет, нито ще пречат на четенето от хард-диска, ако програмата не бъде стартирана. Също така повечето ми програми нямат нужда от инсталиране, и тръгват само с копиране. Така че когато, където, както и защото някой копира програмата на друго място - тя ще продължи да си работи по същия начин без проблем.

Отговор
в отговор на Щиpлиц #6

Re: Форма във Форма

Абсолютно подкрепям тезата както за използването на INI вместо registry, така и за отсъствието на инсталатори. Аз обаче практикувам (не че имам една безкрайно дълга практика) друго. Все пак записвам един ключ в registry, НО САМО ЕДИН ЕДИНСТВЕН и той е с пътя, където съм инсталирал програмата (е да де, тук нарушавам и другата теза, да няма инсталатори), за да могат други мои творби при нужда да я откриват.

Друго, което практикувам: когато имам инсталатор, задължително посочвам какво ще правя, за да може технически и компютърно грамотните хора да не се притесняват, че инсталаторът ще запише нещо по машините им, без те да знаят какво! Мен лично поне това винаги ме е дразнело- инсталирам Adobe Acrobat и той пипа където не му е работа и аз дори не знам къде- бах го у нахалното същество. После откриваш, че Word вече има 60 вградени макроса от Adobe!

А относно инсталаторите, обикновено ги ползвам за пакетиране, но не и за промяна на user настройките! А също и за автоматично конфигуриране на инсталираното. Съгласен съм, че за целта може да се ползва zip/rar и програмата сама да си прави настройките, обаче...

А, забравих още едно приложение- преди време се случи да правя система на сървър, в която в web има форма, която се попълва, след което се submit към сървъра, той я обработва, стартира един CMD генератор на инсталации със съответните параметри и генерира инсталационното exe по заявените от посетителя във формата параметри, след което го дава да човека за download. Общо взето нещата станаха културни и работеха относително бързо. Бях много доволен...

БАба...


Ама баба не е жена, вие не знаете ли?

Редактирано от БaбaИлиицa на

Отговор
в отговор на БaбaИлиицa #7

Re: Форма във Форма

Ami niama da pisha na kitElica poveche togava

Znachi blagodaria na Baba i na G-n Tihonov (ne oвicham da se podigravam-samo se sheguvam).

Vsysnost vyprosyt mi e tochno kakto go e razbral Чovekyt ot razuznavaneto.
C "listcheta"!
Moje li da se vkara ini-file sys vsichkite mu saltanati v takova menu (ili Forma) po prinzip?

....ne che byrzam a prosto niamam trening v spisvaneto na kirElica.

Moje li da pisha mail na Baba?
Ako kolegata ot razuznavaneto moje da mi prati razni raboti neka go napravi na:

[email protected]

Blagodaria predvaritelno!


Роса ме роси....


Отговор
в отговор на RadUsh #8

Re: Форма във Форма

Ми да ми пишеш можеш... що да не можеш? :)

Обаче държа да знаеш, че се занимавам с VB от около два месеца и не съм най-подходящият човек за дискутиране. Иначе се занимавам с програмиране от 6 години (не от 6 годишен :) ) Но съм специалист в други области, а VB взех да го чопля, за да стана всестранно развита баба :)

БАба...

P.S. Ако пишеш, можеш на [email protected] за сега (щото скоро може да го спра) и на ICQ 151539721


Ама баба не е жена, вие не знаете ли?
Отговор
в отговор на RadUsh #9

Re: Форма във Форма

Не знам кой е Тихонов. Мен обикновено ме знаят като майор Исаев. ;о)))) (пак на майтап де).

Значи можем да пообсъдим туй-онуй, не е никакъв проблем, но по мейла ми е пълна скръб. Сякаш съм в средновековието. Нека да си пишем тук, аз минавам през клубовете средно по 6-7 пъти на ден (нощ). Ако имаш нещо като проект по който да доработим нещо - тогава по мейла.

Сега тук ще драсна само няколко бегли понятия за Tab контролите.

Обикновено програмистите на VB почват използването на Tab със оригиналния Tab контрол на VB. Но той е меко казано неудобен. Защото винаги трябва във развойната среда да правиш Frames, в тях да си слагаш отделните контролченца, и после в кода да опишеш и преместиш всеки фрейм поотделно на която страница трябва да бъде. Не съм го ползвал.

Във тул-бокса отляво (ако не си го преместил) кликаш с десен бутон, и избираш "Components...". От появилия се диалог намираш и слагаш отметка на "Microsoft Tabbed Dialog Control", после "OK". И след това към другите контроли в тул-бокса ще се появи и този "SSTab". Изрисуваш го върху формата, и можеш да редиш елементчета директно върху тях още в развойната среда на VB. Но рисуването на контролчетата трябва да става вътре в този SSTab, а не отстрани, и после да ги местиш върху него. Обръщението към тези контроли в SSTab си става както обикновено, сякаш техния контейнер е формата. Толкова за това.

Сега да разнищим малко и как да си организираш един Properties диалог.
Правиш една форма, слагаш SStab (а ако не са много настройките - може и без него), и редиш чек-боксчета и т.н. неща за всяка настройка поотделно, или както сметнеш за необходимо. Във събитието Form_Load() на тази форма пишеш код, който проверява състоянието на разни променливи, с които работиш в проекта. Например някоя булева променлива, която ти означава състоянието на главната форма дали да е Always On Top. И тя ще има стойност True или False. Та във формата може да имаш чек-бокс за това, наименуван "chkOnTop", и пишеш във Form_Load() така:
chkOnTop.Checked = IIf(blnOnTop, vbChecked, vbUnchecked)

Това е с една малка проверка за състоянието на тази булева променлива, и при зареждане на формата, в зависимост от нейното състояние - ще се чекне, или няма да се чекне този чек-бокс.

След това при потвърждаване с "ОК" имаш събитие cmdOK_Click(). Та в него описваш следното:
blnOnTop = IIf(chkOnTop.Checked = vbChecked, True, False)
Unload Me


И така при затваряне на формата, в зависимост дали са променени чек-боксовете - ще се дадат нови стойности на променливите, с които работи програмата.

Записите и четенето на променливите в/от INI файл става със съответния модул, за който вече ти споменах, че мога да ти го дам ако се обадиш.

Отговор
в отговор на Щиpлиц #10

Re: Форма във Форма

Az ste se obadia, no po kysno.

Blagodaria

Отговор