Программирование
Веб программирование

Visual Basic калькулятор

 
 

Сегодня 27.12.02 и у меня радости полные штаны! Я по химии ПОЛУЧИЛ 4. Я сам не знаю как я это сделал, нифига я ей не ответил, но за что - то она мне поставила. И от радости я написал статью "Самоуничтожитель компа", если ты хочешь над кем - нибуть прикольнуться, то в ближайшем будущем мы будем делать всякие приколы (Начиная со 2 - ой части), а если тебе не в терпеж, и ты толком не зная языка, хочешь над кем - нибуть прикольнуться, то можешь прочитать урок "Урок 25 - Делаем самоуничтожитель компа" , в ней даже не нужен редактор VB(тебе нужен блокнот (текстовой документ), или любой другой текстовой редактор, а это к счастью дается с виндом. Если у тебя по какой - то причине не открывается, то в самом начале 3 части эта статья есть. Что - то я заболтался (это от радости), ну что ты готов сделать свою первую серьезную программу? да. Не слышу. Да! Децл погромче. ДА Я ХОЧУ СДЕЛАТЬ КАЛЬКУЛЯТОР!!! Фу бля, не ори на ухо, ты меня оглушил...

Ну, если ты готов, тогда приступим. Как всегда входим в VB, кликаем на Standart EXE. Помещаем на форму 3 текстовых поля, со свойством Text равным: у первых двух без текста, а у 3-его равным 0(это можно сделать в окне свойство объекта, или написать код Text1.Text="",Text2.Text="",Text3.Text="0",я рекомендую все свойства писать только кодом, так ты быстрее освоишь язык), и 5 кнопок со свойством Caption равным:
У 1-ой CE
У 2-ой X
У 3-ей /
У 4-ой +
У 5-ой --

Как это делать ты должен знать (в окне свойство объекта, или кодом Command1.Caption="CE"...,естественно в поле Form onLoad(кликни два раза по форме))
У тебя должна получиться такая штука:

Теперь код:

Private Sub Command1_Click()
Text1.Text = "" 'при нажатии на кнопку CE, у двух текстовых полей свойство Caption будет равным " ", а 3-его будет равным 0
Text2.Text = ""
Text3.Text = "0"
End Sub

Private Sub Command2_Click() 'при нажатии на кнопку *, 1 текстовое поле будет умножено на второе, и это будет равно 3-ему
Text3.Text = Val(Text1.Text) * Val(Text2.Text)
End Sub Private Sub Command3_Click() 'при нажатии на кнопку /, 1 текстовое поле будет разделенно на второе, и это будет равно 3-ему If Val(Text2.Text) <> 0 then Text3.Text = Val(Text1.Text) / Val(Text2.Text) Else Text3.text="Ошибка: На нуль делить нельзя"
End Sub Private Sub Command4_Click() 'при нажатии на кнопку +, 1 текстовое поле будет прибавлено ко второму, и это будет равно 3-ему Text3.Text = Val(Text1.Text) + Val(Text2.Text) End Sub Private Sub Command5_Click() 'при нажатии на кнопку --, 1-ое текстовое поле будет отнято от второго, и это будет равно 3-ему Text3.Text = Val(Text1.Text) - Val(Text2.Text)
End Sub Private Sub Form_Load() Form1.Caption = "Калькулятор 2003" 'при загрузке формы, ее заголовок будет "Калькулятор 2003" End Sub


Теперь я хотел бы пояснить что такое Val(при прибавлении см. выше в коде), это функция, она нужна для того, чтобы комп преобразовывал символ из строки, в число, т.е., допустим если ты напишешь без нее, то при прибавлении 4+4, у тебя будет не 8, а 44. Ну вроде объяснил. Исходник программы можешь скачать отсюда


Есть вопросы? Спроси на нашем форуме!!
ВОЛОДЬKА [06.04.2010 22:56]

у тя недочет на command3 т.к. если ввести во второе окно 0! прога не будет радотать!

Совенок [16.05.2010 20:10]

тоже что выше только русским языком. Проблема в том что на ноль делить нельзя... Но все же хотелось попытаться

Артём [30.07.2010 17:56]

Спасибо!

Кирилл [14.08.2010 16:26]

а как сделать калькулятор с одной строкой?

hmmm [23.08.2010 22:30]

2 Кирилл
---------------------------
1) Вписываешь в textbox число
2) По нажатию на кнопку (допустим "+"), присваиваешь числовое содержимое textbox'a переменной A и очищаешь текстовое поле.
3) Вписываешь в textbox второе число
4) Нажимаешь равно - содержимое textbox'a присваивается переменной В. Значение суммы A+B присваивается переменной C. Textbox очищается. Затем значение переменной C выводится в textbox.

кампот(compod) [03.10.2010 14:02]

тут тяжелого не че нет т0)) не понять это грех полнейший....

Гость [20.11.2010 21:47]

Проблемы деления на ноль нет!
просто дописать к комманд3:
If Text2.Text = 0 Then Text3.Text = "дел на 0!"
и всё! Программа отлажена!!!))

Дмитрий [17.03.2011 14:05]

Ну да или пользоваться Try Catch Finaly

Женя [17.03.2011 22:16]

Да я канешно начинающий 2 дня на проге но я не пойму от куда Command1_Click() взялось???
Добрые люди подскажите

Рустем [01.04.2011 15:00]

классно! все получилось с первого раза!

Ashot [06.04.2011 04:51]

Privet Padre. U menya est vopros. Mojno vmesto text3 postavits label ? Pri mojeniyu vixodit tak:
Private Sub CommandN_Click()
LabelN.Caption = text1.text * text2.text
End Sub

Кащей [10.04.2011 00:18]

2 Женя
Надо 2 раза кликнуть по кнопке на форме и компилятор (это VB) сам сгенерирует этот текст. или можно самому написать - ошибкой не будет. Между Private Sub Command1_Click() и End Sub распологается код, который выполняется при нажатии на кнопку.
З.Ы. Command1 - это имя кнопки, имя и название могут быть разными

Кащей [10.04.2011 00:20]

2 Ashot
Лучший способ всё узнать - попробовать самому

Smitty [26.05.2011 17:49]

Стрелочки вперед-оглавление-назад пропали :( Абыдна

Гость [26.05.2011 17:50]

А-а-а. Не пропали. Это я их потелял :)

Сергей [30.05.2011 17:47]

Напишите статью с созданием dll на VB

полина [31.05.2011 12:13]

а можете мне кинуть файл калькулятора на adm!adm@adm-arch.ru
была бы очень признательна, так как очень хочу зачет по информатике)

полина [31.05.2011 12:14]

adm@adm-arch.ru то есть

папк [26.07.2011 14:39]

пкп

Паша [26.07.2011 14:41]

какого чл*ена?

я вообще не могу сделать?
VB 6.0 вроде норм,а ни хрна((((

как вот мне написать text1.text = ""

он все ровно в графе пишет Text1!!!

dentalon [19.08.2011 12:10]

Вы не пробовали через Val()?

dentalon [19.08.2011 12:11]

Тогда может не +, а & ?

Игорь [07.09.2011 18:04]

А как корень извлекать?

Михаил [05.10.2011 22:22]

кампот(compod) При добавлении If Text2.Text = 0 Then Text3.Text = "дел на 0!" После основного Text3.Text = Text1.Text / Text2.Text он все равно выдает ошибку, т.к он выполняет сначала десвие Text3.Text = Text1.Text / Text2.Text, а затем If Text2.Text = 0 Then Text3.Text = "дел на 0!", при перемены их местами, он дает нужное, но все равно выполняет 2е действие, и следовательно ошибка. Как от неё исбавиться?Ну или как при получении нужного результата, она не читала 2ю команду?

Михаил [05.10.2011 22:51]

Все, не надо, нашел в следующих главах

Гость [11.10.2011 19:44]

постоянно выдает какие то ошибки((((

алексей [12.11.2011 17:13]

корень- text3=sqr(val(text1))
квадрат - text3=val(text1)^2
степень - text3=val(text1)^val(text2)
чтобы небыло ошибки - if val(text2)=0 then
msgbox "На ноль делить нельзя!!"
text1="" : text2="" : text3=0
else
text3 = val(text1)/val(text2)
end if

Андрюха [08.12.2011 23:26]

люди, а как сделать типа чтобы цыфры вводились не с клавы, а как на обычном калькуляторе, с кнопками?

Андрюха [08.12.2011 23:46]

и ещё, как сделать кнопки, поприятнее на вид... ну хотя бы как на ХР SP3

Юра [09.12.2011 00:54]

Private Sub Command1_Click()
Me.Text1.Text = Me.Text1.Text + ("1")
End Sub

Гость [09.12.2011 10:19]

Алгоритм калькулятора с вводом и выводом значений разжеван тут http://vbbook.ru/forum/viewtopic.php?id=166

Андрюха [10.12.2011 00:46]

Юра, немного неработает... у меня 3 текстовых поля, и если я нажимаю кнопку 1, то в 1-м поле появляется число, но я нажимаю мышкой, на второе поле, нажимаю кнопки, а оно всё равно пишет в 1-й строке... пытался исправить, но новичок - немсмог...

Юра [10.12.2011 10:47]

Попробуй сделать через массив.

Андрюха [11.12.2011 02:10]

я незнаю как... я же говорю, что новичёк

алексей [11.12.2011 11:11]

андрюха, связь есть ???

алексей [11.12.2011 11:32]

андрюха, Скайп есть ???

Андрюха [12.12.2011 23:39]

да, есть
valyance

Андрюха [12.12.2011 23:40]

желательно поскореее)))) мне завтра работу здавать(

РУСЛА [15.12.2011 15:42]

СПОСИБО ТУТ Я НАЧИЛЬСЯ УДАЛИТ СО СТРОЧКИ ЦИФРЫ .....

User_VectorXr26 [23.01.2012 17:53]

Я уже подобное делал. Вот бы сделать чё-нибудь наподобие стандартного калькулятора в винде...

Маск [21.03.2012 21:14]

Спасибо большое! Только на кнопке + должен быть такой код:

Dim A
Dim B
A = Val(Text1.Text)
B = Val(Text2.Text)
Text3.Text = A + B

Юра (Shade) [22.03.2012 08:55]

Маск, где ты прописал Dim A дам тебе советик, не делай такое объявление, лучше так Dim A as long, а так как ты объявил по умолчанию будет Variant

Roman [28.03.2012 19:58]

Это все очень просто, но есть и более простые способы создать калькулятор с более высоким функционалом, например используя Excel библиотеку , и проще и функционал можно значительно повысить могу поделиться опытом. Где будем писать? VB6 или VB.net

geranazavr555 [07.04.2012 17:48]

Согласен с Юрой. То есть будет так:
Dim A as Long, B as Long
A = Val(Text1.Text)
B = Val(Text2.Text)
Text3.Text = A + B

Alex [10.05.2012 16:52]

Парни ! а как в Hex посчитать?

Diamock [10.05.2012 19:10]

В VB есть встроенные функции:
Hex и Hex$

Alex [11.05.2012 18:18]

это из DEC->Hex. а наоборот?

Diamock [11.05.2012 19:58]

CDec: Returns a variant with a value converted to a decimal subtype.
Пользуйся Object Browser. Клавиша F2.

Alex [12.05.2012 10:41]

C = Conversion.CDec(Val(Text1.Text)) так пробовал , буквы не видит a-f, ткни в нужном направлении

Alex [12.05.2012 12:06]

разобрался сам
C = Conversion.CDec(Val("&H" & Text1.Text))

Валера [25.10.2012 19:25]

запустил: не вводятся цифры с клавиатуры... так должно быть или я что-то не так сделал???

Валера [25.10.2012 19:29]

п.с. запустил и сначала сбросил СЕ - норм, а дальше в не вводятся цифры.. но и ошибку не выдает.. вообще никакой реакции.. если пробуешь делать операцию, тогда выдает ошибку №13: "несовпадение типов"

Валера [25.10.2012 19:34]

Все, норм, разобрался.. ) (сорри)

пупкин [01.11.2012 23:19]

У меня такая жк проблема как у валеры помгите плз не мгоу гразобраться

Met [02.11.2012 02:11]

Ошибка в коде надо писать text3 = val(text1) + val(text2)
А так же все остальные.

asd [21.11.2012 14:56]

Dim A as Long, B as Long
A = Val(Text1.Text)
B = Val(Text2.Text)
Text3.Text = A + B
kuda eto vvodit'?

Сашуня [12.12.2012 13:27]

всё ясно

sjSoa [16.03.2013 14:50]

ясно

Ivan40 [28.07.2013 21:35]

А как в описанном в этом уроке VB-калькуляторе десятичные числа переводить в двоичные и наоборот? То же самое насчёт шестнадцатиричных...

zhozhek30 [06.11.2013 12:31]

как сделать вот это:
Text1.text = Text1.text - последний символ

zhozhek30 [06.11.2013 12:33]

заранее спасибо

Stertor370 [06.11.2013 15:06]

Ну ты логически сам подумай: от длины текста отнять 1.

А выглядеть это будет так: text1.text=left(text1.text,len(text1.text)-1)

Stertor370 [06.11.2013 15:07]

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

ReDoX170 [08.11.2013 14:49]

Stertor, Супер - крутой "Делфи" не одарен всеми библиотеками для "Серьезных прог".

Shade970 [08.11.2013 16:18]

Если хочешь писать серьезные проги, учи C#, C++

Shade970 [08.11.2013 16:18]

Будущее за C#

Edward300 [08.11.2013 23:27]

ReDoX, с чего ты реши что Delphi не подходит для серьёзных программ?
Почитай в интернете сколько полезных программ на нём уже написали.

zhozhek30 [09.11.2013 21:42]

Stertor, большое спс!

ReDoX170 [10.11.2013 09:05]

Edward, Существует много древних библиотек, с помощью которых не напишешь "Серьезных" программ.

Edward300 [10.11.2013 12:18]

ReDoX: Aimp не серьёзная программа?

Stertor370 [10.11.2013 21:32]

проблема в том, что на делфи в основном пишут десктопный софт, а системный чаще на c/c++, так как больше контроля над перформансом (из-за этого за дельфей закрепилась дурная слава, якобы приложения, созданные на ней "медленные"). Зато для того, чтобы написать на сишке даже простенькое приложение, нужно попотеть. А попытка создать приложение с формой может напрочь отбить охоту писать программу дальше. Достоинства Делфи - относительная простота, быстрота и легкость при разработке. Если кто-то гоняется за скоростью - пишите на win api или пишите с ассемблерными вставками - будет работать точно так же, как c++.

krisstenly [08.12.2013 15:23]

я сделала калькулятор,но проблема в том,что у меня 2 текстовых поля для ввода переменных,а одно для вывода ответа,когда я нажимаю на кнопку "1",то пишет только в одно текстовое поле,пытаюсь ввести во второе,но ничего не получается,что делать?

0du14ik [02.01.2014 18:03]

В строках:

Private Sub Command2Click() 'при нажатии на кнопку *, 1 текстовое поле будет умножено на второе, и это будет равно 3-ему
Text3.Text = Val(Text1.Text) * Val(Text2.Tex)
End Sub

Private Sub Command3
Click() 'при нажатии на кнопку /, 1 текстовое поле будет разделенно на второе, и это будет равно 3-ему
If Val(Text2.Text) 0 then Text3.Text = Val(Text1.Text) / Val(Text2.Tex) Else Text3.text="Ошибка: На нуль делить нельзя"
End Sub

Допущены ошибки, вместо "Text2.Tex" нужно писать "Text2.Text"

alex13sh300 [02.01.2014 22:42]

0du14ik, Спасибо, Исправили

alex13sh300 [02.01.2014 22:50]

krisstenly, я так понимаю, у вас 2 текстовых поля , в которые надо вводить числа через кнопочек на форме?
если да, то вам нужно сделать эти 2ва поля одним именим разным индексом (т.е. массив объектов), это для динаммичного ввода текста имея аргумент (индекс поля). Дальше нужна переменная для хранения индекса Активного поля (Активное поле - то поле, на которое вы кликнули мышкой для активизации, и в нём появился мигающий курсор).
Ещё нужно найти это активное поле, это через ряд процедур (Focus) объекта ТекстБокса



Оставлять комментарии можно только зарегистрированным




Предупреждение: Вся информация представлена исключительно в образовательных целях.
Ни авторы, ни администрация не несут ответственности в случае ее использования в противозаконных целях.