Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.02.13;
Скачать: CL | DM;

Вниз

Два ComboBox a один Items.   Найти похожие ветки 

 
Leshiy ©   (2003-02-01 10:45) [0]

Здравствуйте Мастаки.
Существует, скажем, 2 ComboBox"a. Можно ли сделать (через указатели или еще как-нибудь) чтобы свойства Items первого и второго имели доступ к одному и тому-же списку строк.


 
Song ©   (2003-02-01 15:27) [1]

ComboBox1.Items.Assign(ComboBox2.Items)


 
Darkwin ©   (2003-02-01 17:46) [2]

Чтобы был один списо на двоих - только через указатели, но как то странно они себя ведут после этого...
В одном список отображается а в другом нет, хотя у второго итемс не тот же что и упервого, почему не понятно ???
procedure TForm1.FormCreate(Sender: TObject);
var
p1,p2:Pointer;
begin
p1:=@(ComboBox1.Items);
p2:=@(ComboBox2.Items);
old:=p2;
TStrings(p2^):=TStrings(p1^);
ComboBox1.Items.Add("1");
ComboBox2.Items.Add("2");
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.AddStrings(ComboBox1.Items);
Memo1.Lines.Add("");
Memo1.Lines.AddStrings(ComboBox2.Items);
end;


 
Darkwin ©   (2003-02-01 17:47) [3]

сорри,

> В одном список отображается а в другом нет, хотя у второго
> итемс не тот же что и упервого, почему не понятно ???

В одном список отображается а в другом нет, хотя у второго итемс тот же что и упервого, почему не понятно ???



 
Leshiy ©   (2003-02-03 07:43) [4]


Song © (01.02.03 15:27)
Assign не пойдет, так как он просто копирует Items"ы одного в другой.

Darkwin © (01.02.03 17:46)
Странно. Когда открываешь второй ComboBox - то заметно что количество Items"ов как у первого, вот только значений не видно. :(


 
AlexSV ©   (2003-02-03 11:09) [5]

А не проще ли ComboBox1.Items := ComboBox2.Items ?


 
Leshiy ©   (2003-02-03 11:34) [6]

AlexSV © (03.02.03 11:09)
Не пойдет, т.к. так-же как и assign - просто копирует из одного в другой.


 
Игорь Шевченко ©   (2003-02-03 11:46) [7]

А еще вопрос - зачем нужна такая задача ?


 
Юрий Федоров ©   (2003-02-03 12:06) [8]

Похоже что никак не сделаешь
CB_ADDSTRING создает себе копию, например.
Да и действительно зачем???


 
Leshiy ©   (2003-02-03 12:07) [9]

Игорь Шевченко © (03.02.03 11:46)
Скажем, существует 3 ComboBox"а и 3 PickList"а, их содержимое обсолютно одинаково. Причем их заполнение происходит в run-time, помимо этого эти списки могут изменяться .
1. Зачем заполнять все ComboBox"ы одним и тем же, т.е. экономия ресурсов.
2. При изменении списка не надо копировать из одного во все другие (Assign, ..Items:=..Items, и т.д., и т.п.).


 
Толик ©   (2003-02-03 12:22) [10]

Блин, народ, а руками рисовать не пробовали??? Один обработчик OnDrawItem на все ComboBox"ы и будет Вам счастье.
p.s.
Только Item"ы надо брать из своего, руками созданного списка


 
Leshiy ©   (2003-02-03 12:29) [11]

Толик © (03.02.03 12:22)
Спасибо, попробую.

Кстати, пример Darkwin"а работает, только однобоко. Т.е. при изменении ComboBox1 или ComboBox2 изменения отображаются только в ComboBox1.


 
Игорь Шевченко ©   (2003-02-03 12:34) [12]

Leshiy © (03.02.03 12:07)

> т.е. экономия ресурсов


В Recycle Bin такую экономию ресурсов и лишение премии, сразу.


 
Leshiy ©   (2003-02-03 12:38) [13]

Игорь Шевченко © (03.02.03 12:34)
?????


 
Darkwin ©   (2003-02-03 15:08) [14]


> Кстати, пример Darkwin"а работает, только однобоко. Т.е.
> при изменении ComboBox1 или ComboBox2 изменения отображаются
> только в ComboBox1.


Вот и я о том же... Но если вывести в Мемо итемсы из первого и второго Комбобоксов, то они будут совешенно одинаковые. Но, почему эти данные не отображаются во втором, я понять не могу.



Страницы: 1 вся ветка

Текущий архив: 2003.02.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
14-38520
Wonder
2003-01-28 16:49
2003.02.13
Тем, у кого халявный доступ в инет


3-38092
Виталий Панасенко
2003-01-27 14:55
2003.02.13
DBGridEh


7-38588
Zhirnov Maxim
2002-12-07 13:07
2003.02.13
Как организовать печать на принтере


4-38634
MystiX
2003-01-02 18:59
2003.02.13
Компоненты в DLL !!!!


1-38361
Сергей
2003-02-04 01:00
2003.02.13
Хранение информации