Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Вниз

Я походу или плохо выспался, или ооочень мало знаю, или тупой 


Reticent   (2002-04-15 18:27) [0]

В ComboBox есть 3 значения. Как мне програмным путем сказать, что выбран тот-то? Я пробовал
ADOComboBox97Ex.ItemIndex:=ADOComboBox97Ex.Items.IndexOf(defName);
Не то выдает. :( Потому что если посмотреть ADOComboBox97Ex.Text - он совсем не то показывает.

Мне просто из трех, надо одно актуальное установить. (всхлипывая)

Помоготе... пожалуста...



Song   (2002-04-15 18:34) [1]

TComboBox.ItemIndex
Не знаю, почему у Вас не получается.



Андрей Сенченко   (2002-04-15 19:01) [2]

То, что нумерация Index с нуля - не забыл ?



Yakudza   (2002-04-15 19:03) [3]

Должно работать без проблем.
Может у тебя defName неправильно передаеться, посмотри в режиме дебага, что там происходит ?



Reticent   (2002-04-15 19:35) [4]

Да вот именно, что неважно что в defName стоит. Т.к. после выполнения команды значение остается на том, которое было :(

Вот если := цифра, то идет. Но я заранее не знаю какое имя должно выбираться. Знаю только, что оно в defName. И что-то не в какую



Андрей Сенченко   (2002-04-15 20:03) [5]

>> Reticent © (15.04.02 19:35)

Что-то не так.
.ItemIndex однозначно определяет индекс записи ( в Твоем случае от 0 до 2 )
Я не встречался с приведенным Тобой компонентом ADOComboBox97Ex, но судя по тому коду, что Ты выдал в .Text должно бы содержаться то самое defName. Вопросы:
1. А оно (defName) задано ?
2. Выбранный Тобой компонент индексирует значение по умолчанию или же хранит отдельно ?



Reticent   (2002-04-16 11:11) [6]

2 Андрей Сенченко ,

ADOComboBox97Ex - это простой, немного измененный, ComboBox.

defName - задано.

ADOComboBox97Ex.ItemIndex:=ADOComboBox97Ex.Items.IndexOf(defName);
Вторая половина правильно написана? Я уже думаю, может тут что не так.



Reticent   (2002-04-16 11:14) [7]

2 Андрей Сенченко ,

ADOComboBox97Ex - это простой, немного измененный, ComboBox.

defName - задано.

ADOComboBox97Ex.ItemIndex:=ADOComboBox97Ex.Items.IndexOf(defName);
Вторая половина правильно написана? Я уже думаю, может тут что не так.
Да, еще вопросик: "Если я Item



Song   (2002-04-16 11:16) [8]

Text зависит от ItemIndex



Reticent   (2002-04-16 11:23) [9]

А вот это правильно ???
:=ADOComboBox97Ex.Items.IndexOf(defName);

пожалста, подскажите. А то я уже начинаю чувствовать себя недотепой, а обратно начинать учить Делфы заново ооочень не охото :), да и времени не так много.

Может есть какая другая возможность определить Id по заданному имени?



Андрей Сенченко   (2002-04-16 11:27) [10]

Привел бы весь код процедуры, а ?
Я лично никак не могу понять ЧТО Ты хочешь получить.



Song   (2002-04-16 11:28) [11]

Правильно так: (бред какой-то)
With ComboBox1 Do S:=Items[Items.IndexOf(S)];

А дело всё в "это простой, немного измененный, ComboBox", ИМХО



Reticent   (2002-04-16 11:45) [12]

Весь код.... хм... Сложновато.

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 далее



esu   (2002-04-16 11:51) [13]

гм... Я в таких случаях
1. Смотрю пошагово чего и где хранится и передается.
2. Проверяю с конкретными значениями (ну там забил несколько строк и выбрал конкретную)
3. Даю посмотреть на код соседу, обычно после долгой работы глаза замозоливаются :)
4. Ставлю стандартный компонент и смотрю как это работает без "шашечек"
5. Окончательно схожу с ума и в цикле перебираю все итемы, сравниваю их с предложенным и чешу репу.
PS А где ж этот defName объявляется ?



Reticent   (2002-04-16 11:57) [14]

defName : string; // :-)

я ужо и репу чесал и смотреть давал, и вот, теперь, тут надеюсь на помощь собратьев.

ps: defName -теперь defMandantName , и т.п.




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.29;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.018 c
6-94536           avk                   2002-02-15 22:51  2002.04.29  
TStream...получение картинки...


3-94323           vopros                2002-04-09 13:16  2002.04.29  
Срочно. Как в DbgridEH, сделать чтобы формат представления числа


14-94574          False                 2002-03-20 12:28  2002.04.29  
Какое расширение имееи Oracle?


7-94603           Александр!            2002-01-30 14:13  2002.04.29  
Абсолютная запись на HDD i FDD???


3-94334           Kirill_Other          2002-04-09 09:20  2002.04.29  
Где можно скачать PowerDesigner с лекарством?