Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 28-03-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
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
Hola Carmelo Cash.

Otra opción diferente, es usar un TPopupMenu con las opciones 'Cortar', 'Pegar' y 'Deshacer'. Y si lo deseas, con sus respectivos ShortCut como por ejemplo: Ctrl+C, Ctrl+V, Ctrl+Z.
Código Delphi [-]
...
var
  SL: TStrings;

procedure TForm1.FormCreate(Sender: TObject);
begin
  SL := TStringList.Create;
  ListBox1.DragMode    := dmAutomatic;
  ListBox1.MultiSelect := True;
  ListBox1.PopupMenu   := PopupMenu1;
end;

procedure TForm1.Cortar1Click(Sender: TObject);
var
  i : Integer;
begin
  with TListBox(PopupMenu1.PopupComponent) do
  begin
    // Agregar items seleccionados al StringList
    for i := 0 to Count-1 do
      if Selected[i] then SL.AddObject(Items[i], TObject(i));
    // Eliminarlos del ListBox
    for i := Count -1 downto 0 do
      if Selected[i] then Items.Delete(i);
  end;
end;

procedure TForm1.Pegar1Click(Sender: TObject);
var
  CurrItem,i: Integer;
begin
  if SL.Count > 0 then
    with TListBox(PopupMenu1.PopupComponent) do
    begin
      CurrItem:= ItemIndex+1;
      // Insertar Items seleccionados
      Items.BeginUpdate;
      try
        for i :=  SL.Count-1 downto 0 do
          Items.Insert(CurrItem, SL[i])
        finally
          // Vaciar StringList
          SL.Clear;
          Items.EndUpdate
        end
    end;
end;

procedure TForm1.Deshacer1Click(Sender: TObject);
var
  i: Integer;
begin
  if SL.Count > 0 then
  begin
    // Restaurar items eliminados
    for i:= 0 to SL.Count-1 do
      ListBox1.Items.Insert(Integer(SL.Objects[i]),SL[i]);
    // Vaciar StringList
    SL.Clear
  end
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  Cortar1.Enabled  := SL.Count = 0 ;
  Pegar1.Enabled   := not Cortar1.Enabled;
  Deshacer1.Enabled:= not Cortar1.Enabled;
end;

Saludos.
__________________
Daniel Didriksen

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


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ordenar registros con ClientDataSet Jose Roman Conexión con bases de datos 2 15-01-2010 22:11:27
Ordenar registros (Access/Delphi 2005) Drahcir Conexión con bases de datos 1 03-06-2008 13:50:12
Ordenar registros de manera descendente con ClientDataSet alucardo Conexión con bases de datos 2 31-05-2006 18:27:34
FIBPlus - Ordenar Registros y Control Concurrencia Gabriel Conexión con bases de datos 0 25-08-2005 11:45:55
ordenar registros davidgaldo SQL 2 20-04-2005 15:47:23


La franja horaria es GMT +2. Ahora son las 04:59:56.


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