![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Я походу или плохо выспался, или ооочень мало знаю, или тупой
Reticent © (2002-04-15 18:27:00)В ComboBox есть 3 значения. Как мне програмным путем сказать, что выбран тот-то? Я пробовал
ADOComboBox97Ex.ItemIndex:=ADOComboBox97Ex.Items.IndexOf(defName);
Не то выдает. :( Потому что если посмотреть ADOComboBox97Ex.Text - он совсем не то показывает.
Мне просто из трех, надо одно актуальное установить. (всхлипывая)
Помоготе... пожалуста...
Reticent (2002-04-16 11:57:00) [1]defName : string; // :-)
я ужо и репу чесал и смотреть давал, и вот, теперь, тут надеюсь на помощь собратьев.
ps: defName -теперь defMandantName , и т.п.
esu (2002-04-16 11:51:00) [2]гм... Я в таких случаях
1. Смотрю пошагово чего и где хранится и передается.
2. Проверяю с конкретными значениями (ну там забил несколько строк и выбрал конкретную)
3. Даю посмотреть на код соседу, обычно после долгой работы глаза замозоливаются :)
4. Ставлю стандартный компонент и смотрю как это работает без "шашечек"
5. Окончательно схожу с ума и в цикле перебираю все итемы, сравниваю их с предложенным и чешу репу.
PS А где ж этот defName объявляется ?
Reticent (2002-04-16 11:45:00) [3]Весь код.... хм... Сложновато.
2 Song,
Уважаемый, я тоже уже начинал так думать. До меня тут сидел другой программист, а я вот теперь расхлебываю :) Ищу и выправляю ошибки, ввожу новшества. Но я Посмотрел этот "это простой, немного измененный, ComboBox". Там просто кое что добавлено, а существенных изменений нет. Я уже, с божьей помощью, несколько срочных багов убрал. Но этот...... слов нет :)
В общем, есть клиенты (Mandant), они должны брать их банк данных с сервера SQL, в зависимости от имени, выбранного в "ComboBox".
Но! есть возможность "по умолчанию". Клиент тыкает на свой, ранее открытый, банк данных и получает доступ.
Fill_cboSQLServers; // заполняет список серверов
if (a_Params.Server <> "") //если таковые есть (тут стоит строка с именем клиента и сервера)
then begin
defMandantName := Copy(a_Params.Server,1,Pos("@", a_Params.Server)-1); //вырезать имя клиента
Combobox_SQLServer.Text :=Copy(a_Params.Server,Pos("@", a_Params.Server)+1,Length( a_Params.Server)); //вырезать имя сервера
Fill_cboMandanten; //заполнить список клиентами (как раз в ADOComboBox97Ex_Mandant)
if ADOComboBox97Ex_Mandant.Ids.IndexOf(IntToStr(Cfg.DB_CurrentUser.MandantId)) <> -1 then
ADOComboBox97Ex_Mandant.SetId(Cfg.DB_CurrentUser.MandantId)
else
ADOComboBox97Ex_Mandant.ItemIndex:=ADOComboBox97Ex_Mandant.Items.IndexOf(defMandantName); //и вот тут надо по defMandantName узнать соотв. Id в ADOComboBox97Ex_Mandant и установить его.
GetMandantId;// тут просто передается ентот Id далее
Song (2002-04-16 11:28:00) [4]Правильно так: (бред какой-то)
With ComboBox1 Do S:=Items[Items.IndexOf(S)];
А дело всё в "это простой, немного измененный, ComboBox", ИМХО
Андрей Сенченко (2002-04-16 11:27:00) [5]Привел бы весь код процедуры, а ?
Я лично никак не могу понять ЧТО Ты хочешь получить.
Reticent (2002-04-16 11:23:00) [6]А вот это правильно ???
:=ADOComboBox97Ex.Items.IndexOf(defName);
пожалста, подскажите. А то я уже начинаю чувствовать себя недотепой, а обратно начинать учить Делфы заново ооочень не охото :), да и времени не так много.
Может есть какая другая возможность определить Id по заданному имени?
Song (2002-04-16 11:16:00) [7]Text зависит от ItemIndex
Reticent (2002-04-16 11:14:00) [8]2 Андрей Сенченко ,
ADOComboBox97Ex - это простой, немного измененный, ComboBox.
defName - задано.
ADOComboBox97Ex.ItemIndex:=ADOComboBox97Ex.Items.IndexOf(defName);
Вторая половина правильно написана? Я уже думаю, может тут что не так.
Да, еще вопросик: "Если я Item
Reticent (2002-04-16 11:11:00) [9]2 Андрей Сенченко ,
ADOComboBox97Ex - это простой, немного измененный, ComboBox.
defName - задано.
ADOComboBox97Ex.ItemIndex:=ADOComboBox97Ex.Items.IndexOf(defName);
Вторая половина правильно написана? Я уже думаю, может тут что не так.
Андрей Сенченко (2002-04-15 20:03:00) [10]>> Reticent © (15.04.02 19:35)
Что-то не так.
.ItemIndex однозначно определяет индекс записи ( в Твоем случае от 0 до 2 )
Я не встречался с приведенным Тобой компонентом ADOComboBox97Ex, но судя по тому коду, что Ты выдал в .Text должно бы содержаться то самое defName. Вопросы:
1. А оно (defName) задано ?
2. Выбранный Тобой компонент индексирует значение по умолчанию или же хранит отдельно ?
Reticent (2002-04-15 19:35:00) [11]Да вот именно, что неважно что в defName стоит. Т.к. после выполнения команды значение остается на том, которое было :(
Вот если := цифра, то идет. Но я заранее не знаю какое имя должно выбираться. Знаю только, что оно в defName. И что-то не в какую
Yakudza (2002-04-15 19:03:00) [12]Должно работать без проблем.
Может у тебя defName неправильно передаеться, посмотри в режиме дебага, что там происходит ?
Андрей Сенченко (2002-04-15 19:01:00) [13]То, что нумерация Index с нуля - не забыл ?
Song (2002-04-15 18:34:00) [14]TComboBox.ItemIndex
Не знаю, почему у Вас не получается.