Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Copiar y pegar en un Grid desde un Listbox (https://www.clubdelphi.com/foros/showthread.php?t=76131)

CarlosAlberto 11-10-2011 00:58:42

Copiar y pegar en un Grid desde un Listbox
 
Estimados amigos del club: le agradecería si me pueden ayudar con el siguiente problema: Tengo un listbox y un StringGrid ¿cómo puedo pasar un elemento seleccionado del Listbox a una celda del StringGrid con el mouse o copiando y pegando?
Gracias y Saludos
Carlos Alberto

ecfisa 11-10-2011 01:27:54

Hola Carlos.

Arrastrando y soltando con el mouse dese el ListBox a la celda seleccionada del StringList:
Código Delphi [-]
....
implementation

procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
   ListBox1.BeginDrag(True);
end;

procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept:= Source is TListBox;
end;

procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
begin
  with TStringGrid(Sender) do
   Cells[Col,Row]:= TListBox(Source).Items[TListBox(Source).ItemIndex];
end;
...

Un saludo.

CarlosAlberto 11-10-2011 02:18:10

Funcionó - Gracias
 
Estimado Moderador: lo probé y resultó lo esperado. Gracias
Saludos
Carlos Alberto

ecfisa 11-10-2011 02:33:44

Hola de nuevo.

Sin usar TClipBoard que haría más complejo el ejemplo, una forma sencilla de copiar y pegar usando un TPopupMenu es:
Código Delphi [-]
...
implementation
var
  Aux: string;

procedure TForm1.Copiar1Click(Sender: TObject);
begin
  if (ListBox1.ItemIndex > -1)and(PopupMenu1.PopupComponent.Name = 'ListBox1') then
    Aux:= ListBox1.Items[ListBox1.ItemIndex];
end;

procedure TForm1.Pegar1Click(Sender: TObject);
begin
  if PopupMenu1.PopupComponent.Name = 'StringGrid1' then
    with StringGrid1 do Cells[Col,Row]:= Aux;
end;
Podrías mejorar el código mostrando mensajes si alguna condición necesaria no se cumple, como por ejemplo que un item esté seleccionado.

Saludos.


La franja horaria es GMT +2. Ahora son las 16:05:08.

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