Вопрос № 131019: Здраствуйте. Хочу задать движение частички на компоненте Image, что-бы кодинаты менялись каждый раз не более чем на 10 пикслей. Но движения нет.
Подскажите пожалуста в чем проблема. Зарание благодарен.
procedure TForm1.Timer2Timer(Sender: TO...Вопрос № 131041: Здраствуйте уважаемые эксперты! У меня ОЧЕНЬ срочный вопрос. Помогите пожалуйста решить задачу ато у меня мозг уже кипит а выходит не то :(.
Вот задача
-Создайте приложение, на форму которого помещены компоненты: Timer и Edit. Для компонента...Вопрос № 131107: please помогите сделать лабы.
электронные часы;
взаимозависимые регуляторы, с изменением одного изменяется положение другого....Вопрос № 131178: Здравствуйте, решаю такую задачу:
на форме метки с текстом отрицательный элемент, произведение, кнопки очистить, заполнить, вычислить, выход
Кнопка заполнить формирует массив из 10 случайных чисел, заполняет
этими числами первый список(...
Вопрос № 131.019
Здраствуйте. Хочу задать движение частички на компоненте Image, что-бы кодинаты менялись каждый раз не более чем на 10 пикслей. Но движения нет.
Подскажите пожалуста в чем проблема. Зарание благодарен.
procedure TForm1.Timer2Timer(Sender: TObject);
var x,y,dx,dy,k:integer;
begin
k:=random(10);
x:=x+k;
y:=y+k;
Image1.Canvas.LineTo(x,y);
end;
Отправлен: 07.04.2008, 16:28
Вопрос задал: Vovvka (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: Genia007
Здравствуйте, Vovvka!
131019
Вам нужно сначало обнулить переменные x,y.
Сделайте так:
var
Form1: TForm1; x, y: integer;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
x:=0;
y:=0;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
var dx,dy,k:integer;
begin
k:=random(10);
x:=x+k;
y:=y+k;
Image1.Canvas.LineTo(x,y);
end;
И частичка нормально начинает двигаться превращаясь в прямую, если нужно движение только
одной частички нужен такой код:
procedure TForm1.Timer2Timer(Sender: TObject);
var dx,dy,k:integer;
begin
Image1.Canvas.Pixels[x,y]:= clWhite;
k:=random(10);
x:=x+k;
y:=y+k;
Image1.Canvas.Pixels[x,y]:= clBlack;
end;
Ответ отправил: Genia007 (статус: 10-ый класс)
Ответ отправлен: 08.04.2008, 19:28
Вопрос № 131.041
Здраствуйте уважаемые эксперты! У меня ОЧЕНЬ срочный вопрос. Помогите пожалуйста решить задачу ато у меня мозг уже кипит а выходит не то :(.
Вот задача
-Создайте приложение, на форму которого помещены компоненты: Timer и Edit. Для компонента Timer обработайте событие OnTimer, которое увеличивает число, за-писанное в компоненте Edit, на единицу каждую секунду. Если в компонент Edit вве-дено не число, то таймер не работает.
P.S. если кто решит-объясните пожалуйста еще что именно добавлять на форму (ну там Label, Edit...) ЗАРАНЕЕ СПАСИБО! Я знаю что тут супер умные люди есть!
Отвечает: Marked One
Здравствуйте, Сараев Лаврентий Александрович! Для того чтобы можно было вводить только цифры, создадим обработчик события OnKeyPress: if not ((Key >= '0') and (Key <='9') or (Key = #8)) //Если введена не цифра, то then Key := Chr(0); //заменяем вводимый символ на нулевой символ
В обработчике таймера пишем: if Edit1.Text='' then Edit1.text:='0'; //Если Edit пустой, то изменяем его текст на '0' Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+1); //Увеличиваем на 1
В обработчике OnFormCreate: edit1.Text:='0';
// Значение по умолчанию
Удачи!!!
Приложение:
Ответ отправил: Marked One (статус: Студент)
Ответ отправлен: 07.04.2008, 17:56 Оценка за ответ: 5 Комментарий оценки: СПАСИБО! Все работает! Это было профессионально, быстро, точно! 5 баллов! Еще раз спасибо за оперативность)
Отвечает: Genia007
Здравствуйте, Сараев Лаврентий Александрович!
Вот работающий код:
procedure TForm1.Timer1Timer(Sender: TObject);
var i: real;
begin
i:= StrToFloat(Edit1.Text);
i:= i + 1;
Edit1.Text:= FloatToStr(i);
end;
procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
var i: real;
begin
Try
i:= StrToFloat(Edit1.Text);{Проверка ввода числа, если не получилось присвоить выдаём} {сообщение о ошибке и вырубаем таймер}
except
begin
MessageDlg('Введено не число', mtError, [mbOk], 0);
Timer1.Enabled:= False;
Exit;
end;
end;
Timer1.Enabled:= True;
end;
В инспекторе обьектов нужно установить Timer1.Enabled в False,
используются только Edit и Timer.
Ответ отправил: Genia007 (статус: 10-ый класс)
Ответ отправлен: 08.04.2008, 19:29 Оценка за ответ: 5
Вопрос № 131.107
please помогите сделать лабы.
электронные часы;
взаимозависимые регуляторы, с изменением одного изменяется положение другого.
Отвечает: Genia007
Здравствуйте, скромная марина сергеевна!
По электронным часам могу предложить такой код:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Label1.Caption:= TimeToStr(Time);
end;
По таймеру каждую секунду возвращается системное время.
По взаимозависимым регуляторам могу предложить вот это:
возмите два компонента TrackBar с вкладки Win32 и напишите такой код
procedure TForm1.TrackBar1Change(Sender: TObject);
begin
TrackBar2.Position:= TrackBar1.Position;
end;
procedure TForm1.TrackBar2Change(Sender: TObject);
begin
TrackBar1.Position:= TrackBar2.Position;
end;
При изменении положения одного из них на столько же изменяется и положение второго.
Ответ отправил: Genia007 (статус: 10-ый класс)
Ответ отправлен: 08.04.2008, 19:30
Вопрос № 131.178
Здравствуйте, решаю такую задачу:
на форме метки с текстом отрицательный элемент, произведение, кнопки очистить, заполнить, вычислить, выход
Кнопка заполнить формирует массив из 10 случайных чисел, заполняет
этими числами первый список(memo1), выбирает из массива отрицательные элементы и заполняет этими элементами второй список(stringGrid1).
Кнопка вычислить вычисляет произведение отрицательных чисел и выводит его в метку.
Кнопка очистить удаляет содержимое списков
Вот не могу заполнить отрицательными элементами StringGrid, получается вывести число только в одну ячейку.
Подскажите пожалуйста как вывести отрицательные числа в StringGrid и вычислить их произведение.
Пример программы в приложении (6 кб)
Отвечает: Лысенков Антон Анатольевич
Здравствуйте, Исаак Моисеевич!
В приложении процедуры для кнопок:
Заполнить (TForm1.Button2Click)
Очистить (TForm1.Button1Click)
Вычислить (TForm1.Button3Click)
Для корректной работы следует еще определить переменную m типа integer в переменных модуля Unit1.
В процедуре для кнопки Заполнить я заменил memo1.lines.Clear на Form1.Button1Click(self), т.е. перед каждым заполнением программа сама "жмет" на кнопку Очистить. Также добавил переменные x и y для того чтобы определять с помощью них номер ячейки StringGrid. Также в этой процедуре считается произведение отрицательных элементов (строка m:=m*a[i]). А в процедуре кнопки Вычислить присутствует всего-лишь вывод значения переменной m.
Приложение:
Ответ отправил: Лысенков Антон Анатольевич (статус: Студент)
Ответ отправлен: 08.04.2008, 19:51 Оценка за ответ: 5