Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 18-01-2017
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 17
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Voy a asumir bastantes cosas ya que no das muchos detalles

El codigo que te propongo funciona para el ListView de la Vcl. No he cambiado ninguna propiedad de las que vienen por defecto al soltar el componente TListView en el form. Todas las cambio en el evento FormCreate del Form para que quede bien claro

Para que te funcione el codigo necesitas un TListView llamado ListView1 y un TEdit llamado Edit1. El Edit le indica al ListView que debe "repintarse" cuando se presiona ENTER, obviamente con el foco sobre el Edit. De eso se encarga el evento OnKeyDown del TEdit

Cuando el ListView recibe la orden de pintarse, el evento CustomDrawItem se dispara y te permite realizar "ajustes" sobre el item que actualmente se esta pintando. Podes consultar las propiedades del Item que recibio el evento en los argumentos del evento (el parametro Item). Tambien tenes un parametro State que indica en que "fase" del pintado esta el TListView actualmente. Esto lo explica mejor la documentacion que yo

Es un evento un poco "raro" porque en este el parametro Sender no es TObject como siempre, es un TCustomListView, que nos viene muy bien porque necesitamos el Canvas para poder realizar el pintado personalizado

Hay muchos mas eventos de pintado. Algunos requieren que actives la propiedad OwnerDraw del TListView para que se disparen. Esto implica que uno mismo debe hacerse cargo del pintado completo del Listview, en todos sus posibles estados. Es un trabajo algo pesado pero tenes flexibilidad absoluta

Sin mas, el codigo

Código Delphi [-]
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_RETURN then
    ListView1.Repaint;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;
  Col: TListColumn;
  Item: TListItem;
begin
  // inicializo el TListView con 2 columnas y 10 items
  ListView1.ViewStyle := TViewStyle.vsReport;
  for I := 1 to 2 do
  begin
    Col := ListView1.Columns.Add;
    Col.Caption := 'Columna ' + I.ToString;
    Col.Width := 150;
  end;

  for I := 1 to 10 do
  begin
    Item := ListView1.Items.Add;
    Item.Caption := 'Item ' + I.ToString;
    Item.SubItems.Add('Item ' + I.ToString);
  end;
end;

procedure TForm1.ListView1CustomDrawItem(Sender: TCustomListView; Item: TListItem; State: TCustomDrawState;
  var DefaultDraw: Boolean);
begin
  // encontrado
  if Edit1.Text = Item.Caption then
    Sender.Canvas.Brush.Color := clRed;
end;
Responder Con Cita
 



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
Pintar filas de un Listview Coco_jac Varios 4 14-07-2006 15:46:18
Como pintar la fila de un DBGrid Gustavo Gowdak OOP 2 04-05-2006 21:34:04
Pintar toda una fila de un DBGrid Luciano M. Varios 4 02-05-2006 22:30:24
Pintar Fila del DBGrid Palmiro Conexión con bases de datos 2 05-04-2006 23:25:51
Pintar Fila por medio en ub DBGrid josem OOP 3 01-01-2005 20:54:52


La franja horaria es GMT +2. Ahora son las 21:36:12.


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