void CreateComboBox TLabel int ind Boxs curr_b new TComboBox l- Parent

 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
void CreateComboBox(TLabel *l,int ind) {
Boxs[curr_b] = new TComboBox(l->Parent);
Boxs[curr_b]->Parent = l->Parent;
Boxs[curr_b]->Left = 30;
Boxs[curr_b]->Top = top;
Boxs[curr_b]->Width = 235;
//-----------Заполнение комбобокса
String ColumnName = DataModule2->ADODataSet1->Fields->Fields[ind]->FieldName; // Имя поля по которому осущ. связь
ExecQuery("exec ПоискСвязи \'" + ColumnName + "\'" );
Boxs[curr_b]->Items->Clear();
String s = DataModule2->ADOQuery1->FieldValues["name"];
name_table[curr_b] = new String(s);//Заносится имя родит.таблицы
String t, t2, p = "";
if (s == "Договора") {
t = "Компания"; //Какое поле брать из родительской таблицы
doublefield[curr_b] = 0;
}
else if (s == "Пункт назначения") {
t = "Место назначения";
doublefield[curr_b] = 0;
}
else if (s == "Суда") {
t = "Название";
doublefield[curr_b] = 0;
}
else if (s == "Пассажиры" || s == "Персонал") {
t = "ФИО";t2 = "Паспорт";
doublefield[curr_b] = 1;
}
else if (s == "Рейсы") {
t = "Дата";t2 = "Название" ;
p = ",Суда where [Код судна] = Суда.Код";
Boxs[curr_b]->Tag = ftDateTime;
doublefield[curr_b] = 1; //Два значения из родит или одно.
}
if (doublefield[curr_b] == 0) {
l->Caption = t;
ExecQuery("select Код,[" + t + "] from [" + s +"]");
} else {
l->Caption = t + "|" + t2;
ExecQuery("select " + s + ".Код,[" + t + "],[" + t2 + "] from [" + s +"]" + p);//особый случай
}
for (int i=0; i<DataModule2->ADOQuery1->RecordCount; i++) {
if (doublefield[curr_b] == 0)
Boxs[curr_b]->Items->Add(DataModule2->ADOQuery1->FieldValues[t]);
else {
String tmp = DataModule2->ADOQuery1->FieldValues[t]+ "|";
tmp += DataModule2->ADOQuery1->FieldValues[t2];
Boxs[curr_b]->Items->Add(tmp); //Заполнение Бокса
}
DataModule2->ADOQuery1->Next();
}
DataModule2->ADOQuery1->Close();//- Конец заполнения
if (Form4->Tag == 2) {
Boxs[curr_b]->ItemIndex = -1;
if (doublefield[curr_b] == 0)
Boxs[curr_b]->Text = DataModule2->ADOQuery2->FieldValues[t];
else
Boxs[curr_b]->Text = DataModule2->ADOQuery2->FieldValues[t + '|' + t2];
} else Boxs[curr_b]->ItemIndex = 0;
Boxs[curr_b]->OnKeyPress = Form4->MyKeyPress;
str_boxs+=",[" + ColumnName + "] = *";
ends += ",["+ColumnName+"]"; //Формирование SQL
}