Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-03-2012
ungrande87 ungrande87 is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 42
Poder: 0
ungrande87 Va por buen camino
Formularios con TListView?

Hola necesito ayuda para lo siguiente: Tengo 3 Tform.El 1ro es el principal con enlaces a los otros dos, el 2do tiene un TListView donde deberian estar los articulos cargados y 3 botones (Nuevo, Eliminar y Modificar) y el 3ro Tform donde cargo los arcticulos. Mi consulta es como debo manejar el TListView para cargar desde un formulario y que al cerrar o minimizar el mismo se actualice el la segunda pantalla al instante y como seria la forma correcta para manejar el TlistView, aclaro que soy un poco novato por eso necesito que me ayuden.

Les agradeceria muchisimo a quien pudiese brindarme ayuda...

PD: estoy programando en Delphi 7 y el TListView carga datos en forma temporal nomas, es decir es sin base de datos ni nada raro, estoy empezando recien con delphi por eso necesito que me ayuden.
Responder Con Cita
  #2  
Antiguo 19-03-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Mi consulta es como debo manejar el TListView para cargar desde un formulario y que al cerrar o minimizar el mismo se actualice el la segunda pantalla al instante
Hola ungrande87.

Te pongo un ejemplo simplificado de una forma en que podrías implementarlo:

Form1:
Código Delphi [-]
...

uses ..., Unit2;

type
  TAccion = (acAdd, acUpd);  // nuevo, modifica
  TForm1 = class(TForm)
    ListView1: TListView;
    btNuevo: TButton;
    btModifica: TButton;
    btBorra: TButton;
    procedure FormCreate(Sender: TObject);
    procedure btNuevoClick(Sender: TObject);
    procedure btModificaClick(Sender: TObject);
    procedure btBorraClick(Sender: TObject);
  private
    FAccion: TAccion;
    procedure ArticuloChange(Value: TArticulo);
  public
  end;
...

implementation

(* Recibe evento cambio en artículo *)
procedure TForm1.ArticuloChange(Value: TArticulo);
begin
  case FAccion of
   acAdd: with ListView1.Items.Add do // nuevo
              begin
                SubItems.Add(Articulo.Codigo);
                SubItems.Add(Articulo.Nombre)
              end;
  acUpd: with ListView1.Items[ListView1.ItemIndex] do  // modifica
              begin
                SubItems[0]:= Articulo.Codigo;
                SubItems[1]:= Articulo.Nombre
             end;
  end;
end;

(* Valores iniciales *)
procedure TForm1.FormCreate(Sender: TObject);
var
  Col: TListColumn;
begin
  with ListView1 do
  begin
    ViewStyle:= vsReport;
    ReadOnly:= True;
    RowSelect:= True;
    Col:= Columns.Add;
    Col.Caption:= 'ID';    
    Col.Width:= 0;  // (oculta, no la uso en el ejemplo)
    Col:= Columns.Add;
    Col.Caption:= 'CODIGO';
    Col:= Columns.Add;
    Col.Caption:= 'NOMBRE';
  end;
end;

(* Nuevo artículo *)
procedure TForm1.btNuevoClick(Sender: TObject);
begin
  FAccion:= acAdd;  // nuevo
  with TForm2.Create(Self) do
  try
    ArticuloOnChange:= ArticuloChange;
    ShowModal;
  finally
    Free;
  end;
end;

(* Modificar artículo *)
procedure TForm1.btModificaClick(Sender: TObject);
begin
  FAccion:= acUpd;  // modifica
  with TForm2.Create(Self) do
  try
    ArticuloOnChange:= ArticuloChange;
    ShowModal;
  finally
    Free;
  end;
end;

(* Borrar artículo *)
procedure TForm1.btBorraClick(Sender: TObject);
begin
  ListView1.Items[ListView1.ItemIndex].Delete;
end;
...

Form2:
Código Delphi [-]
type
  TArticulo = record
    Codigo: string;
    Nombre: string;
  end;

  TCambioArticulo = procedure(Value: TArticulo) of object;
  TForm2 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    btAceptar: TButton;
    procedure btAceptarClick(Sender: TObject);
  private
    FCambioArticulo: TCambioArticulo;
  public
    property ArticuloOnChange: TCambioArticulo read FCambioArticulo
      write FCambioArticulo;
  end;

...

implementation

procedure TForm2.btAceptarClick(Sender: TObject);
begin
  if Assigned(FCambioArticulo) then
  begin
    Articulo.Codigo:= Edit1.Text;
    Articulo.Nombre:= Edit2.Text;
    FCambioArticulo(Articulo);
  end;
  Close;
end;
...
En el ejemplo actualiza en el evento OnClick del botón aceptar del segundo form.


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 19-03-2012 a las 10:59:08.
Responder Con Cita
  #3  
Antiguo 19-03-2012
ungrande87 ungrande87 is offline
Miembro
NULL
 
Registrado: feb 2012
Posts: 42
Poder: 0
ungrande87 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola ungrande87.

Te pongo un ejemplo simplificado de una forma en que podrías implementarlo:

Form1:

Código Delphi [-]
...

uses ..., Unit2;

type
TAccion = (acAdd, acUpd); // nuevo, modifica
TForm1 = class(TForm)
ListView1: TListView;
btNuevo: TButton;
btModifica: TButton;
btBorra: TButton;
procedure FormCreate(Sender: TObject);
procedure btNuevoClick(Sender: TObject);
procedure btModificaClick(Sender: TObject);
procedure btBorraClick(Sender: TObject);
private
FAccion: TAccion;
procedure ArticuloChange(Value: TArticulo);
public
end;
...

implementation

(* Recibe evento cambio en artículo *)
procedure TForm1.ArticuloChange(Value: TArticulo);
begin
case FAccion of
acAdd: with ListView1.Items.Add do // nuevo
begin
SubItems.Add(Articulo.Codigo);
SubItems.Add(Articulo.Nombre)
end;
acUpd: with ListView1.Items[ListView1.ItemIndex] do // modifica
begin
SubItems[0]:= Articulo.Codigo;
SubItems[1]:= Articulo.Nombre
end;
end;
end;

(* Valores iniciales *)
procedure TForm1.FormCreate(Sender: TObject);
var
Col: TListColumn;
begin
with ListView1 do
begin
ViewStyle:= vsReport;
ReadOnly:= True;
RowSelect:= True;
Col:= Columns.Add;
Col.Caption:= 'ID';
Col.Width:= 0; // (oculta, no la uso en el ejemplo)
Col:= Columns.Add;
Col.Caption:= 'CODIGO';
Col:= Columns.Add;
Col.Caption:= 'NOMBRE';
end;
end;

(* Nuevo artículo *)
procedure TForm1.btNuevoClick(Sender: TObject);
begin
FAccion:= acAdd; // nuevo
with TForm2.Create(Self) do
try
ArticuloOnChange:= ArticuloChange;
ShowModal;
finally
Free;
end;
end;

(* Modificar artículo *)
procedure TForm1.btModificaClick(Sender: TObject);
begin
FAccion:= acUpd; // modifica
with TForm2.Create(Self) do
try
ArticuloOnChange:= ArticuloChange;
ShowModal;
finally
Free;
end;
end;

(* Borrar artículo *)
procedure TForm1.btBorraClick(Sender: TObject);
begin
ListView1.Items[ListView1.ItemIndex].Delete;
end;
...





Form2:

Código Delphi [-]
type
TArticulo = record
Codigo: string;
Nombre: string;
end;

TCambioArticulo = procedure(Value: TArticulo) of object;
TForm2 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
btAceptar: TButton;
procedure btAceptarClick(Sender: TObject);
private
FCambioArticulo: TCambioArticulo;
public
property ArticuloOnChange: TCambioArticulo read FCambioArticulo
write FCambioArticulo;
end;

...

implementation

procedure TForm2.btAceptarClick(Sender: TObject);
begin
if Assigned(FCambioArticulo) then
begin
Articulo.Codigo:= Edit1.Text;
Articulo.Nombre:= Edit2.Text;
FCambioArticulo(Articulo);
end;
Close;
end;
...




En el ejemplo actualiza en el evento OnClick del botón aceptar del segundo form.


Saludos.
Muchisimas gracias amigo, me super sirvio tu ejemplo.

Ahora una consulta mas, y si quisiera implementar en una nueva pantalla una consulta por: alfabeto o codigo descendiente por ejemplo, como tendria que hacer para que me filtre de ese modo el ListView, cargando datos en un Edit1?
Responder Con Cita
  #4  
Antiguo 19-03-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda nuestra guía de estilo, preguntas distintas en hilos distintos . Gracias por tu colaboración.
Responder Con Cita
  #5  
Antiguo 19-03-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
raro

Cita:
Empezado por ungrande87 Ver Mensaje
PD: estoy programando en Delphi 7 y el TListView carga datos en forma temporal nomas, es decir es sin base de datos ni nada raro,
Para mi lo raro seria no usar una B.D. jeje
__________________
un tipo al cual la sociedad no le tiene el mas mínimo respeto no puede ser presidente....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TListView No Sensible al ratón calogero Varios 1 11-02-2007 10:52:18
TListView calogero Varios 0 18-01-2007 17:16:45
Tlistview Yenifer Varios 1 18-08-2004 16:33:44
Problema con TListview perceptron OOP 4 17-12-2003 15:21:34
TlistView perceptron OOP 2 04-12-2003 23:56:15


La franja horaria es GMT +2. Ahora son las 19:08:52.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi