转换在线列表视图对象- Delphi



我想知道如何捕获listview和transform对象的行。

我携带一个.xml文件并在listview中播放,加载该文件后,您需要在一行中双击,获取所有数据行并放入LabelEdit,如下面的代码所示。

procedure TForm1.LstbxDadosDblClick(Sender: TObject);
begin
if Assigned(TMensagem(LstbxDados.Items.Objects[LstbxDados.ItemIndex])) then
begin
  with TMensagem(LstbxDados.Items.Objects[LstbxDados.ItemIndex]) do
  begin
  EdtPara.Text      := Para;
  EdtDe.Text        := De;
  EdtCabecalho.Text := Cabecalho;
  EdtCorpo.Text     := Corpo;
  end;
end;
end;
  TMensagem = class
  private
    FCorpo: String;
    FCabecalho: String;
    FPara: String;
    FDe: String;
  public
    property Para : String read FPara write FPara;
    property De : String read FDe write FDe;
    property Cabecalho: String read FCabecalho write FCabecalho;
    property Corpo : String read FCorpo write FCorpo;
  end;

编辑对象的多种方法,其中当前对象可以随时更改(例如双击)。下面是最简单的方法之一:在当前对象更改时保存,并在最后保存。这里有一个快速而肮脏的解决方案。

在实现部分向表单或全局添加成员FLastMensagem: TMensagem;

可能需要在创建或初始化时初始化为nil(留给你)。现在在事件中,当TMensagem对象改变时保存数据

procedure TForm1.LstbxDadosDblClick(Sender: TObject);
var
  LNewMensagem: TMensagem;
begin
  LNewMensagem := TMensagem(LstbxDados.Items.Objects[LstbxDados.ItemIndex]));    
  if Assigned(LNewMensagem) then
  begin
    // When we switch, capture the dialog before updating it      
    if Assigned(FMensagem) and (LNewMensagem <> FLastMensagem) then
    begin
      FLastMensagem.Para := EdtPara.Text;
      FLastMensagem.De := EdtDe.Text;
      FLastMensagem.Cabecalho := EdtCabecalho.Text;
      FLastMensagem.Corpo := EdtCorpo.Text;
    end;
    EdtPara.Text      := LNewMensagem.Para;
    EdtDe.Text        := LNewMensagem.De;
    EdtCabecalho.Text := LNewMensagem.Cabecalho;
    EdtCorpo.Text     := LNewMensagem.Corpo;
    //Set the last dblclicked
    FLastMensagem := LNewMensagem
 end;
end;

当然,最后的编辑需要保存,你可以在一个窗体关闭(不确定你的完整设计是什么)。例如

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if Assigned(FLastMensagem) then
  begin
    FLastMensagem.Para := EdtPara.Text;
    FLastMensagem.De := EdtDe.Text;
    FLastMensagem.Cabecalho := EdtCabecalho.Text;
    FLastMensagem.Corpo := EdtCorpo.Text;
  end;
end;

最新更新