Тема: Підкажіть що не правильно роблю, і як правильно зробити?

В одному випадку вибиває помилку несумісні типи: "TStrings" і "String"

 if (ComboBox1.ItemIndex = 0) then
 (ComboBox2.Items.AddStrings('Секунд','Хвилин','Годин'));

В другому випадку вибиває занадто багато фактичних параметрів

 if (ComboBox1.ItemIndex = 0) then
 (ComboBox2.Items.Add('Секунд','Хвилин','Годин'));

Можливо є ще якась процедура, щоб при виборі ComboBox1.ItemIndex = 1 в ComboBox2 додавало певну кількість ItemIndex 1...2...5...10

2

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Вам явно зарано з формами працювати. Розберіться із тим, що таке типи та як працювати з масивами.

3

Re: Підкажіть що не правильно роблю, і як правильно зробити?

ProgramBandera
В другому випадку ви намагаєтеся запхнути в одну замочну скважину одразу три ключа. Пхайте по одному.

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

4

Re: Підкажіть що не правильно роблю, і як правильно зробити?

А в першому - три предмети без коробки в роз'єм для коробки.

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

5 Востаннє редагувалося ProgramBandera (30.01.2019 14:17:11)

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Тобто, як правильно прописати код ніхто не підкаже. Будемо запитувати тоді на російських форумах, можливо там відповідь дадуть кодом. :(

6

Re: Підкажіть що не правильно роблю, і як правильно зробити?

koala написав:

Вам явно зарано з формами працювати. Розберіться із тим, що таке типи та як працювати з масивами.

З масивами я намагаюсь розібратися, але наразі якто кажуть в раші "Смотрю в книгу вижу ....!!! " те слово що в рифму.

7

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Torbins написав:

ProgramBandera
В другому випадку ви намагаєтеся запхнути в одну замочну скважину одразу три ключа. Пхайте по одному.

Один ключ мені рідко потрібний, мені туди треба від двох до двадцяти зараз запхнути, якщо не важко напишіть як правильно це прописати в коді. В мене тоді код в програмі скоротиться від чотирьох світлових років до меж сонячної системи. Я вже коли код переношу в ворд, щоб поміняти один комбобокс на інший швидко, в мене остання сторінка під номером 1 243 567.

8

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Отут почитайте: https://uk.wikibooks.org/wiki/Pascal/%D … 0%BA%D0%B8

ProgramBandera написав:

Тобто, як правильно прописати код ніхто не підкаже. Будемо запитувати тоді на російських форумах, можливо там відповідь дадуть кодом.

У нас на форумі не прийнято давати повністю увесь код. А тут усе настільки примітивно, що по іншому й не вийде.

9 Востаннє редагувалося koala (30.01.2019 14:50:57)

Re: Підкажіть що не правильно роблю, і як правильно зробити?

А ви не кажіть як у Раші. Фіга - то таке дерево, а слово рима українською не має "ф".

Torbins написав:

А тут усе настільки примітивно, що по іншому й не вийде.

const time_item_names:array[1..3] of String = ('Секунд','Хвилин','Годин');
...
for i in 1 to 3 do
    ComboBox2.Items.Add(time_item_names[i]);

Вийшло?

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

10

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Ну і взагалі, як я розумію, слід очікувати, що на наступному етапі табуйованими стануть крапки та знаки верхнього регістра цифр на клавіатурі - це ж непристойно їх писати, вони ж самі знаєте що означають.

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

11

Re: Підкажіть що не правильно роблю, і як правильно зробити?

koala написав:

А ви не кажіть як у Раші. Фіга - то таке дерево, а слово рима українською не має "ф".

Torbins написав:

А тут усе настільки примітивно, що по іншому й не вийде.

const time_item_names:array[1..3] of String = ('Секунд','Хвилин','Годин');
...
for i in 1 to 3 do
    ComboBox2.Items.Add(time_item_names[i]);

Вийшло?

От за таку відповідь величезне дякую!!!

12

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Torbins написав:

Отут почитайте: https://uk.wikibooks.org/wiki/Pascal/%D … 0%BA%D0%B8

ProgramBandera написав:

Тобто, як правильно прописати код ніхто не підкаже. Будемо запитувати тоді на російських форумах, можливо там відповідь дадуть кодом.

У нас на форумі не прийнято давати повністю увесь код. А тут усе настільки примітивно, що по іншому й не вийде.

:) Я розумію що для вас це примітивно. Як і для мене коли син питає про задачу з фізики. Просто книги по Delphi переважно написані професіоналами для професіоналів. І на такі примітивні питання там відповіді немає. А так як після серпня 14-го я на роботу вийти фізично не можу, от і вирішив чимось зайнятися. Не все ж життя іздити по квартирі в кріслі. Вибачайте я намагаюся як найменше набридати вам. Просто на російських форумах щось запитати для мене це дуже важко.

13

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Ну, до

ComboBox2.Items.Add('Секунд');
ComboBox2.Items.Add('Хвилин');
ComboBox2.Items.Add('Годин');

ви цілком могли самі здогадатися.
І код на GitHub викладіть.

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

14

Re: Підкажіть що не правильно роблю, і як правильно зробити?

koala написав:
const time_item_names:array[1..3] of String = ('Секунд','Хвилин','Годин');
...
for i in 1 to 3 do
    ComboBox2.Items.Add(time_item_names[i]);

Ви в курсі, що тут помилка?

ProgramBandera
Більше приділяйте увагу книжкам. Зокрема оцей підручник перечитайте: https://web.archive.org/web/20180418094 … al.org.ua/ і оцей:
https://uk.wikibooks.org/wiki/Pascal

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

15

Re: Підкажіть що не правильно роблю, і як правильно зробити?

koala написав:

Ну, до

ComboBox2.Items.Add('Секунд');
ComboBox2.Items.Add('Хвилин');
ComboBox2.Items.Add('Годин');

ви цілком могли самі здогадатися.
І код на GitHub викладіть.

Я так пробував в мене порожній чомусь ComboBox2 тоді виходить

if (ComboBox1.ItemIndex = 0) then
 ComboBox2.Items.Add('Секунд');
 ComboBox2.Items.Add('Хвилин');
 ComboBox2.Items.Add('Годин');

16

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Про begin-end вам уже казали.

17 Востаннє редагувалося ProgramBandera (30.01.2019 17:52:13)

Re: Підкажіть що не правильно роблю, і як правильно зробити?

koala написав:

Про begin-end вам уже казали.

Так він там є я просто тут його не вписав.
Коли один рядок так прописую то він в мене з'являється а якщо дописую далі то все зникає. Я зараз спробую ще в Delphi 9 можливо це в мене 7-ма версія глючить.
Вже не там не там не показує, навіть з одним рядком.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Proba;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Proba;
begin
 if (ComboBox1.ItemIndex = 0) then
   ComboBox2.Items.Add('Секунд');
end;

end.

А ось так працює. Але чи можливо мені без процедури procedure TForm1.Button1Click(Sender: TObject); якось його задати.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Proba;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Proba;
begin
 if (ComboBox1.ItemIndex = 0) then
   (ComboBox2.Items.Add('Секунд'));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 Proba;
end;

end.

18

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Я вам усе ж раджу відкрити очі і прочитати оце: https://uk.wikibooks.org/wiki/Pascal/%D … 0%BA%D0%B8 Бо навпомацки ви правильне рішення будете шукати довго.
Окрім того, у вашому коді поки що ніхто не викликає процедуру Proba.

19

Re: Підкажіть що не правильно роблю, і як правильно зробити?

Torbins написав:

Окрім того, у вашому коді поки що ніхто не викликає процедуру Proba.

Це ж Delphi, прив'язування може бути задане в формі.

20

Re: Підкажіть що не правильно роблю, і як правильно зробити?

koala написав:
Torbins написав:

Окрім того, у вашому коді поки що ніхто не викликає процедуру Proba.

Це ж Delphi, прив'язування може бути задане в формі.

Спробував вашим методом з трішки модифікованим масивом здається я починаю розуміти чо це таке помилок немає, останнє питання де і що мені прописати щоб та Proba пішла при запуску програми без нажаття будь яких кнопок. Просто вибираю в комбо одне а в другому з'являється інше.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
  private
    { Private declarations }
  public
    { Public declarations }
    procedure Proba;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.Proba;
const SPEED_UNITS: array[1..3] of string =
  ('Кілометрів за годину',
    'Кілометрів за хвилину',
    'Кілометрів за секунду');
var
  idx: integer;
 begin
  if ComboBox1.itemindex = 0 then
   ComboBox2.Items.Clear();
   for idx:= 0 to high(SPEED_UNITS) do
   ComboBox2.Items.Add(SPEED_UNITS[idx]);
 end;

end.