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

Вниз

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

Наверх




Память: 0.5 MB
Время: 0.006 c
4-1182069154
Nightmare
2007-06-17 12:32
2008.01.06
Рамка


2-1197226685
alikon1
2007-12-09 21:58
2008.01.06
Работа с конкретной строкой в DBGrid


9-1161888652
Pa5ha
2006-10-26 22:50
2008.01.06
Физика самолета


15-1196257475
em240
2007-11-28 16:44
2008.01.06
.net+производительность gui приложений


2-1197137950
unknowing
2007-12-08 21:19
2008.01.06
Указатели





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский