Текущий архив: 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.48 MB
Время: 0.014 c