Fórum Capturar conteúdo selecionado no ListView #600845
27/02/2019
0
Grato.
Sérgio Ferreira
Curtir tópico
+ 0Posts
28/02/2019
Hélio Devmedia
Imagino que você esteja falando do ListView do firemonkey... Então é muito simples...
Crie uma tabela com itens Raio-X de Coluna Lombar / Tomografia / Ultrassom e um ID associado a cada um e mostre no listView.
Faça uma rotina que a medida que o cliente marca ou desmarca, é gravado ou excluido de uma segunda tabela o id da primeria, com outros dados que seja do seu interesse...
Espero ter esclarecido. Um forte abraço e fique com Deus.
Gostei + 0
28/02/2019
Sérgio Ferreira
Imagino que você esteja falando do ListView do firemonkey... Então é muito simples...
Crie uma tabela com itens Raio-X de Coluna Lombar / Tomografia / Ultrassom e um ID associado a cada um e mostre no listView.
Faça uma rotina que a medida que o cliente marca ou desmarca, é gravado ou excluido de uma segunda tabela o id da primeria, com outros dados que seja do seu interesse...
Espero ter esclarecido. Um forte abraço e fique com Deus.
Perdão! Sou novato aqui e por não saber utilizar este fórum, deixei o texto muito superficial... sou um autodidata e por isso agradeço a paciência de vocês.
Não estava me referindo ao FireMonkey, estou tentando criar uma aplicação para desktop mesmo...agora, devido a minha pouca experiencia, fica difícil para mim criar uma rotina para a minha necessidade.
Gostei + 0
28/02/2019
Hélio Devmedia
O ListView do firemonkey é o componente da agenda telefônica enquanto o listView da VCL é o Explorer do windows...
Até dá para usar só que fica bem mais complicado... o correto seria você utilizar algo como um TCheckListBox... assim você pode utilizar a mesma idéia que eu mencionei anteriormente...
Gostei + 0
01/03/2019
Sérgio Ferreira
O ListView do firemonkey é o componente da agenda telefônica enquanto o listView da VCL é o Explorer do windows...
Até dá para usar só que fica bem mais complicado... o correto seria você utilizar algo como um TCheckListBox... assim você pode utilizar a mesma idéia que eu mencionei anteriormente...
Obrigado! Vou verificar e testar.
Gostei + 0
01/03/2019
Daniel Araújo
O ListView da VCL tem uma propriedade chamada Selected. Tu pode fazer um laço para percorrer os items do ListView, verificar se aquele item está selecionado, e gravá-lo em banco.
Gostei + 0
01/03/2019
Sérgio Ferreira
O ListView da VCL tem uma propriedade chamada Selected. Tu pode fazer um laço para percorrer os items do ListView, verificar se aquele item está selecionado, e gravá-lo em banco.
Daniel, bom dia!
Veja o código desse form:
unit U_Selecao;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls,
Vcl.ExtCtrls;
type
TfrmSelecao = class(TForm)
Panel1: TPanel;
painel: TPanel;
lblEspecialidades: TLabel;
btnEspecialidades: TBitBtn;
lvEspecialidades: TListView;
Panel2: TPanel;
Label1: TLabel;
lvExames: TListView;
BitBtn1: TBitBtn;
btnSalvar: TBitBtn;
btn_Salvar: TBitBtn;
procedure btnEspecialidadesClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure lvEspecialidadesColumnClick(Sender: TObject; Column: TListColumn);
procedure lvEspecialidadesCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
procedure lvExamesColumnClick(Sender: TObject; Column: TListColumn);
procedure lvExamesCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
procedure lvEspecialidadesCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure lvExamesCustomDrawItem(Sender: TCustomListView; Item: TListItem;
State: TCustomDrawState; var DefaultDraw: Boolean);
procedure btn_SalvarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSelecao: TfrmSelecao;
//var
TForm1: TForm ;
ColIndex: Integer= 0 ;
//Item: TListItem;
implementation
uses
U_ModuloDados;
{$R *.dfm}
procedure TfrmSelecao.BitBtn1Click(Sender: TObject);
var
Item: TListItem;
Begin
with DM.qryExames do
begin
Close;
SQL.Text := 'Select ID_Exame, descricao from exames';
Open;
First;
while not Eof do
begin
Item := lvExames.Items.Add;
Item.Caption := FieldByName('ID_Exame').AsString ;
Item.SubItems.Add(FieldByName('descricao').AsString);
Next;
end;
end;
end;
procedure TfrmSelecao.btnEspecialidadesClick(Sender: TObject);
var
Item: TListItem;
Begin
with DM.qryEspecialidades do
begin
Close;
SQL.Text := 'Select codigo, descricao from Especialidades';
Open;
First;
while not Eof do
begin
Item := lvEspecialidades.Items.Add;
Item.Caption := FieldByName('codigo').AsString ;
Item.SubItems.Add(FieldByName('descricao').AsString);
Next;
end;
end;
end;
procedure TfrmSelecao.btn_SalvarClick(Sender: TObject);
var
Item: TListItem;
i: integer; // declarei aqui a variável local
begin
for i := 0 to lvExames.Items.Count-1 do
begin
DM.fd_Agenda.Append;
DM.fd_Agenda.FieldByName('Exame1').AsString:=lvExames.Items[i].SubItems.Strings[1];
DM.fd_Agenda.FieldByName('Exame2').AsString:=lvExames.Items[i].SubItems.Strings[2];
DM.fd_Agenda.FieldByName('Exame3').AsString:=lvExames.Items[i].SubItems.Strings[3];
DM.fd_Agenda.Post;
end;
end;
procedure TfrmSelecao.FormShow(Sender: TObject);
begin
lvEspecialidadesColumnClick(Sender, lvEspecialidades.Columns[1]);
lvExamesColumnClick(Sender, lvExames.Columns[1]);
end;
procedure TfrmSelecao.lvEspecialidadesColumnClick(Sender: TObject;
Column: TListColumn);
begin
//No evento OnColumnClick do ListView
ColIndex:= Column.Index;
lvEspecialidades.AlphaSort;
end;
procedure TfrmSelecao.lvEspecialidadesCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
begin
If ColIndex = 0 Then
Compare:= CompareText(Item1.Caption, Item2.Caption)
Else
Compare:= CompareText(Item1.SubItems[ColIndex-1],
Item2.SubItems[ColIndex-1]);
end;
procedure TfrmSelecao.lvEspecialidadesCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with lvEspecialidades.Canvas.Brush do
begin
if (Item.Index mod 2) = 0 then
Color := clWhite
else
Color := clSilver;
end;
end;
procedure TfrmSelecao.lvExamesColumnClick(Sender: TObject; Column: TListColumn);
begin
//No evento OnColumnClick do ListView
ColIndex:= Column.Index;
lvExames.AlphaSort;
end;
procedure TfrmSelecao.lvExamesCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
If ColIndex = 0 Then
Compare:= CompareText(Item1.Caption, Item2.Caption)
Else
Compare:= CompareText(Item1.SubItems[ColIndex-1],
Item2.SubItems[ColIndex-1]);
end;
procedure TfrmSelecao.lvExamesCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with lvExames.Canvas.Brush do
begin
if (Item.Index mod 2) = 0 then
Color := clWhite
else
Color := clSilver;
end;
end;
end.
Não sei o que está dando errado.....
Gostei + 0
01/03/2019
Sérgio Ferreira
O ListView da VCL tem uma propriedade chamada Selected. Tu pode fazer um laço para percorrer os items do ListView, verificar se aquele item está selecionado, e gravá-lo em banco.
Daniel, bom dia!
Veja o código desse form:
unit U_Selecao;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Vcl.ComCtrls,
Vcl.ExtCtrls;
type
TfrmSelecao = class(TForm)
Panel1: TPanel;
painel: TPanel;
lblEspecialidades: TLabel;
btnEspecialidades: TBitBtn;
lvEspecialidades: TListView;
Panel2: TPanel;
Label1: TLabel;
lvExames: TListView;
BitBtn1: TBitBtn;
btnSalvar: TBitBtn;
btn_Salvar: TBitBtn;
procedure btnEspecialidadesClick(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure lvEspecialidadesColumnClick(Sender: TObject; Column: TListColumn);
procedure lvEspecialidadesCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
procedure lvExamesColumnClick(Sender: TObject; Column: TListColumn);
procedure lvExamesCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
procedure lvEspecialidadesCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
procedure lvExamesCustomDrawItem(Sender: TCustomListView; Item: TListItem;
State: TCustomDrawState; var DefaultDraw: Boolean);
procedure btn_SalvarClick(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmSelecao: TfrmSelecao;
//var
TForm1: TForm ;
ColIndex: Integer= 0 ;
//Item: TListItem;
implementation
uses
U_ModuloDados;
{$R *.dfm}
procedure TfrmSelecao.BitBtn1Click(Sender: TObject);
var
Item: TListItem;
Begin
with DM.qryExames do
begin
Close;
SQL.Text := 'Select ID_Exame, descricao from exames';
Open;
First;
while not Eof do
begin
Item := lvExames.Items.Add;
Item.Caption := FieldByName('ID_Exame').AsString ;
Item.SubItems.Add(FieldByName('descricao').AsString);
Next;
end;
end;
end;
procedure TfrmSelecao.btnEspecialidadesClick(Sender: TObject);
var
Item: TListItem;
Begin
with DM.qryEspecialidades do
begin
Close;
SQL.Text := 'Select codigo, descricao from Especialidades';
Open;
First;
while not Eof do
begin
Item := lvEspecialidades.Items.Add;
Item.Caption := FieldByName('codigo').AsString ;
Item.SubItems.Add(FieldByName('descricao').AsString);
Next;
end;
end;
end;
procedure TfrmSelecao.btn_SalvarClick(Sender: TObject);
var
Item: TListItem;
i: integer; // declarei aqui a variável local
begin
for i := 0 to lvExames.Items.Count-1 do
begin
DM.fd_Agenda.Append;
DM.fd_Agenda.FieldByName('Exame1').AsString:=lvExames.Items[i].SubItems.Strings[1];
DM.fd_Agenda.FieldByName('Exame2').AsString:=lvExames.Items[i].SubItems.Strings[2];
DM.fd_Agenda.FieldByName('Exame3').AsString:=lvExames.Items[i].SubItems.Strings[3];
DM.fd_Agenda.Post;
end;
end;
procedure TfrmSelecao.FormShow(Sender: TObject);
begin
lvEspecialidadesColumnClick(Sender, lvEspecialidades.Columns[1]);
lvExamesColumnClick(Sender, lvExames.Columns[1]);
end;
procedure TfrmSelecao.lvEspecialidadesColumnClick(Sender: TObject;
Column: TListColumn);
begin
//No evento OnColumnClick do ListView
ColIndex:= Column.Index;
lvEspecialidades.AlphaSort;
end;
procedure TfrmSelecao.lvEspecialidadesCompare(Sender: TObject; Item1,
Item2: TListItem; Data: Integer; var Compare: Integer);
begin
If ColIndex = 0 Then
Compare:= CompareText(Item1.Caption, Item2.Caption)
Else
Compare:= CompareText(Item1.SubItems[ColIndex-1],
Item2.SubItems[ColIndex-1]);
end;
procedure TfrmSelecao.lvEspecialidadesCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with lvEspecialidades.Canvas.Brush do
begin
if (Item.Index mod 2) = 0 then
Color := clWhite
else
Color := clSilver;
end;
end;
procedure TfrmSelecao.lvExamesColumnClick(Sender: TObject; Column: TListColumn);
begin
//No evento OnColumnClick do ListView
ColIndex:= Column.Index;
lvExames.AlphaSort;
end;
procedure TfrmSelecao.lvExamesCompare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
If ColIndex = 0 Then
Compare:= CompareText(Item1.Caption, Item2.Caption)
Else
Compare:= CompareText(Item1.SubItems[ColIndex-1],
Item2.SubItems[ColIndex-1]);
end;
procedure TfrmSelecao.lvExamesCustomDrawItem(Sender: TCustomListView;
Item: TListItem; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
with lvExames.Canvas.Brush do
begin
if (Item.Index mod 2) = 0 then
Color := clWhite
else
Color := clSilver;
end;
end;
end.
Não sei o que está dando errado.....
Mensagem de erro:list index out of bounds (1)
Gostei + 0
08/03/2019
Sérgio Ferreira
Mas agora tenho uma dúvida:
Utilizei este código abaixo, a trezentos anos atrás, quando criei BD no Access e utilizei os componentes ADO....
var vTabela:integer;
begin
for vTabela := 0 to ComponentCount - 1 do
begin
if Components[vTabela]is TADOTable then
(Components[vTabela] as TADOTable).Open;
end;
TabelaNaoLocada;
end;
Só que agora estou usando TFDTable, da FireDac.....como adaptar esse código?
Obrigado!
Sergio
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)