Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/49: Рейтинг темы: голосов - 49, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37

Как сделать, чтобы при выборе определенной строки в ComboBox, текстовое содержимое отображалось на memo?

29.09.2012, 03:01. Показов 10671. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, форумчане
Подскажите, как сделать, чтобы при выборе определенной строки в ComboBox, текстовое содержимое отображалось на memo, а некая переменная принимала значение присвоенное этой строке?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
29.09.2012, 03:01
Ответы с готовыми решениями:

как нарастить переменную при выборе определённой строки в Combobox
как нарастить переменную при выборе определённой строки в Combobox !! очень нужно помигите !! спасибо

C# Как сделать чтобы при выборе в combobox , менялись значения в других combobox?
Приветствую коллеги. Только встал на путь программирования и столкнулся с дилеммой. Есть форма, на ней 4 combobox. В каждом combobox по...

Как сделать чтобы при выборе в comboBox, выводилось значение в другом comboBox?
Здравствуйте! Есть таблица из 2 столбца (id, name). Как сделать чтобы при выборе из первого comboBox вывести значение другому comboBox?...

71
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 01:09  [ТС]
Студворк — интернет-сервис помощи студентам
angstrom, спасибо огромное, я ваш фанат)

Добавлено через 17 минут
Цитата Сообщение от angstrom Посмотреть сообщение
Наверное проще так. Никакой оптимизации.
но вот как теперь из этого вытащить значения присвоенные каждой строке комбо?
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button1Click(Sender: TObject);
  var
  A ,T1 ,I1, J1: Integer;
begin
 T1 := buf[ComboBox1.ItemIndex];
 I1 := buf[ComboBox2.ItemIndex];
 J1 := buf[ComboBox3.ItemIndex];
A:=T1+I1+J1;
Memo1.text:=IntToStr(A);
end;
где тут ошибка?
0
angstrom
30.09.2012, 01:25
Как то так:
Вложения
Тип файла: rar Project26.rar (1.5 Кб, 8 просмотров)
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 01:58  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Как то так:
я имел в виду числовые значения, которые мы в массивах указывали соответственно каждому значению в комбо
0
angstrom
30.09.2012, 02:06
Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := FloatToStr(buf[ComboBox1.ItemIndex].I + buf[ComboBox2.ItemIndex].I + buf[ComboBox3.ItemIndex].I);
end;
нет, так неправильно.

так:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.Button1Click(Sender: TObject);
var
  A, B, C : Single;
  I : Integer;
begin
  Memo1.Clear;
  Memo1.Lines.Add(Format(szFmt, [ComboBox1.ItemIndex, ComboBox1.Items.Strings[ComboBox1.ItemIndex],
                                 ComboBox2.ItemIndex, ComboBox2.Items.Strings[ComboBox2.ItemIndex],
                                 ComboBox3.ItemIndex, ComboBox3.Items.Strings[ComboBox3.ItemIndex]]));
 
  A := 0; B := 0; C := 0;
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = buf[I].St then
      A := buf[I].I;
 
  for I := 0 to High(Buf) do
    if ComboBox2.Items.Strings[ComboBox2.ItemIndex] = buf[I].St then
      B := buf[I].I;
 
  for I := 0 to High(Buf) do
    if ComboBox3.Items.Strings[ComboBox3.ItemIndex] = buf[I].St then
      C := buf[I].I;
 
  Memo1.Lines.Add(FloatToStr(A + B + C));
// или
  Memo1.Lines.Add(Format('%.2f', [A + B + C]));
end;
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 02:14  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Delphi
1
2
3
4
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.Text := FloatToStr(buf[ComboBox1.ItemIndex].I + buf[ComboBox2.ItemIndex].I + buf[ComboBox3.ItemIndex].I);
end;
исходя из текста
Delphi
1
2
3
4
5
(St : 'Яблоко зелёное'; I : 0.5; Busy : False; Tag : 0),
    (St : 'Яблоко красное'; I : 0.75; Busy : False; Tag : 0),
    (St : 'Помидор'; I : 0.4; Busy : False; Tag : 0),
    (St : 'Арбуз'; I : 2.5; Busy : False; Tag : 0),
    (St : 'Вишня'; I : 0.2; Busy : False; Tag : 0));
при сумме первых трех выбранных элементов получается 1.65, а программа выдает 1.5
0
angstrom
30.09.2012, 02:17
Я ведь написал, что этот вариант неверен. Нужно искать не по ItemIndex, а по строке.
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 02:29  [ТС]
агась, чет мну плющит)
а вот если элементы в комбо являются составляющими разных формул, например
яблоко зеленое дает 20 ед бодрости
яблоко красное дает 20 ед энергии
помидор пачкает одежду на 30%
арбуз пачкает одежду на 50%
вишня дает 10 ед энергии и 10 ед бодрости

а формулы следующие
энергия=
бодрость=
испачканность=
0
angstrom
30.09.2012, 02:40
Расширяй TComboRecord на необходимые поля.
Delphi
1
2
3
4
5
6
7
8
9
  TComboRecord  = record
    St          : String;
    I           : Single;
    Busy        : Boolean;
    Tag         : Integer;
    Energy,
    Vigour
    Soil        : Integer;
  end;
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 03:09  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Расширяй TComboRecord на необходимые поля.
Delphi
1
2
3
4
5
6
7
8
9
  TComboRecord  = record
    St          : String;
    I           : Single;
    Busy        : Boolean;
    Tag         : Integer;
    Energy,
    Vigour
    Soil        : Integer;
  end;
а как в массиве это обозначить и вытянуть оттуда?
понимаю, что для вас это глупый вопрос, но я нуб пока
0
angstrom
30.09.2012, 03:11
Delphi
1
2
3
4
5
6
7
  buf : array[0..4] of TComboRecord = (
    (St : 'Яблоко зелёное'; I : 0.5; Busy : False; Tag : 0; Energy : 0; Vigour : 20; Soil : 0),
    (St : 'Яблоко красное'; I : 0.75; Busy : False; Tag : 0; Energy : 20; Vigour : 0; Soil : 0),
    (St : 'Помидор'; I : 0.4; Busy : False; Tag : 0; Energy : 0; Vigour : 0; Soil : 30),
    (St : 'Арбуз'; I : 2.5; Busy : False; Tag : 0; Energy : 0; Vigour : 0; Soil : 50),
    (St : 'Вишня'; I : 0.2; Busy : False; Tag : 0; Energy : 10; Vigour : 10; Soil : 0));
...
также для всех остальных пунктов (если добавишь). "Вытягивать" также как и остальные пункты.
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 03:29  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Delphi
1
2
3
4
5
6
7
  buf : array[0..4] of TComboRecord = (
    (St : 'Яблоко зелёное'; I : 0.5; Busy : False; Tag : 0; Energy : 0; Vigour : 20; Soil : 0),
    (St : 'Яблоко красное'; I : 0.75; Busy : False; Tag : 0; Energy : 20; Vigour : 0; Soil : 0),
    (St : 'Помидор'; I : 0.4; Busy : False; Tag : 0; Energy : 0; Vigour : 0; Soil : 30),
    (St : 'Арбуз'; I : 2.5; Busy : False; Tag : 0; Energy : 0; Vigour : 0; Soil : 50),
    (St : 'Вишня'; I : 0.2; Busy : False; Tag : 0; Energy : 10; Vigour : 10; Soil : 0));
...
также для всех остальных пунктов (если добавишь). "Вытягивать" также как и остальные пункты.
то есть так?
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
D := 0; E := 0; H := 0;
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = buf[Energy].St then
      D := buf[Energy].I;
 
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox2.ItemIndex] = buf[Vigour].St then
      E := buf[Vigour].I;
 
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox3.ItemIndex] = buf[Soil].St then
      H := buf[Soil].I;
0
angstrom
30.09.2012, 03:34
Почти
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
D := 0; E := 0; H := 0;
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = buf[Energy].St then
    begin
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  // что то делаем с полученными значениями
 
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox2.ItemIndex] = buf[Vigour].St then
    begin
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  // что то делаем с полученными значениями
 
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox3.ItemIndex] = buf[Soil].St then
    begin
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  // что то делаем с полученными значениями
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 03:47  [ТС]
а тут точно комбобокс1 ?
if ComboBox1.Items.Strings[ComboBox2.ItemIndex] = buf[Vigour].St then
0
angstrom
30.09.2012, 03:54
Нет конечно, по нарастающей - 1, 2, 3. Это я твой код не глядя скопировал.
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
30.09.2012, 04:11  [ТС]
[Error] Unit26.pas(131): Undeclared identifier: 'Energy'
[Error] Unit26.pas(140): Undeclared identifier: 'Vigour'
[Error] Unit26.pas(149): Undeclared identifier: 'Soil'
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 D := 0; E := 0; H := 0;
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = buf[Energy].St then //131 строка
    begin
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  
 
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox2.ItemIndex] = buf[Vigour].St then //140 строка
    begin
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
 
 
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox3.ItemIndex] = buf[Soil].St then  //149 строка
    begin
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
      Memo1.Lines.Add(Format('%.2f', [A + B + C]));
      Memo1.Lines.Add(Format('%.2f', [A + B + C]));
      Memo1.Lines.Add(Format('%.2f', [A + B + C]));
    end;
Добавлено через 11 минут
все, нашел проблему
надо же было такое написать)))
0
angstrom
30.09.2012, 04:21
У тебя ошибка
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
 D := 0; E := 0; H := 0;
  for I := 0 to High(Buf) do
    if ComboBox1.Items.Strings[ComboBox1.ItemIndex] = buf[I].St then //131 строка
    begin
      A := buf[I].I;
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  Memo1.Lines.Add(Format('%d - %d - %d', [D, E, H]));
 
  for I := 0 to High(Buf) do
    if ComboBox2.Items.Strings[ComboBox2.ItemIndex] = buf[I].St then //140 строка
    begin
      A := buf[I].I;
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  Memo1.Lines.Add(Format('%d - %d - %d', [D, E, H]));
 
  for I := 0 to High(Buf) do
    if ComboBox3.Items.Strings[ComboBox3.ItemIndex] = buf[I].St then  //149 строка
    begin
      A := buf[I].I;
      D := buf[I].Energy;
      E := buf[I].Vigour;
      H := buf[I].Soil;
    end;
  Memo1.Lines.Add(Format('%d - %d - %d', [D, E, H]));
 
  Memo1.Lines.Add(Format('%.2f', [A + B + C]));
так лучше.
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
01.10.2012, 08:20  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
type
  TForm2 = class(TForm)
    Button1: TButton;
    ComboBox38: TComboBox;
    ComboBox39: TComboBox;
    ComboBox40: TComboBox;
    Memo2: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ComboBox38Change(Sender: TObject);
    procedure ComboBox39Change(Sender: TObject);
    procedure ComboBox40Change(Sender: TObject);
 
   private
    { Private declarations }
  public
    { Public declarations }
    procedure UpdateComboBox;
  end;
 
    TComboRecord  = record
    St          : String;
    I           : Single;
    Busy        : Boolean;
    Tag         : Integer;
    Massa,
    Obzor,
    Vsved,
    Dosil      : Integer;
  end;
 
 
var
  Form2: TForm2;
  snar : array[0..13] of TComboRecord = (
    (St : '1';  I : 0.5; Busy : False; Tag : 0; Massa : 0; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '2';  I : 0.5; Busy : False; Tag : 0; Massa :    1; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '3';  I : 0.5; Busy : False; Tag : 0; Massa :   50; Obzor : 25; Vsved :  0; Dosil :  0),
    (St : '4';  I : 0.5; Busy : False; Tag : 0; Massa :    0; Obzor : 10; Vsved :  0; Dosil :  0),
    (St : '5';  I : 0.5; Busy : False; Tag : 0; Massa :  100; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '6';  I : 0.5; Busy : False; Tag : 0; Massa :    0; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '7';  I : 0.5; Busy : False; Tag : 0; Massa :  200; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '8';  I : 0.5; Busy : False; Tag : 0; Massa :  400; Obzor :  0; Vsved :  0; Dosil : 11),
    (St : '9';  I : 0.5; Busy : False; Tag : 0; Massa :  100; Obzor :  0; Vsved : 10; Dosil :  0),
    (St : '10'; I : 0.5; Busy : False; Tag : 0; Massa :  620; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '11'; I : 0.5; Busy : False; Tag : 0; Massa :   50; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '12'; I : 0.5; Busy : False; Tag : 0; Massa :   10; Obzor :  0; Vsved :  0; Dosil :  0),
    (St : '13'; I : 0.5; Busy : False; Tag : 0; Massa :  200; Obzor :  0; Vsved :  0; Dosil :  0)
    (St : '14'; I : 0.5; Busy : False; Tag : 0; Massa : 1000; Obzor :  0; Vsved :  0; Dosil :  0),);
Const
  KomMask : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  KomRem :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  KomPoz :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  KomBB :   array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  KomNast : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  KomOrG :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  KomShCh : array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  KomEks :  array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  KomMNR :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
 
  NavMask : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  NavRem :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  NavPoz :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  NavBB :   array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  NavMO :   array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  NavSnaj : array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  NavPPB :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  NavZlo :  array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
 
  MexMask : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexRem :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexPoz :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexBB :   array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  MexVirt : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexPX :   array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexKorB : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexMTar : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  MexChIP : array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
 
  ZarMask : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  ZarRem :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  ZarPoz :  array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  ZarBB :   array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  ZarBesB : array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  ZarOtch : array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
  ZarInt :  array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
 
  RadIzob : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  RadRPer : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  RadRetr : array[0..10] of Integer = (0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
  RadIPS :  array[0..10] of Integer = (0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 100);
 
implementation
 
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
var
  I : Integer;
begin
  ComboBox38.Items.Clear;
  ComboBox39.Items.Clear;
  ComboBox40.Items.Clear;
  for I := 0 to High(Snar) do
  begin
    ComboBox38.Items.Add(snar[I].St);
    ComboBox39.Items.Add(snar[I].St);
    ComboBox40.Items.Add(snar[I].St);
  end;
end;
 
procedure TForm2.UpdateComboBox;
var
  I : Integer;
begin
  ComboBox38.Items.Clear;
  ComboBox39.Items.Clear;
  ComboBox40.Items.Clear;
 
  for I := 0 to High(Snar) do
    if (ComboBox38.Tag = snar[I].Tag) or (snar[I].Tag = 0) then
      ComboBox38.Items.Add(snar[I].St);
 
  for I := 0 to High(Snar) do
    if (ComboBox39.Tag = snar[I].Tag) or (snar[I].Tag = 0) then
      ComboBox39.Items.Add(snar[I].St);
 
  for I := 0 to High(Snar) do
    if (ComboBox40.Tag = snar[I].Tag) or (snar[I].Tag = 0) then
      ComboBox40.Items.Add(snar[I].St);
end;
 
procedure TForm2.ComboBox38Change(Sender: TObject);
var
  I : Integer;
  St : array[0..13] of String;
begin
  St[0] := ComboBox38.Items.Strings[ComboBox1.ItemIndex];
  St[1] := ComboBox39.Items.Strings[ComboBox2.ItemIndex];
  St[2] := ComboBox40.Items.Strings[ComboBox3.ItemIndex];
 
  for I := 0 to High(Snar) do
    if (TComboBox(Sender).Tag = snar[I].Tag) and (snar[I].Tag <> 0) then
    begin
      snar[I].Tag  := 0;
      snar[I].Busy := False;
    end;
 
  for I := 0 to High(Snar) do
    if TComboBox(Sender).Items.Strings[TComboBox(Sender).ItemIndex] = snar[I].St then
    begin
      snar[I].Tag  := TComboBox(Sender).Tag;
      snar[I].Busy := True;
    end;
 
  UpdateComboBox;
  ComboBox38.ItemIndex := ComboBox38.Items.IndexOf(St[0]);
  ComboBox39.ItemIndex := ComboBox39.Items.IndexOf(St[1]);
  ComboBox40.ItemIndex := ComboBox40.Items.IndexOf(St[2]);
end;
 
procedure TForm2.ComboBox39Change(Sender: TObject);
var
  I : Integer;
  St : array[0..13] of String;
begin
  St[0] := ComboBox38.Items.Strings[ComboBox1.ItemIndex];
  St[1] := ComboBox39.Items.Strings[ComboBox2.ItemIndex];
  St[2] := ComboBox40.Items.Strings[ComboBox3.ItemIndex];
 
  for I := 0 to High(Snar) do
    if (TComboBox(Sender).Tag = snar[I].Tag) and (snar[I].Tag <> 0) then
    begin
      snar[I].Tag  := 0;
      snar[I].Busy := False;
    end;
 
  for I := 0 to High(Snar) do
    if TComboBox(Sender).Items.Strings[TComboBox(Sender).ItemIndex] = snar[I].St then
    begin
      snar[I].Tag  := TComboBox(Sender).Tag;
      snar[I].Busy := True;
    end;
 
  UpdateComboBox;
  ComboBox38.ItemIndex := ComboBox38.Items.IndexOf(St[0]);
  ComboBox39.ItemIndex := ComboBox39.Items.IndexOf(St[1]);
  ComboBox40.ItemIndex := ComboBox40.Items.IndexOf(St[2]);
end;
 
procedure TForm2.ComboBox40Change(Sender: TObject);
var
  I : Integer;
  St : array[0..13] of String;
begin
  St[0] := ComboBox38.Items.Strings[ComboBox1.ItemIndex];
  St[1] := ComboBox39.Items.Strings[ComboBox2.ItemIndex];
  St[2] := ComboBox40.Items.Strings[ComboBox3.ItemIndex];
 
  for I := 0 to High(Snar) do
    if (TComboBox(Sender).Tag = snar[I].Tag) and (snar[I].Tag <> 0) then
    begin
      snar[I].Tag  := 0;
      snar[I].Busy := False;
    end;
 
  for I := 0 to High(Snar) do
    if TComboBox(Sender).Items.Strings[TComboBox(Sender).ItemIndex] = snar[I].St then
    begin
      snar[I].Tag  := TComboBox(Sender).Tag;
      snar[I].Busy := True;
    end;
 
  UpdateComboBox;
  ComboBox38.ItemIndex := ComboBox38.Items.IndexOf(St[0]);
  ComboBox39.ItemIndex := ComboBox39.Items.IndexOf(St[1]);
  ComboBox40.ItemIndex := ComboBox40.Items.IndexOf(St[2]);
end;
 
procedure TForm2.Button1Click(Sender: TObject);
var
  M, O, V, D,
  M1, O1, V1, D1,
  M2, O2, V2, D2,
  M3, O3, V3, D3 : Single;
  A , T1, I1, H1, G1, I : Integer;
begin
  M := 0; O := 0; V := 0; D := 0;
  M1 := 0; O1 := 0; V1 := 0; D1 := 0;
  M2 := 0; O2 := 0; V2 := 0; D2 := 0;
  M3 := 0; O3 := 0; V3 := 0; D3 := 0;
 
  for I := 0 to High(snar) do
    if ComboBox38.Items.Strings[ComboBox38.ItemIndex] = snar[I].St then
    begin
      M1 := snar[I].Massa;
      O1 := snar[I].Obzor;
      V1 := snar[I].Vsved;
      D1 := snar[I].Dosil;
    end;
 
  for I := 0 to High(Snar) do
    if ComboBox39.Items.Strings[ComboBox39.ItemIndex] = snar[I].St then
    begin
      M2 := snar[I].Massa;
      O2 := snar[I].Obzor;
      V2 := snar[I].Vsved;
      D2 := snar[I].Dosil;
    end;
 
  for I := 0 to High(Snar) do
    if ComboBox40.Items.Strings[ComboBox40.ItemIndex] = snar[I].St then
    begin
      M3 := snar[I].Massa;
      O3 := snar[I].Obzor;
      V3 := snar[I].Vsved;
      D3 := snar[I].Dosil;
      Memo2.Lines.Add(Format('%.2f', [M1 + M2 + M3]));
    end;
  T1 := KomBB[ComboBox4.ItemIndex];
  I1 := NavBB[ComboBox8.ItemIndex];
  H1 := MexBB[ComboBox12.ItemIndex];
  G1 := ZarBB[ComboBox16.ItemIndex];
  A:=T1+I1+H1+G1;
  if A < 400 then A := 0;
  Memo2.text:=IntToStr(A);
 
end;
 
end.
вот и в чем тут проблема?
сумму М1+М2+М3 не считает и еще надо, чтобы первая строчка массива snar всегда отображалась
0
angstrom
01.10.2012, 12:50
Уже накосячил. Кидай архив.
0 / 0 / 0
Регистрация: 29.09.2012
Сообщений: 37
01.10.2012, 21:33  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Уже накосячил. Кидай архив.
уже, лови
Вложения
Тип файла: rar Project.rar (10.6 Кб, 5 просмотров)
0
angstrom
01.10.2012, 22:28
Немного смотрю и сам исправил, но забыл:
1. Назначить ComboBox-ам 38, 39, 40 один обработчик OnChange. Назначено только для 38-го.
2. Не выставил свойство Tag им же, должен быть по нарастающей начиная с 38-го - 1, 2,3.
Дальше объясняй что и как делать ещё.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2012, 22:28
Помогаю со студенческими работами здесь

Как сделать чтобы при выборе в combobox , менялись значения в других combobox?
Есть два combobox. Как их сделать зависимыми друг от друга. Что бы при выборе одного combobox менялись данные в другом. К примеру: В...

Как сделать чтобы при выборе в combobox , менялись значения в других combobox? Visual Basic 6.0
Есть несколько компонентов Combobox, списки через Form_load я прописал, теперь списки отображаются. Но как сделать так чтобы при выборе в...

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

Подстановка символов при выборе определенной строки в ComboBox
Необходима помощь!?!?!?! имеется форма на которой ComboBox1, edit1, edit2, Button1 - после нажатия Button1, в edit2 вставляется...

Нужно, чтобы при выборе города (combobox) информация о нем выводилась в memo
Нужно чтобы при выборе города(combobox) информация о нем выводилась в memo. Только инф-ция о городе должна подгружаться из блокнота.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
[golang] Двоичная куча, min-heap
alhaos 20.05.2026
Двоичная куча Двоичная куча — структура данных, которая всегда держит самый важный элемент наготове. Представьте очередь к хилеру в игре, и очередь из игроков в приоритете те у кого меньше. . .
[golang] Breadth-First Search
alhaos 19.05.2026
BFS (Breadth-First Search) — это базовый алгоритм обхода графа в ширину, который поуровнево исследует все связанные вершины. Он начинает с выбранной точки и проверяет всех соседей, прежде чем. . .
[golang] Алгоритм «Хак Госпера»
alhaos 17.05.2026
Алгоритм «Хак Госпера» Хак Госпера (Gosper's Hack) — алгоритм нахождения следующего по величине числа с тем же количеством установленных бит. Придуман Биллом Госпером в 1970-х, опубликован в. . .
Рисование бинарного древа до 6-го колена на js, svg.
russiannick 17.05.2026
<svg width="335" height="240" viewBox="0 0 335 240" fill="#e5e1bb"> <style> <!]> </ style> <g id="bush"> </ g> </ svg> function fn(){ let rost;/ / высота древа let xx=165,yy=210,w=256;
FSharp: interface of module
DevAlt 16.05.2026
Интерфейс модуля F# позволяет управлять доступностью членов, содержащихся в реализации модуля. По-умолчанию все члены модуля доступны: module Foo let x = 10 let boo () = printfn "boo" . . .
Хитросплетение родственных связей пантеона греческих богов.
russiannick 14.05.2026
Однооконник, позволяющий узреть и изучить отдельных героев древней Греции. <!DOCTYPE html> <html lang="ru"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible". . .
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов. import "math" func angleClock(hour int, minutes int) float64 { . . .
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru