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

Вниз

ComboBox и Object   Найти похожие ветки 

 
Leonid   (2007-12-07 20:32) [0]

Вот добавляю в ComboBox1.Items.AddObject(Str,tobject(Id)); соответсвенно строку и ID, потом считываю из БД ADODataSet1.FieldByName("Id").AsInteger] номер, но никак не пойму как выбрать из ComboBox1 элемент с этим ID, помогите разобраться?


 
Anatoly Podgoretsky ©   (2007-12-07 20:46) [1]

> Leonid  (07.12.2007 20:32:00)  [0]

Непонятно, что именно не понятно?
Может тебе нужно IndexOf, или IndexOfName, или IndexOfObject, или приведение.


 
Leonid   (2007-12-07 20:53) [2]

Нужно получить ItemIndex в котором
храниться ADODataSet1.FieldByName("Id").AsInteger]
У меня есть список стран и городов из базы я выбираю город и хочу чтобы второй ComboBox встал на пункт с ID страны который я ADODataSet1.FieldByName("Id").AsInteger] взял из БД


 
Anatoly Podgoretsky ©   (2007-12-07 20:56) [3]

> Leonid  (07.12.2007 20:53:02)  [2]

Тогда IndexOfObject


 
Leonid   (2007-12-07 20:57) [4]

А можно пример
ComboBox1.IndexOfObject(ADODataSet1.FieldByName("Id").AsInteger]) ? Так?


 
{RASkov} ©   (2007-12-07 20:58) [5]

> [4] Leonid   (07.12.07 20:53)

Ну наверное как-то так:
ComboBox1.ItemIndex:=ComboBox2.Items.IndexOfObject(TObject(ADODataSet1.FieldByNa me("Id").AsInteger));


 
Правильный_Вася   (2007-12-07 20:58) [6]

+ ComboBox.SelectedIndex


 
Anatoly Podgoretsky ©   (2007-12-07 20:59) [7]

> Leonid  (07.12.2007 20:57:04)  [4]

Сделай приведение Ид до TObject


 
Leonid   (2007-12-07 21:00) [8]

А окей, спасибо!


 
Leonid   (2007-12-07 21:02) [9]

Блин

ComboBox2.Items.IndexOfObject(ComboBox2.Items.Objects[ADODataSet1.FieldByName("& #200;Ä_ÎÒÄÅË").AsInteger]);

все равно ошибку выдает (


 
Leonid   (2007-12-07 21:03) [10]

Вот так
ComboBox2.Items.IndexOfObject(ComboBox2.Items.Objects[ADODataSet1.FieldByName("I D").AsInteger]);


 
{RASkov} ©   (2007-12-07 21:06) [11]

> [9, 10] Leonid   (07.12.07 21:02)

Сам-то понял, что наворотил???
Твоя строка выглядит так
Что-то:=ADODataSet1.FieldByName("I D").AsInteger;


 
Правильный_Вася   (2007-12-07 21:08) [12]


> все равно ошибку выдает (

а справку почитать по используемым свойствам - никак?


 
Leonid   (2007-12-07 21:12) [13]

Шикарно ComboBox.SelectedIndex - это выбранный в данный момент ID и что мне это дает??? Ничего!


 
{RASkov} ©   (2007-12-07 21:13) [14]

> [9, 10, 13] Leonid   (07.12.07 21:02)
> все равно ошибку выдает (

А ошибку выдает List Index of Bounds, так?


 
Leonid   (2007-12-07 21:13) [15]

Да эту ошибка
Блин я и так пробовал
ComboBox2.Items.IndexOfObject(TObject(ADODataSet1.FieldByName("ID").AsInteger)) Все равно не тот ID что у селекта


 
{RASkov} ©   (2007-12-07 21:17) [16]

> [15] Leonid   (07.12.07 21:13)

По крайней мере вот это
ComboBox2.Items.IndexOfObject(TObject(ADODataSet1.FieldByName("ID").AsInte ger))
хоть синтаксически верно написано.... а что же у тебя там не получается....
Ты либо подробнее рассказывай, либо подкрепляй вопросы проблемным кодом....


 
Правильный_Вася   (2007-12-07 21:19) [17]

у какого селекта?
тебе нужно найти в списке то, что взято из базы
или найти в базе то, что выбрано в списке?


 
Leonid   (2007-12-07 21:22) [18]

Я делаю

ADODataSet1.CommandText := "SELECT ID FROM table";
ADODataSet1.Open;
ID := ADODataSet1.FieldByName("ID").AsInteger);

У меня есть уже заполенный ComboBox, его я заполял так  ComboBox4.Items.AddObject(Str,tobject(Id));

Например:

Москва
Питер
Лондон

Допустим у меня ID Мосвы в базе 33, в  ComboBox4 ItemIndex Москвы 0, мне нужно что бы я по полученному ID из базы смог встать в ComboBox4 на правильную позицию.


 
Leonid   (2007-12-07 21:23) [19]

Блин ну я на PHP программист, за Delphi лет 5-ть не садился уже, мне сложно все тонкости вспомнить =(((


 
{RASkov} ©   (2007-12-07 22:39) [20]

> [19] Leonid   (07.12.07 21:23)

Сумеешь разобраться вот в этом:
DFM:
object Form1: TForm1
 Left = 192
 Top = 114
 Width = 239
 Height = 207
 Caption = "Form1"
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = "MS Sans Serif"
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object ComboBox1: TComboBox
   Left = 4
   Top = 144
   Width = 145
   Height = 21
   ItemHeight = 13
   TabOrder = 0
 end
 object StringGrid1: TStringGrid
   Left = 4
   Top = 8
   Width = 213
   Height = 133
   ColCount = 3
   TabOrder = 1
 end
end

PAS:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Grids, StdCtrls;

type
 TForm1 = class(TForm)
   ComboBox1: TComboBox;
   StringGrid1: TStringGrid;
   procedure FormCreate(Sender: TObject);
   procedure StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var Form1: TForm1;

implementation
{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var N: Integer;
begin
 StringGrid1.Cells[1,1]:="Москва";
 StringGrid1.Cells[1,2]:="Киев";
 StringGrid1.Cells[1,3]:="Вольск";
 StringGrid1.Cells[1,4]:="Стамбул";
 StringGrid1.Cells[2,1]:="33";
 StringGrid1.Cells[2,2]:="112";
 StringGrid1.Cells[2,3]:="97512";
 StringGrid1.Cells[2,4]:="456";
 for N:=1 to 4 do
  ComboBox1.Items.AddObject(StringGrid1.Cells[1, N], TObject(StrToInt(StringGrid1.Cells[2, N])));
end;

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer; var CanSelect: Boolean);
begin
 ComboBox1.ItemIndex:=ComboBox1.Items.IndexOfObject(TObject(StrToInt(StringGrid1. Cells[2, ARow])));
end;

end.

Или опять не то? Только не говори, что у тебя БД, а здесь обычный стринггрид....


 
Леон   (2007-12-10 10:44) [21]


> Вот добавляю в ComboBox1.Items.AddObject(Str,tobject(Id));
>  соответсвенно строку и ID, потом считываю из БД ADODataSet1.
> FieldByName("Id").AsInteger] номер, но никак не пойму как
> выбрать из ComboBox1 элемент с этим ID, помогите разобраться?
>

Я сталкивался с подобной проблемой... может этот путь Вам поможет.
1. использовал класс-обёртку над integer вроде
type
 TMyInt = class (TObject)
   value: integer;
   constructor Create( _value: integer);
 end;

тогда заполнение ComboBox:
...AddObject(Str, TMyInt.Create(ID) );
2. поиск _нужной_ строки в ComboBox можно делать перебором в цикле всех строк и выбор той, у которой ID = искомому ID
if (ComboBox.Objects[ComboBox.ItemIndex] as TMyInt).Value=ID then...



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

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

Наверх




Память: 0.51 MB
Время: 0.01 c
15-1196606871
Lip
2007-12-02 17:47
2008.01.06
ACM турниры и реальные задачи! Какая связь?


4-1181989365
cosinus
2007-06-16 14:22
2008.01.06
Как с помощью WinAPI расшарить папку на удаленном компе?


2-1197230296
alikon1
2007-12-09 22:58
2008.01.06
Как получить данные из таблицы.


15-1196616127
manevil
2007-12-02 20:22
2008.01.06
acer 5520g


2-1197363838
Molodoi
2007-12-11 12:03
2008.01.06
DBGridEh