![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Господа, подскажите.
Подскажите как делать правильно (best practice). Есть клас Clients, в классе есть к примеру метод getclients который sqlем из базы возвращает список клиентов. Далее мне необходимо результат выгрузки загрузить в combobox, каким способом из метода забрать результаты выборки? Код:
for что здесь запихнуть do
begin
ComboBox1.Items.Add();
Next;
end; |
|
#2
|
|||
|
|||
|
Пусть для работы с БД мы используем ADO:
Код:
ADOQuery1.First;
While Not ADOQuery1.Eof Do
begin
ComboBox1.Items.Add(ADOQuery1.FieldByName('Field_with_name').AsString);
ADOQuery1.Next;
end;Если надо сохранить при этом ID, то можно пользоваться примерное так: Код:
...
ComboBox1.Items.AddObject(ADOQuery1.FieldByName('Field_with_name').AsString,TObject(ADOQuery1.FieldByName('ID').AsInteger));
... |
|
#3
|
||||
|
||||
|
Переопределить метод AssignTo:
Код:
type
TClients = class(TPersistent)
protected
procedure AssignTo(Dest: TPersistent); override;
end;
procedure TClients.AssignTo(Dest: TPersistent);
begin
TStrings(Dest).Clear;
TStrings(Dest).Add('1');
TStrings(Dest).Add('2');
TStrings(Dest).Add('4');
TStrings(Dest).Add('8');
end;Использовать метод Assign: Код:
begin ComboBox1.Items.Assign(TClients.Create); end; Работает 100%. |
|
#4
|
|||
|
|||
|
Цитата:
Спасибо огромное, работает. Подскажите еще один момент . У меня в выборке возвращаеться два поля ID, NAMECLIENT. как мне таким шахером махером два значение добавить в комбо. Аналогично етому ComboBox1.Items.AddObject(ADOQuery1.FieldByName('F ield_with_name').AsString,TObject(ADOQuery1.FieldB yName('ID').AsInteger)); |
|
#5
|
|||
|
|||
|
Ну так и добавлять (плюс еще одна поправочка на всякий случай):
Код:
type
TClients = class(TPersistent)
protected
procedure AssignTo(Dest: TPersistent); override;
end;
procedure TClients.AssignTo(Dest: TPersistent);
begin
if Dest Is TStrings Then
begin
TStrings(Dest).Clear;
TStrings(Dest).AddObject('1',TObject(1));
TStrings(Dest).AddObject('2',TObject(2));
TStrings(Dest).AddObject('4',TObject(4));
TStrings(Dest).AddObject('8',TObject(8));
end;
end; |
|
#6
|
||||
|
||||
|
Ну уж на то пошло тогда с возбуждением исключения делать, а не в тихую ничего не делая
![]() Код:
procedure TClients.AssignTo(Dest: TPersistent);
begin
if not (Dest is TStrings) then raise Exception.Create('!TStrings');
TStrings(Dest).Clear;
TStrings(Dest).Add('1');
TStrings(Dest).Add('2');
TStrings(Dest).Add('4');
TStrings(Dest).Add('8');
end; |