Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на Delphi


Новое направление Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Delphi

Выпуск № 1120
от 13.04.2008, 16:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 446, Экспертов: 54
В номере:Вопросов: 4, Ответов: 5

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>


Вопрос № 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...) ЗАРАНЕЕ СПАСИБО! Я знаю что тут супер умные люди есть!
Отправлен: 07.04.2008, 17:27
Вопрос задал: Сараев Лаврентий Александрович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 4)

Отвечает: 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'; // Значение по умолчанию

Удачи!!!

Исправлено в соответствии с комментарием эксперта в мини-форуме
-----
∙ Отредактировал: Denisss (Профессионал)
∙ Дата редактирования: 0 7.04.2008, 18:39

Приложение:

Ответ отправил: 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 помогите сделать лабы.
электронные часы;
взаимозависимые регуляторы, с изменением одного изменяется положение другого.

Приложение:

Отправлен: 08.04.2008, 02:13
Вопрос задала: скромная марина сергеевна (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: 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 кб)

Приложение:

Отправлен: 08.04.2008, 16:22
Вопрос задал: Исаак Моисеевич (статус: 3-ий класс)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 7)

Отвечает: Лысенков Антон Анатольевич
Здравствуйте, Исаак Моисеевич!

В приложении процедуры для кнопок:

  • Заполнить (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


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


    © 2001-2008, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 4.90 pre 5.0 RC1 от 13.04.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
    Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

    В избранное