![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ComboBox
Qwer © (2004-07-15 16:38:00)В ComboBox представление значения записываю в Items. Подскажите куда мне записать само значение , допустим ID.
Спасибо !!!
Гаврила (2004-07-15 20:07:00) [1]>>LM2 (15.07.04 17:51) [15, 16]
Это лажа, поимеем проблемы с памятью
если строка, надо в объекты ставить PChar
при этом грамотно управляя выделением \ освободлением памяти
и не парить мозги.
Если же ID - Integer, то памятью управлять вообще не надо, достаточно типизации под TObject и обратно под Integer.
Исключение составляет случай для ID = -1
LM2 (2004-07-15 17:51:00) [2]Ошибся, вместо str, ID поставь
LM2 (2004-07-15 17:50:00) [3]Попробуй так, у меня вроде работает
1) чтоб запихнуть ID
var
ID: string;
begin
ID := '10';
ComboBox1.AddItem('Первая строка', TObject(str));
end;
2)чтоб достать ID
ShowMessage(String(ComboBox1.Items.Objects[ComboBox1.ItemIndex]));
Ega23 (2004-07-15 17:43:00) [4]В LookupComboBox с конкретными значениями работает, а они у меня появляются по в процесе работы ! (
С какими КОНКРЕТНЫМИ значениями? Чё ты несёшь?
Qwer (2004-07-15 17:41:00) [5]В LookupComboBox с конкретными значениями работает, а они у меня появляются по в процесе работы ! (
Ega23 (2004-07-15 17:28:00) [6]Не изобретай велосипед, тебе LookupComboBox нужен, там уже всё реализовано.
Qwer (2004-07-15 17:23:00) [7]clickmaker
Извени что с получением ИДа не так !
type PID: ^TID --- ошибка
Qwer (2004-07-15 17:12:00) [8]DB компонент не пойдет , так как запрос все время разный , а там надо постоянно фиксировать колонку ! (разный по существу а не по данным)
clickmaker (2004-07-15 17:11:00) [9]type PID: ^TID;
s := PID(ComboBox.Items.Objects[ComboBox.ItemIndex]).ID;
Qwer (2004-07-15 17:11:00) [10]DB компонент не пойдет , так как запрос все время разный , а там надо постоянно фиксировать колонку !
Qwer (2004-07-15 17:09:00) [11]clickmaker
Спасибо , а как потом получить этот ИД текущей строки ?
infom (2004-07-15 17:07:00) [12]а помоему надо просто использовать DB компонент
clickmaker (2004-07-15 17:05:00) [13]Маленькая поправка:
TID = record
ID: ShortString;
end;
или юзать class вместо record
clickmaker (2004-07-15 17:04:00) [14]
> Qwer (15.07.04 16:57) [3]
Id у тебя строка? А не число типа integer?
Тогда так
type
TID = record
ID: string;
end;
var Rec: ^TID;
GetMem(Rec, SizeOf(TID));
Rec.ID := ADODataSet1.FieldByName('Id').AsString;
ComboBox3.Items.Add(ADODataSet1.FieldByName('Comp').AsString, TObject(Rec));
потом не забудь FreeMem(Rec) для всех Items
Qwer (2004-07-15 16:57:00) [15]Извените не понял
представление я записываю так :
ComboBox3.Items.Add(ADODataSet1.FieldByName('Comp').AsString);
а как Id записать ? (строка)
и как его потом получить ?
Спасибо !!!
Гаврила (2004-07-15 16:43:00) [16]ComboBox1.Items.Objects[I]
clickmaker (2004-07-15 16:43:00) [17]Items.AddObject