ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

[Resolvido] TList em firemonkey mobile

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
leonamjlima
Novato
Novato


Registrado: Sábado, 21 de Novembro de 2009
Mensagens: 58

MensagemEnviada: Ter Dez 16, 2014 10:09 am    Assunto: [Resolvido] TList em firemonkey mobile Responder com Citação

Pessoal, estou com um problema aqui já faz algum tempo.
Não consigo trabalhar com TList em firemonkey mobile, em específico até então testado "Android".
Se eu compilo para Win32 funciona perfeitamente.

O que quero fazer é bem simples.
Criar uma lista de ponteiros ligados a objetos de produtos.

O erro acontece quando tento executar o procedimento de carregar a lista para dentro do memo, algo simples, percorro a lista e vou carregando o memo.

// -------------------------------------------------------------------------------------------
// Objeto responsável para armazenar informações dos produtos
// -------------------------------------------------------------------------------------------
TModelProd = class
private
FPRECO: Double;
FDESCRICAO: String;
FCODPROD: Integer;
procedure SetCODPROD(const Value: Integer);
procedure SetDESCRICAO(const Value: String);
procedure SetPRECO(const Value: Double);
{ private declarations }
protected
{ protected declarations }
public
{ public declarations }
property CODPROD: Integer read FCODPROD write SetCODPROD;
property DESCRICAO: String read FDESCRICAO write SetDESCRICAO;
property PRECO: Double read FPRECO write SetPRECO;
published
{ published declarations }
end;
// -------------------------------------------------------------------------------------------

Tenho FListProd: TList;
Quero criar o ModelProd na memória e armazenar na lista.
Exemplo: FListProd.Add(ModelProd);

Abaixo segue o código utilizado.

// -------------------------------------------------------------------------------------------
unit uFrmPrincipal;

interface

uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Layouts, FMX.Memo, uModelProd;

type
TFrmPrincipal = class(TForm)
btnCriarLista: TButton;
Memo1: TMemo;
Panel1: TPanel;
btnCriarProd: TButton;
btnCarregarMemo: TButton;
procedure btnCriarListaClick(Sender: TObject);
procedure btnCriarProdClick(Sender: TObject);
procedure btnCarregarMemoClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
FListProd: TList;
public
{ Public declarations }
end;

var
FrmPrincipal: TFrmPrincipal;

implementation

{$R *.fmx}

procedure TFrmPrincipal.btnCriarListaClick(Sender: TObject);
begin
if not Assigned(FListProd) then
FListProd := TList.Create;

btnCriarProd.Visible := True;
end;

procedure TFrmPrincipal.btnCriarProdClick(Sender: TObject);
Var
ModelProd: TModelProd;
iCodProd: Integer;
begin
// 1º ITEM
Inc(iCodProd);
ModelProd := TModelProd.Create;
ModelProd.CODPROD := iCodProd;
ModelProd.DESCRICAO := IntToStr(iCodProd) + '-TESTE';
ModelProd.PRECO := 20;
FListProd.Add(ModelProd);

// 2º ITEM
Inc(iCodProd);
ModelProd := TModelProd.Create;
ModelProd.CODPROD := iCodProd;
ModelProd.DESCRICAO := IntToStr(iCodProd) + '-TESTE';
ModelProd.PRECO := 20;
FListProd.Add(ModelProd);

// 3º ITEM
Inc(iCodProd);
ModelProd := TModelProd.Create;
ModelProd.CODPROD := iCodProd;
ModelProd.DESCRICAO := IntToStr(iCodProd) + '-TESTE';
ModelProd.PRECO := 20;
FListProd.Add(ModelProd);

// 4º ITEM
Inc(iCodProd);
ModelProd := TModelProd.Create;
ModelProd.CODPROD := iCodProd;
ModelProd.DESCRICAO := IntToStr(iCodProd) + '-TESTE';
ModelProd.PRECO := 20;
FListProd.Add(ModelProd);

// 5º ITEM
Inc(iCodProd);
ModelProd := TModelProd.Create;
ModelProd.CODPROD := iCodProd;
ModelProd.DESCRICAO := IntToStr(iCodProd) + '-TESTE';
ModelProd.PRECO := 20;
FListProd.Add(ModelProd);

btnCarregarMemo.Visible := True;
end;

procedure TFrmPrincipal.FormCreate(Sender: TObject);
begin
btnCriarLista.Visible := True;
btnCriarProd.Visible := False;
btnCarregarMemo.Visible := False;
end;

// O ERRO ACONTECE AQUI!!!
procedure TFrmPrincipal.btnCarregarMemoClick(Sender: TObject);
var
I: Integer;
begin
Memo1.Lines.Clear;
for I := 0 to FListProd.Count-1 do
Begin
Memo1.Lines.Add(TModelProd(FListProd.Items[i]).DESCRICAO);
End;
end;

end.
// -------------------------------------------------------------------------------------------

Link do codigo fonte:
https://mega.co.nz#!vldxhI7a!YL7_xGVjEfB8z2kvtRktij3sDj3uUrYBPXmtAvVsg0o
Ficaria muito grato se alguém pudesse me ajudar.
Obrigado


Editado pela última vez por leonamjlima em Qua Dez 17, 2014 7:07 am, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
leonamjlima
Novato
Novato


Registrado: Sábado, 21 de Novembro de 2009
Mensagens: 58

MensagemEnviada: Qua Dez 17, 2014 7:07 am    Assunto: Responder com Citação

Resolvi o problema utilizando Generics!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB