PDA

Просмотр полной версии : [Помогите!] Кнопка с тремя значениями/Caption'ами


ɱάуßƩ
09.02.2013, 02:47
Предисловие: Кнопка называется "Да", при нажатии она меняется на "Нет", и обратно, это просто! Так ведь?!:

procedure TForm1.Button1Click
if button1.Caption='Да' then
button1.Caption:='Нет' else
button1.Caption:='Да';

Столкнулся с такой проблемой: Как на одну кнопку, поставить три значения. А точнее 3 названия кнопки и 3 действия. Хотелось бы чтоб менялось с первого наименования на второе, с второго на третий, с третьего обратно на первый. А проще говоря: Да>Нет>Наверное>Да>Нет... и так по кругу. Каждый раз при нажатии на кнопку она переименовывается в следующую как я и показал выше (Принцип клавиатуры тоже подойдет - EN>RU>DE>EN>RU...).
Помогите пожалуйста разобраться, и как мне написать этот код.

metraz
09.02.2013, 03:00
procedure TForm1.Button1Click
case a of
1: button1.Caption='Да';
2: button1.Caption='Нет'
3: button1.Caption='Наверное'
end;
if a=3 then a:=1 else inc(a);
end;


a некоторое число типа byte, ему надо зарание присвоить значение 1.

ɱάуßƩ
09.02.2013, 13:03
procedure TForm1.Button1Click
case a of
1: button1.Caption='Да';
2: button1.Caption='Нет'
3: button1.Caption='Наверное'
end;
if a=3 then a:=1 else inc(a);
end;


a некоторое число типа byte, ему надо зарание присвоить значение 1.

Проблема не решена :sad:. Может я в чем-то ошибся, но всё равно не получилось.

Добавлено через 43 минуты
Получилось, влил больше фантазии) .
procedure TForm1.FormCreate(Sender: TObject);
begin
a:=1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
a:=a+1;
if a=4 then
a:=1;
if a=1 then
button1.Caption:='EN';
if a=2 then
button1.Caption:='RU';
if a=3 then
button1.Caption:='HE';
end;

metraz
09.02.2013, 14:42
Проблема не решена :sad:. Может я в чем-то ошибся, но всё равно не получилось.

Добавлено через 43 минуты
Получилось, влил больше фантазии) .

Мой код абсолютно рабочий, тебе надо было только в oncreate формы прописать a:=1;

Sinyss
09.02.2013, 14:51
влил больше фантазии) .
Вы хотели сказать *****кода...

ɱάуßƩ
10.02.2013, 16:36
Столкнулся с еще одной проблемой. Я делаю чисто для себя генератор чисел. Хотелось что бы кол-во цифр рандомайза соответствовало итем индексу (combobox1.itemindex:=X. То есть если X равен 5, то рандом будет 99999, Х=9 тогда рандом- 999999999 и т.д. Как такое можно замутить.
__________________________________________________ __________________________________________________ ____________________________

И еще задачка: Как настроить диапазон рандома чисел, а точнее - рандом от 5 до 10 (5,6,7,8,9,10), от 100 до 999 и т.д. Как?

И еще задачка: Как настроить диапазон рандома чисел, а точнее - рандом от 5 до 10 (5,6,7,8,9,10), от 100 до 999 и т.д. Как? Ответ на диапазон нашел: В Uses надо прописать Math, и просто вместо
x:=random(5)+5; вбить
x:=RandomRange(100,999);

VeTaL_UA
10.02.2013, 18:15
Когда-то давно написал функцию рандома:
function Rand(source:string;minlength,maxlength:integer):st ring;
var
len:integer;
begin
Randomize;
len:=minlength+Random(maxlength-minlength);
result:='';
repeat
result:=result+source[random(Length(source))+1];
until (Length(result)=len);
end;
В ней source - символы, которые могут присутствовать в рандомной строке; minlength - минимальная длинна рандомной строки; maxlength - максимальная длинна рандомной строки.
По коду ясно, что если ввести minlength и maxlength, то длинна будет равна введённому в оба параметра числу.
Для диапазона достаточно добавить в функцию два параметра(min и max) и одно условие по этим параметрам, какое именно, думаю, ты и сам догадаешься :)

Добавлено через 1 час 51 минуту
Ответ на диапазон нашел: В Uses надо прописать Math, и просто вместо
x:=random(5)+5; вбить
x:=RandomRange(100,999);
Подключать модуль ради одного вычисления это весело :D