Criar índice no listview
Bom dia,
Minha necessidade é carregar um listview e depois ler uma tabela e vincular cada campo da tabela à um item do listview.
Para que, posteriormente, quando o usuário checkar alguns dos itens do listview, o sistema saiba qual campo que deve ser alterado na tabela, de acordo com os itens que foram checados..
Tenho duas funções, a primeira vincula o nome do campo com o item do listview, que funciona normalmente; e a segunda que busca na tabela do banco de dados quais os campos que estão com valor = ´S´ e esses campos devem ter os respectivos itens do listview checados..essa função não está funcionando....o sistema não consegue buscar o item que foi guardado na primeira função o nome do campo...
Código :
procedure TdtmCadastro.LigaListViewCampo(lvEntrada : TListView; Tabela : TClientDataSet);
var
I, J : Integer;
ListaItem : TStrings;
begin
ListaItem:=TStringList.Create;
{Vincula o campo na tabela de acessos que representa o item}
with lvEntrada do
begin
For I := 0 to Pred(Items.Count) do
ListaItem.add(lvEntrada.Items[i].Caption);
Clear;
J := 0;
For j := 0 to Pred(Tabela.FieldCount) do
if copy(tabela.Name,1,3) = ´ENT´ then
break;
for i := 0 to PRed(ListaItem.Count) do
begin
with Items.Add do
begin
Caption := ListaItem.Strings[i];
Data := PChar(Tabela.Fields[j].Name);
Inc(J);
end;
end;
end;
procedure TdtmCadastro.CarregaPermissoes(lvEntrada, lvSaida: TListView; Empresa, Filial : String);
var
I: Integer;
msn : String;
begin
{Seleciona o perfil de acesso}
ExecuteQuery(SQL,´SELECT * from PARAMETRO));
try
{Seleciona o perfil de acesso da entidade}
if not SQL.IsEmpty then
begin
LigaListViewCampo(lvEntrada, cds_Param);
{Permissoes de entrada}
with lvEntrada do
For I := 0 to Pred(Items.Count) do
Items[I].Checked := SQL.FieldByName(PChar(Items[I].Data)).AsString = ´S´;
finally
SQL.Close;
end;
Procedure ButtonClick
begin
{Vincula o campo na tabela de acessos que representa o item}
LigaListViewCampo(lswEntrada, cds_Param);
{Carrega as permissões de acesso definidas}
CarregaPermissoes(lswEntrada);
end;
Obrigado.
Minha necessidade é carregar um listview e depois ler uma tabela e vincular cada campo da tabela à um item do listview.
Para que, posteriormente, quando o usuário checkar alguns dos itens do listview, o sistema saiba qual campo que deve ser alterado na tabela, de acordo com os itens que foram checados..
Tenho duas funções, a primeira vincula o nome do campo com o item do listview, que funciona normalmente; e a segunda que busca na tabela do banco de dados quais os campos que estão com valor = ´S´ e esses campos devem ter os respectivos itens do listview checados..essa função não está funcionando....o sistema não consegue buscar o item que foi guardado na primeira função o nome do campo...
Código :
procedure TdtmCadastro.LigaListViewCampo(lvEntrada : TListView; Tabela : TClientDataSet);
var
I, J : Integer;
ListaItem : TStrings;
begin
ListaItem:=TStringList.Create;
{Vincula o campo na tabela de acessos que representa o item}
with lvEntrada do
begin
For I := 0 to Pred(Items.Count) do
ListaItem.add(lvEntrada.Items[i].Caption);
Clear;
J := 0;
For j := 0 to Pred(Tabela.FieldCount) do
if copy(tabela.Name,1,3) = ´ENT´ then
break;
for i := 0 to PRed(ListaItem.Count) do
begin
with Items.Add do
begin
Caption := ListaItem.Strings[i];
Data := PChar(Tabela.Fields[j].Name);
Inc(J);
end;
end;
end;
procedure TdtmCadastro.CarregaPermissoes(lvEntrada, lvSaida: TListView; Empresa, Filial : String);
var
I: Integer;
msn : String;
begin
{Seleciona o perfil de acesso}
ExecuteQuery(SQL,´SELECT * from PARAMETRO));
try
{Seleciona o perfil de acesso da entidade}
if not SQL.IsEmpty then
begin
LigaListViewCampo(lvEntrada, cds_Param);
{Permissoes de entrada}
with lvEntrada do
For I := 0 to Pred(Items.Count) do
Items[I].Checked := SQL.FieldByName(PChar(Items[I].Data)).AsString = ´S´;
finally
SQL.Close;
end;
Procedure ButtonClick
begin
{Vincula o campo na tabela de acessos que representa o item}
LigaListViewCampo(lswEntrada, cds_Param);
{Carrega as permissões de acesso definidas}
CarregaPermissoes(lswEntrada);
end;
Obrigado.
Andreyrf
Curtidas 0
Respostas
Andreyrf
11/04/2008
Já resolvido
Já resolvido
Já resolvido
GOSTEI 0