#include <vcl.h>
#include "dstring.h"
#include "comctrls.hpp"
#include "dateutils.hpp"
...
AnsiString Cmd_sql;
...
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TListColumn *NewColumn;
TListItem *ListItem;
Cmd_sql="SELECT NamePole, NamePole2, NamePole3 FROM t"
...
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(Cmd_sql);
ADOQuery1->Active=true;
NewColumn = ListView1->Columns->Add();
NewColumn->Caption = "NamePole";
NewColumn =ListView1->Columns->Add();
NewColumn->Caption = "NamePole2";
NewColumn =ListView1->Columns->Add();
NewColumn->Caption = "NamePole3";
ADOQuery1->Open();
ADOQuery1->First();
ListView1->Items->BeginUpdate();
while (!ADOQuery1->Eof) {
ListView1->AddItem(ADOQuery1->FieldByName("NamePole")->AsString,NULL);
ADOQuery1->Next();
}
ListView1->Items->EndUpdate();
}
Заполнение ListView
Код:
в результате в ListView выводятся только названия столбцов, что не верно в цикле по записям в ADOQuery1?
в результате в ListView выводятся только названия столбцов, что не верно в цикле по записям в ADOQuery1?[/QUOTE]
первый параметр вызова AddItem - объект класса TListItem, так что его надо создавать перед добавлением, но можно также использовать метод Add, который это делает, и писать данные уже в созданный объект
кстати, чтобы писать в два других столбца следует использовать свойство SubItems у TListItem
...
ADOQuery1->Open();
ADOQuery1->First();
ListView1->Items->BeginUpdate();
while (!ADOQuery1->Eof) {
ListItem = ListView1->Items->Add();
ListItem->SubItems->Add(ADOQuery1->FieldByName("NamePole")->AsString);
ListItem->AddItem(ADOQuery1->FieldByName("NamePole2")->AsString,NULL);
ListItem->AddItem(ADOQuery1->FieldByName("NamePole3")->AsString,NULL);
ADOQuery1->Next();
}
ListView1->Items->EndUpdate();
так тоже не заполняет
...
ADOQuery1->Open();
ADOQuery1->First();
ListView1->Items->BeginUpdate();
while (!ADOQuery1->Eof) {
ListItem = ListView1->Items->Add();
ListItem->SubItems->Add(ADOQuery1->FieldByName("NamePole")->AsString);
ADOQuery1->Next();
}
ListView1->Items->EndUpdate();
так тоже не заполняет[/QUOTE]
мадам, вы что-то путаете )))
надо вот так (честно говоря я делфист, могу немного с синтаксисом ошибиться):
Код:
...
ListItem = ListView1->Items->Add();
ListItem->Caption = ADOQuery1->FieldByName("NamePole")->AsString;
ListItem->SubItems->Add(ADOQuery1->FieldByName("NamePole2")->AsString);
ListItem->SubItems->Add(ADOQuery1->FieldByName("NamePole3")->AsString);
...
ListItem = ListView1->Items->Add();
ListItem->Caption = ADOQuery1->FieldByName("NamePole")->AsString;
ListItem->SubItems->Add(ADOQuery1->FieldByName("NamePole2")->AsString);
ListItem->SubItems->Add(ADOQuery1->FieldByName("NamePole3")->AsString);
...
Может в свойствах ListView что не так? ViewStyle стоит vsReport
Может в свойствах ListView что не так? ViewStyle стоит vsReport[/QUOTE]
так и должно быть
а вы уверены, что у вас запрос возвращает данные ?
да, у меня на форме пока размещён DBGrid и в нём результат запроса ADOOuery выводится
еще можно проверить так: вместо
Код:
while (!ADOQuery1->Eof) {
ListView1->AddItem(ADOQuery1->FieldByName("NamePole")->AsString,NULL);
ADOQuery1->Next();
}
ListView1->AddItem(ADOQuery1->FieldByName("NamePole")->AsString,NULL);
ADOQuery1->Next();
}
напиши что-нть типа:
Код:
ListView1->AddItem("12345",NULL);
и проверь - если запись появится в списке, значит что-то с самим циклов перебора, если нет - то что-то с самим списком... а вообще отладчик рулит :)
чо-то с самим списком, потому что ListView1->AddItem("12345",NULL) тоже ничего не добавляет
мда... тогда помогут токо танцы с бубнами... поставь на форму рядом новый ЛистВью с настройками по умолчанию и экспериментируй на нем. если все получится - потом смотри чем отличаются они..
свойство OwnerData у ListView вернула в False и список заполняется
ага :) ну вот! список то заполнялся - просто не отрисовывался он, потому что была выключена отрисовка по умолчанию... а зачем выключила то?
так хотелось быстро по примеру из хелпа заполнить ListView, но где-то в синтаксисе ошиблась и начала в панике свойства ListView тыкать :) Потом, когда код поправила и не заполняется - пришлось всё равно про все свойства ListView читать :)