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 18-01-2007
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Poder: 18
calogero Va por buen camino
TComboBox

Hola que tal..

Necesito dejar coloreado el ultimo item seleccionado de un TComboBox, esto es que cuando se abra la lista desplegable del combo el item que estaba en la propiedad text del combo se coloree en esa lista que se abre..

Buscando aqui en el foro encontré que tenia que asignar a la propiedad Style del TComboBox el valor csOwnerDrawFixed y después podia escribir el código correspondiente en el evento DrawItem del TComboBox y asi lo hice pero el funcionamiento no es el esperado, le cambié el color al item dentro del evento DrawItem, pero el resultado es que no me colorea nada, cuando se abre la lista desplegable, tampoco me muestra los items.

Cualquier ayuda u orientación se agradece.

P.D. si he estado buscando en el google y en el iternet y aqui en los foros sobre este tema, pero los dias pasan y ya necesito hacer esto, si alguien quiere ayudar adelante se agradece.
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Responder Con Cita
  #2  
Antiguo 18-01-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, pos no lo entiendo, yo lo he probado y me funciona

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ComboBox1: TComboBox;
    procedure ComboBox1DrawItem(Control: TWinControl; Index: Integer;
      Rect: TRect; State: TOwnerDrawState);
    procedure ComboBox1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  LastSelect : Integer;

implementation

{$R *.dfm}

procedure TForm1.ComboBox1DrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState);
var bTemp:TBitmap;
begin
  bTemp := TBitmap.Create;

  with (Control as TComboBox) do begin
    if Index = LastSelect then Canvas.Brush.Color := $00CCCC;

    Canvas.FillRect(Rect);
    Canvas.TextOut(Rect.Left,Rect.Top,Items[Index]);
    Canvas.Draw(Rect.Left + 2,Rect.Top + 2,bTemp);
  end;
  bTemp.Free;
end;

procedure TForm1.ComboBox1Click(Sender: TObject);
begin
  LastSelect := ComboBox1.ItemIndex;
  Edit1.Text := ComboBox1.Items.Strings[LastSelect];
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  LastSelect := -1;
end;

end.

Saludos
Responder Con Cita
  #3  
Antiguo 18-01-2007
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Poder: 18
calogero Va por buen camino
TComboBox

Hola que tal..

Gracias por tu ayuda Bicho, la verdad que si habia estado batallando algo, creo que tu codigo me va servir, no conocía esa propiedad lastSelect y la verdad que no se me ocurrió buscarla... a veces te enfrascas en el codigo y se te nubla la mente.

Bueno hasta luego y gracias otra vez...
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Responder Con Cita
  #4  
Antiguo 18-01-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola,

Cita:
Empezado por calogero
no conocía esa propiedad lastSelect y la verdad que no se me ocurrió buscarla...
No es una propiedad, sino una variable, si te fijas está declarada en la sección var
Código Delphi [-]
var
  Form1: TForm1;
  LastSelect : Integer;

implementation

Y claro, si necesitas dejar marcado un valor en el combobox, necesitarás saber que item es, para ello al seleccionar un item del combo lo asignamos a la variable.
Luego en el OnDrawCell leemos, si el item actual que se está pintando es el seleccionado, si es así, lo pintamos.
No tiene más historia.

Bueno, espero te sirviera.

Saludos
Responder Con Cita
  #5  
Antiguo 19-01-2007
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Poder: 18
calogero Va por buen camino
TComboBox

Claro tienes razón no es una propiedad sino una variable.. estoy seguro que si me va a servir aunque todavia no lo implemento. Bueno gracias por tu ayuda.
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
Responder Con Cita
  #6  
Antiguo 19-01-2007
calogero calogero is offline
Miembro
 
Registrado: oct 2006
Ubicación: Los Mochis, Sinaloa, México
Posts: 76
Poder: 18
calogero Va por buen camino
TComboBox

Que tal Bicho..

Funciona muy bien tu ejemplo pero, tiene un detalle, cuando abres la lista desplegable del combo y te desplazas, por los items, con las flechitas te va coloreando los items y eso no debería suceder, trataré de resolverlo... solo quería que lo supieras aunque creo que ya lo sabías.
__________________
La conquista mas grande de un hombre es la conquista de el mismo.
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
Problemas con TComboBox fedecm Varios 4 30-06-2004 16:58:04
TcomboBox = tEdit maui Conexión con bases de datos 2 25-05-2004 02:37:46
Buscar en un TCombobox yusnerqui Varios 6 27-03-2004 16:05:50
TCombobox STYLE en csOwnerDrawFixed Carlos Arevalo Varios 12 09-01-2004 21:56:15
TCombobox en un DBGrid? champy Varios 1 13-09-2003 23:57:05


La franja horaria es GMT +2. Ahora son las 12:33:38.


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