Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Два ComboBox a  один Items. [D6, Win95/98]


Leshiy ©   (2003-02-01 10:45:00) 

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


Darkwin   (2003-02-03 15:08:00) [1]


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


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


Leshiy   (2003-02-03 12:38:00) [2]

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


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

Leshiy © (03.02.03 12:07)

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


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


Leshiy   (2003-02-03 12:29:00) [4]

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

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


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

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


Leshiy   (2003-02-03 12:07:00) [6]

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


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

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


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

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


Leshiy   (2003-02-03 11:34:00) [9]

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


AlexSV   (2003-02-03 11:09:00) [10]

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


Leshiy   (2003-02-03 07:43:00) [11]


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

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


Darkwin   (2003-02-01 17:47:00) [12]

сорри,

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

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


Darkwin   (2003-02-01 17:46:00) [13]

Чтобы был один списо на двоих - только через указатели, но как то странно они себя ведут после этого...
В одном список отображается а в другом нет, хотя у второго итемс не тот же что и упервого, почему не понятно ???
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;


Song   (2003-02-01 15:27:00) [14]

ComboBox1.Items.Assign(ComboBox2.Items)


Наверх

Титульная страница Поиск, карта сайта Написать письмо