|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Связка ComboBox с Button
Всем привет. Помогите, пожалуйста. Я мега-новичок и пытаюсь написать программу для расчета оптимального автомобильного маршрута примерно как здесь.
В общем я создал две ComboBox и Button: Так как я мега-новичок в Delphi и еще много не знаю у меня несколько вопросов: 1. Как можно сделать так, чтобы выбранное значение ComboBox1 присваивалось переменной? 2. Я хочу сделать структуру IF (условие), и если оба ComboBox пусты, то будет выводиться сообщение ('Заполните поля!'). Вот как-то так. Помогите, пожалуйста. |
#2
|
||||
|
||||
Цитата:
Код:
procedure TForm1.Button1Click(Sender: TObject); var str: String; begin // 1) Считываем в переменную str выбранное в ComboBox1 значение: str := ComboBox1.Text; // 2) Проверяем чтобы был заполнен хоть один ComboBox: if (ComboBox1.Text = '') and (ComboBox2.Text = '') then begin ShowMessage('Заполните поля!'); Exit; end; ..... end; |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
KVESTOR (30.04.2014)
|
#3
|
||||
|
||||
Цитата:
|
#4
|
||||
|
||||
Цитата:
Код:
if (ComboBox1.Text = '') or (ComboBox2.Text = '') then |
Этот пользователь сказал Спасибо poli-smen за это полезное сообщение: | ||
KVESTOR (30.04.2014)
|
#5
|
||||
|
||||
А я вот написал тут еще немного строк кода:
Код:
if (ComboBox1.Text = 'Москва') and (ComboBox2.Text = 'Новосибирск') then begin ShowMessage('Ваш путь лежит через города Нижний Новгород, Казань, Уфа, Челябинск, Омск. Протяженность маршрута 3410 километров.'); end; Exit; Но вот ничего не работает. Просто ничего не происходит... Последний раз редактировалось KVESTOR, 30.04.2014 в 18:18. |
#7
|
||||
|
||||
Оффтоп:
Цитата:
Небольшая переделка Код:
const ns: array[0..49] of string = {0 } ('Москва', {1 } 'Санкт-Петербург', {2 } 'Новосибирск', {3 } 'Екатеринбург', {4 } 'Нижний Новгород', {5 } 'Казань', {6 } 'Самара', {7 } 'Омск', {8 } 'Челябинск', {9 } 'Ростов-на-Дону', {10} 'Уфа', {11} 'Волгоград', {12} 'Красноярск', {13} 'Пермь', {14} 'Воронеж', {15} 'Саратов', {16} 'Краснодар', {17} 'Тольятти', {18} 'Тюмень', {19} 'Ижевск', {20} 'Барнаул', {21} 'Ульяновск', {22} 'Иркутск', {23} 'Владивосток', {24} 'Ярославль', {25} 'Хабаровск', {26} 'Махачкала', {27} 'Оренбург', {28} 'Новокузнецк', {29} 'Томск', {30} 'Кемерово', {31} 'Рязань', {32} 'Астрахань', {33} 'Пенза', {34} 'Набережные Челны', {35} 'Липецк', {36} 'Тула', {37} 'Киров', {38} 'Чебоксары', {39} 'Калининград', {40} 'Курск', {41} 'Улан-Удэ', {42} 'Ставрополь', {43} 'Магнитогорск', {44} 'Брянск', {45} 'Иваново', {46} 'Тверь', {47} 'Белгород', {48} 'Сочи', {49} 'Нижний Тагил'); procedure TForm1.FormCreate(Sender: TObject); var i: integer; begin for i := 0 to 49 do begin ComboBox1.Items.Add(ns[i]); ComboBox2.Items.Add(ns[i]); end; end; procedure TForm1.Button1Click(Sender: TObject); begin if (ComboBox1.ItemIndex = -1) and (ComboBox2.ItemIndex = -1) then begin ShowMessage('Выберите начальный и конечный город!'); Exit; end; if ComboBox1.ItemIndex = -1 then begin ShowMessage('Выберите начальный город!'); Exit; end; if ComboBox2.ItemIndex = -1 then begin ShowMessage('Выберите конечный город!'); Exit; end; if ((ComboBox1.ItemIndex = 0 {Москва} ) or (ComboBox2.ItemIndex = 0)) and ((ComboBox2.ItemIndex = 2 {Новосибирск}) or (ComboBox1.ItemIndex = 2)) then begin ShowMessage('Ваш путь лежит через города ' + ns[4] + ', ' + {Нижний Новгород} ns[5] + ', ' + {Казань} ns[34] + ', ' + {Набережные Челны} ns[10] + ', ' + {Уфа} ns[8] + ', ' + {Челябинск} ns[7] + {Омск} '. Протяженность маршрута 3410 километра.'); end; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
KVESTOR (03.05.2014)
|
#8
|
||||
|
||||
А что значит -1?
Код:
ComboBox1.ItemIndex = -1 Последний раз редактировалось KVESTOR, 03.05.2014 в 10:08. |
#9
|
||||
|
||||
А все, я понял. Это типа счет начинается с 0, 0 - это Москва, а -1 это значит дефолтное значение, то есть "Выберите начальный город".
Последний раз редактировалось KVESTOR, 03.05.2014 в 10:09. |
#10
|
||||
|
||||
А можно ли как-то сделать, чтобы еще при выборе одинаковых городов выводилось сообщение типа: "Выберите другие города!"?
Последний раз редактировалось KVESTOR, 03.05.2014 в 10:08. |
#11
|
||||
|
||||
Цитата:
Код:
if ComboBox1.ItemIndex = ComboBox2.ItemIndex then begin ShowMessage('Выберите другие города!'); Exit; end; З.Ы. <DELETED> Спасибо за понимание Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 03.05.2014 в 10:16. Причина: ремарка |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
KVESTOR (03.05.2014)
|
#12
|
||||
|
||||
Цитата:
|
Этот пользователь сказал Спасибо KVESTOR за это полезное сообщение: | ||
Alegun (03.05.2014)
|
#13
|
||||
|
||||
Я тут посчитал, если я буду дописывать эту мини-программу. То мне придется сделать 2500 записей. Сперва из Москвы в 50 других крупных городов, потом еще остальные 49 городов... Если использовать:
Код:
if (StartCity.ItemIndex = 0) and (FinalCity.ItemIndex = 1) or (StartCity.ItemIndex = 1) and (FinalCity.ItemIndex = 0) then begin |
#14
|
||||
|
||||
Что поделаешь, придётся, поскольку у вас изначально "бейсиковый" алгоритм задуман - для каждого маршрута готовый ответ. Лучше бы конечно вогнать в массив не ответы, а только последовательности городов (напр. '0-2:4,5,34,10,8,7=3410') так проще выводить результат. Ещё вариант хранить растояния от города к городу и потом их складывать в соответствии с последовательностью - (0-4 + 4-5 + 5-34... итд.) Цифр так много, но зато всё расчитываться будет автоматом
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
KVESTOR (03.05.2014)
|
#15
|
||||
|
||||
Про "вгон" в массив последовательности городов я понял. Там все равно придется описать 2500 вариантов, вроде. Но вот про расстояния — не понял.
|