Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];

Вниз

Как вставить 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.015 c
2-1133393751
Юрий Ж.
2005-12-01 02:35
2005.12.18
[?]TClientSocket & TServerSocket


14-1132831661
Axis_of_Evil
2005-11-24 14:27
2005.12.18
Oberon-2 compilers


2-1133337728
Igor_
2005-11-30 11:02
2005.12.18
Предобъявление классов в Object Pascal


2-1133514762
ЖСВ
2005-12-02 12:12
2005.12.18
Есть ли в Delphi6 объявления типа записи таблицы?


3-1130602046
romanich
2005-10-29 20:07
2005.12.18
Как перехватить ошибку из делфи после выполнения ХП





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский