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

Вниз

Как вставить Pointer(-1) в ComboBox1.Items.Objects?   Найти похожие ветки 

 
Lexer ©   (2005-11-18 14:15) [0]

procedure TForm1.FormShow(Sender: TObject);
begin
 ComboBox1.Items.AddObject("-2", Pointer(-2));
 ComboBox1.Items.AddObject("-1", Pointer(-1)); //вот здесь то на самом деле в объект ничего не вставилось
 ComboBox1.Items.AddObject("0", Pointer(0));
 ComboBox1.Items.AddObject("1", Pointer(1));
end;

procedure TForm1.cbChange(Sender: TObject);
begin
 Edit1.Text := IntToStr(Integer(ComboBox1.Items.Objects[cb.ItemIndex]));
end;


Откомпилировал в Delphi7.
При выборе в ComboBox значения "-1" - получаем ошибку List index out of bounds(1)
В Delphi4 такого не было, это глюк?
Подскажите как мне вставить в объект значение -1?


 
Leonid Troyanovsky ©   (2005-11-18 14:51) [1]


> Lexer ©   (18.11.05 14:15)  

> Подскажите как мне вставить в объект значение -1?


Вставлять-то оно вставляет, а вот получать придется так:

Value := ListBox1.Perform( LB_GETITEMDATA, idx, 0)]

--
Regards, LVT.


 
Lexer ©   (2005-11-18 15:04) [2]

idx - это индекс элмента? или нет? данные не возвращаются


 
Leonid Troyanovsky ©   (2005-11-18 15:12) [3]


> Lexer ©   (18.11.05 15:04) [2]
> idx - это индекс элмента? или нет? данные не возвращаются


Да, индекс элемента. ItemIndex. А чего возвращается? :(

Например, в моей D6 & 2k3 - ok.
Хотя, скорее всего, оное косяк Борланда, неохота, правда, искать.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-11-18 15:14) [4]


> Leonid Troyanovsky ©   (18.11.05 15:12) [3]

> Да, индекс элемента. ItemIndex. А чего возвращается? :(


А.. дошло.
Тебе нужен ComboBox1.Perform(CB_GETITEMDATA, idx,0)

--
Regards, LVT.


 
Lexer ©   (2005-11-18 15:22) [5]

Leonid Troyanovsky ©   (18.11.05 15:14) [4]

Я делал тоже самое, но аболютно нечего не возвращается, попробовал так:
procedure TForm1.FormShow(Sender: TObject);
var i: integer;
begin
for i:=-10 to 20 do
 ComboBox1.Items.AddObject(IntToStr(i), TObject(PChar(IntToStr(i))));
end;

procedure TForm1.cbChange(Sender: TObject);
begin
 Edit1.Text := String(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
end;

И о чудо!!!! -1 прексрано вставился, отобразился как и другие эл-ты.... но некторые объекты просто исчезли, например -9, 18, 15 их как и не было....
что за глюки, блин, это уже совсем не смешно...


 
Leonid Troyanovsky ©   (2005-11-18 15:30) [6]


> Lexer ©   (18.11.05 15:22) [5]

> Я делал тоже самое, но аболютно нечего не возвращается


А что значит "не возвращается"? Зависает, что ли?

Приведи испытанный код с CB_GETITEMDATA.
Обещаю его воспроизвести, по-крайней мере, на своей машине.

--
Regards, LVT.


 
Lexer ©   (2005-11-18 15:32) [7]

procedure TForm1.FormShow(Sender: TObject);
var i: integer;
begin
for i:=-10 to 20 do
ComboBox1.Items.AddObject(IntToStr(i), TObject(PChar(IntToStr(i))));
end;

procedure TForm1.cbChange(Sender: TObject);
begin
Edit1.Text := ComboBox1.Perform(CB_GETITEMDATA, ComboBox1.ItemIndex,0)
end;


 
MBo ©   (2005-11-18 15:39) [8]

Не оно?
http://codecentral.borland.com/Item.aspx?id=18872


 
Leonid Troyanovsky ©   (2005-11-18 15:41) [9]


> Lexer ©   (18.11.05 15:32) [7]


Издеваешься, да?
Во-первых, я просил уже испытанное, т.е. по_крайней мере компилируемое.
Во-вторых, какая связь Pointer(-1) vs TObject(PChar(IntToStr(i)))

--
Regards, LVT.


 
Lexer ©   (2005-11-18 15:50) [10]

я не издеваюсь, задача должна быть решена, независимо от того через како мето её решили, хоть PChar =)
MBo, Leonid Troyanovsky, спасибо за помощь, оказывается это давно известный глюк


 
Leonid Troyanovsky ©   (2005-11-18 15:58) [11]


> Lexer ©   (18.11.05 15:50) [10]
> я не издеваюсь, задача должна быть решена, независимо от
> того через како мето её решили, хоть PChar =)


Если ты уж решил использовать то место, на которое рассчитывал Борланд,
то должен был создать честный TObject, который и содержал бы
вожделенную -1.

--
Regards, LVT.


 
Lexer ©   (2005-11-18 16:11) [12]


Leonid Troyanovsky ©   (18.11.05 15:58)
Если ты уж решил использовать то место, на которое рассчитывал Борланд,
то должен был создать честный TObject, который и содержал бы
вожделенную -1.


Вот это то и надо!!! В четверке всё было ok, а в семерке при добавлнии TObject(-1) - объект пустой, даже не nil, его просто нет...


 
Leonid Troyanovsky ©   (2005-11-18 16:16) [13]


> Lexer ©   (18.11.05 16:11) [12]

> при добавлнии TObject(-1) - объект пустой, даже не nil,
> его просто нет...


Сам ты пустой.
Говорят же тебе, получить значение можно. См. выше.
Не проверишь, обижусь.

--
Regards, LVT.


 
Lexer ©   (2005-11-18 16:18) [14]

[8] MBo ©   (18.11.05 15:39)
Не оно?
http://codecentral.borland.com/Item.aspx?id=18872


Посмотрел, к сожалению не оно :(
Он фиксит то что "на некоторых ОС выбор пустой строки в TComboBox приводил к Access Violation".


 
Lexer ©   (2005-11-18 16:35) [15]

procedure TForm1.FormShow(Sender: TObject);
var i:integer;
begin
for i:=-10 to 20 do
ComboBox1.Items.AddObject(IntToStr(i), TObject(i));
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
Edit1.Text := IntToStr(ComboBox1.Perform(CB_GETITEMDATA, ComboBox1.ItemIndex, 0));
end;

полностью рабочий вариант, LVT спасиб =)


 
Leonid Troyanovsky ©   (2005-11-18 16:40) [16]


> Lexer ©   (18.11.05 16:35) [15]

> полностью рабочий вариант, LVT спасиб =)


Тотож :) На здоровье.

--
Regards, LVT.



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

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

Наверх




Память: 0.51 MB
Время: 0.043 c
8-1121283501
melena
2005-07-13 23:38
2005.12.18
пульсирующий шарик


6-1118759871
Mac333
2005-06-14 18:37
2005.12.18
IdSMTP и TIdAttachment -> Content-Type: text/html -> text/plain ?


14-1132836140
syte_ser78
2005-11-24 15:42
2005.12.18
существуюттли форумы для локальной сети?


10-1109505053
Port 111
2005-02-27 14:50
2005.12.18
Работа с Word по шаблонам


2-1133341058
solomon
2005-11-30 11:57
2005.12.18
Как в TWebBrowser е отключить загрузку картинок