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
  #21  
Antiguo 17-03-2014
Avatar de santiago14
santiago14 santiago14 is offline
Miembro
 
Registrado: sep 2003
Ubicación: Cerrillos, Salta, Argentina
Posts: 585
Poder: 23
santiago14 Va por buen camino
Talking

Muestro lo que hice yo, de seguro este es el problema....

Código Delphi [-]
unit oAutocompletarCombo;

interface

uses
  StrUtils, Classes, Messages, Controls, SysUtils, Windows, StdCtrls;

type
  TComboBoxAutocomplete = class(TComboBox)
  private
    CtrlLoad : Boolean;
    UnFlicker : Boolean;
    UpDown : Boolean;
    AuxText : String;
    HistoryName : String;
    StoredItems : TStringList;
    CountItems : Byte;
    procedure FilterItems;
    procedure CNCommand(var Message: TWMCommand); Message CN_COMMAND;
  public
    procedure StoredItemsChange(Sender: TObject);
    procedure LoadHistory(FileHistory : String = ''; CountHistory : Byte = 10);
      procedure ComboExit(Sender: TObject);
    procedure ComboCloseUp(Sender: TObject);
    procedure ComboKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
    constructor Create(Owner: TComponent); override;
    destructor Destroy; override;
  end;

implementation

{$R *.dfm}

constructor TComboBoxAutocomplete.Create(Owner: TComponent);
begin
   inherited;
   AutoComplete := False;
   StoredItems := TStringList.Create;
   StoredItems.OnChange := StoredItemsChange;
   Self.OnExit := ComboExit;
   Self.OnCloseUp := ComboCloseUp;
   Self.OnKeyDown := ComboKeyDown;
   UnFlicker := False;
   CtrlLoad := False;
end;

destructor TComboBoxAutocomplete.Destroy;
begin
   StoredItems.Free;
   inherited;
end;

procedure TComboBoxAutocomplete.LoadHistory(FileHistory : String = ''; CountHistory : Byte = 10);
begin
   CtrlLoad := True;
   Self.DropDownCount := CountHistory;
   CountItems := CountHistory;
   if FileHistory = EmptyStr then
      HistoryName := 'History_' + Self.Name + '.txt'
   else
      HistoryName := FileHistory;
   if FileExists(HistoryName) then
      Self.StoredItems.LoadFromFile(HistoryName);
end;

procedure TComboBoxAutocomplete.CNCommand(var Message: TWMCommand);
begin
   inherited;
   if Message.NotifyCode = CBN_EDITUPDATE then
      FilterItems;
end;

procedure TComboBoxAutocomplete.FilterItems;
var
   i : Integer;
   StartPos, EndPos : Integer;
begin
   SendMessage(Handle, CB_GETEDITSEL, WPARAM(@StartPos), LPARAM(@EndPos));
   AuxText := Text;
   if Text <> EmptyStr then
   begin
      Items.Clear;
      for i := 0 to StoredItems.Count - 1 do
      begin
         if PosEx(LowerCase(Text), LowerCase(StoredItems[i])) > 0 then
            Items.Add(StoredItems[i]);
      end;
   end
   else
      Items.Assign(StoredItems);
   if UnFlicker then
      SendMessage(Handle, CB_SHOWDROPDOWN, Integer(True), 0);
   Text := AuxText;
   SendMessage(Handle, CB_SETEDITSEL, 0, MakeLParam(StartPos, EndPos));
   UnFlicker := True;
end;

procedure TComboBoxAutocomplete.StoredItemsChange(Sender: TObject);
begin
   if Assigned(StoredItems) then
      FilterItems;
end;

procedure TComboBoxAutocomplete.ComboExit(Sender: TObject);
var
   i : Integer;
begin
   if (Items.IndexOf(Text) = -1) and (Text <> EmptyStr) and CtrlLoad then
   begin
      StoredItems.Insert(0,Text);
      for i := StoredItems.Count - 1 downto CountItems do
         StoredItems.Delete(i);
      StoredItems.SaveToFile(HistoryName);
      Self.ItemIndex := 0;
   end;
end;

procedure TComboBoxAutocomplete.ComboCloseUp(Sender: TObject);
begin
   If (AuxText <> EmptyStr) and (UpDown = False) then
   begin
      Text := AuxText;
   end;
   UpDown := False;
end;

procedure TComboBoxAutocomplete.ComboKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
   if (Key = VK_UP) or (Key = VK_DOWN) then
      UpDown := True;
end;

end.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
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
Autocompletar Raistlin Varios 1 29-01-2007 12:05:35
Autocompletar un TEdit (solución, no consulta) Walterdf Varios 4 05-10-2005 20:23:35
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
Ayuda. Autocompletar TEdit Fonso_esp Varios 2 23-04-2004 15:31:05
Edit con autocompletar Rox77 Varios 1 21-05-2003 10:36:05


La franja horaria es GMT +2. Ahora son las 01:33:06.


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