1 Востаннє редагувалося kisilam (17.04.2016 14:57:49)

Тема: Допоможіть розібратися з процедурою при побудові графіків

Доброго всім дня. Я знайомлюся з побудовою графіків в делфі. І підгледів одну процедуру в одному відео по роботі з графіками в делфі. Дана процедура захищає програму від відсутності в полі TEdit даних коефіцієнтів, які слугують для побудови графіка. В відео ця процедура працювала, а у мене ні. Ось і сама процедура:

procedure TForm1.Edit1Change(Sender: TObject);
begin
if (Edit1.Text:='') or (Edit2.Text:='') then BitBtn1.Enabled:=False else BitBtn1.Enabled:=true;
end;

А ось помилка, що її видає компілятор

[Error] Unit1.pas(79): Operator not applicable to this operand type

В чому проблема??? Підкажіть.

2 Востаннє редагувалося ADR (17.04.2016 14:34:23)

Re: Допоможіть розібратися з процедурою при побудові графіків

Замініть присвоєння на перевірку (":=" на "=")
Тільки перед "then", звичайно)

І краще використовувати TSpinEdit, а не TEdit, для введення чисел. Там або не можна ввести пустий рядок, або можна вказати, щоб так стало. Вже не пам'ятаю.

Подякували: kisilam, Chemist-i, leofun013

3

Re: Допоможіть розібратися з процедурою при побудові графіків

Дякую. Вірно. Не додивився.

4

Re: Допоможіть розібратися з процедурою при побудові графіків

Змінив назву теми, щоби не плодити нових. Буду запитувати далі.
Підкажіть чим скористатися і де почитати, щоб побудувати, наприклад, схему польоту кулі кинутої під певним кутом до координатної осі і з певною початковою швидкістю. Тобто, показати рух кулі по кривій.

5

Re: Допоможіть розібратися з процедурою при побудові графіків

kisilam написав:

Змінив назву теми, щоби не плодити нових. Буду запитувати далі.
Підкажіть чим скористатися і де почитати, щоб побудувати, наприклад, схему польоту кулі кинутої під певним кутом до координатної осі і з певною початковою швидкістю. Тобто, показати рух кулі по кривій.

https://www.google.com.ua/search?q=%D1% … &dpr=1
http://disted.edu.vn.ua/courses/learn/2631

Подякували: leofun011

6

Re: Допоможіть розібратися з процедурою при побудові графіків

kisilam написав:

Змінив назву теми, щоби не плодити нових. Буду запитувати далі.
Підкажіть чим скористатися і де почитати, щоб побудувати, наприклад, схему польоту кулі кинутої під певним кутом до координатної осі і з певною початковою швидкістю. Тобто, показати рух кулі по кривій.

Малювати є безліч способів. Для саме графіків є TChart.
Можно просто створити TImage, в нього є canvas а в тій канві є інструменти для малювання

...canvas.MoveTo(x,y);
...canvas.LineTo(x,y);

7

Re: Допоможіть розібратися з процедурою при побудові графіків

І краще використовувати TSpinEdit, а не TEdit, для введення чисел.

не обов'язково, до того ж spinedit не дозволяє працювати з дробовими числами (э звiсно rxspinedit, або можна створити спадкоємця і перевизначити введення, але можна обійтися стандартним). Досить в загальний обробник двох эдитів по OnKeyPress() ввести обмеження:

 If not (Key in ['0'..'9', #8, ',', '.', '-']) then
 Key:=#0;

Змінив назву теми, щоби не плодити нових. Буду запитувати далі.

є ж довідники (наприклад Delphi-World) і вбудована довідка по F1 )

8

Re: Допоможіть розібратися з процедурою при побудові графіків

raxp написав:

І краще використовувати TSpinEdit, а не TEdit, для введення чисел.

не обов'язково, до того ж spinedit не дозволяє працювати з дробовими числами (э звiсно rxspinedit, або можна створити спадкоємця і перевизначити введення, але можна обійтися стандартним). Досить в загальний обробник двох эдитів по OnKeyPress() ввести обмеження:

 If not (Key in ['0'..'9', #8, ',', '.', '-']) then
 Key:=#0;

У VLC SpinEdit справді приймає лише цілі, вже аж в FMX можна вибрати тип значення. (шкода було їм компонент для VCL зробити?)

Але все ж, як на мене краще зробити/використовувати готовий компонент, ніж кожен раз враховувати введені дані. До того ж цієї перевірки недостатньо, потрібна ще регулярка, або щось типу TryConvertToFloat() по OnExit().

9

Re: Допоможіть розібратися з процедурою при побудові графіків

Робити цiлий компонент заради двох строчок коду? Нi, це жирнувато буде. Щодо перетворення, то досить класичного strtofloatdef(). Доречi з едiтами можливо вводити навiть числа з мантисою в експоненцiальнiй формi )

10 Востаннє редагувалося ADR (18.04.2016 00:10:36)

Re: Допоможіть розібратися з процедурою при побудові графіків

raxp написав:

Робити цiлий компонент заради двох строчок коду? Нi, це жирнувато буде. Щодо перетворення, то досить класичного strtofloatdef(). Доречi з едiтами можливо вводити навiть числа з мантисою в експоненцiальнiй формi )

Та не в одній програмі це ж буде використовуватись)

Але як на мене то дуже дивно чому цього досі немає у стандартній бібліотеці. (хоча і є в FMX)

11

Re: Допоможіть розібратися з процедурою при побудові графіків

В який не однiй? Це окремий випадок, а на FMX світ клином не зійшовся )

12

Re: Допоможіть розібратися з процедурою при побудові графіків

raxp написав:

В який не однiй? Це окремий випадок, а на FMX світ клином не зійшовся )

Я сумніваюсь у тому, що автор видалить делфі після того, як допише ту програму і не буде писати жодну іншу)

13

Re: Допоможіть розібратися з процедурою при побудові графіків

Не бачу зв'язку між видаленням Delphi і необхідністю хоча б мінімально підтягнути основи роботи з середовищем. Те ж саме буде виглядати в CodeTyphon. Компонентне програмування взагалі зло )