|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#25
|
|||
|
|||
самый просто способ, при заполнении грида, сопостовлять "поле -> нормальное имя" через case и при взятии значения из combobox делать обратное сопостовление "нормальное имя->поле". типо такова:
Код:
var fields, names: TStringList; function TForm1.GetNameFromField(field: string); begin Result := names[fields.IndexOf(field)]; end; function TForm1.GetFieldFromName(name: string); begin Result := fields[names.IndexOf(name)]; end; procedure TForm1.FormCreate(Sender: TObject); begin fields := TStringList.Create; names := TStringList.Create; fields.Add('fio'); names.Add('Фамилия'); fields.Add('name'); names.Add('Название'); fields.Add('value'); names.Add('Значение'); for i:=0 to ADOQuery1.FieldCount - 1 do Combobox1.Items.Add(GetNameFromField(ADOQuery1.Fields[i].fieldname)); end; procedure TForm1.FilterClick(Sender: TObject); var fieldname: string; begin fieldname := GetFieldFromName(ComboBox1.Text); // тут применение фильтра по полю fieldname end; можно сделать и на массива (но так для понимая проще, как я написал). P.S.: за ошибки не ручаюсь, писалось "на лету" без Delphi, но смысел должен быть понятен Последний раз редактировалось Assistant, 10.03.2011 в 23:46. |