Announcement

Collapse
No announcement yet.

selektierte Zeilen aus StringGrid 1 in StringGrid 2

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • selektierte Zeilen aus StringGrid 1 in StringGrid 2

    Hi Leute,

    ich habe längere Zeit gesucht aber leider nichts richtiges gefunden.
    Ich möchte aus einem StringGrid markierte Zeilen via Drag & Drop in eine 2. StringGrid kopieren.
    Kann mir jemand dabei helfen?

    Mit einem Button sieht es folgendermaßen aus.

    Code:
    procedure TFormMain.SpeedButtonAddToPlaylistClick(Sender: TObject);
    var
      i : integer;
      mdata : TMusicData;
      mr : TModalResult;
    begin
      if (musiclist.getItemCount > 0) then
      begin
        mr := mrCancel;
        for i := StringGridInventory.Selection.Top to StringGridInventory.Selection.Bottom do
        begin
          mdata := musiclist.getMusicDataPK(StrToInt(StringGridInventory.Cells[ML_COL_PRIMARY, i]));
          playlist.addMusicData(mdata, mr);
        end;
        refreshStringGridPlayList();
      end;
    end;
    Vielen Dank für eure Hilfe

  • #2
    Moin JoJo,

    ... geht so:

    1. Eigenschaft DragMode SourceGrid auf dmAutomatic
    2. Ereignis OnDragOver im SinkGrid mit der Akzeptanzbedingung ausstatten (z.B. Accept := Source is TStringGrid;
    3. Ereignis OnDragDrop im SinkGrid mit denau dem Inhalt füllen, den Dein SpeedBtn jetzt enthält

    Gruß,

    Geert

    Comment


    • #3
      danke für deine Antwort.

      Leider geht dann die OnClick Funktion usw. der Source StringGrid nicht mehr.

      Mein bisheriger Code
      Code:
      procedure TFormMain.StringGridPlayListDragOver(Sender, Source: TObject; X,
        Y: Integer; State: TDragState; var Accept: Boolean);
      begin
        Accept := Source = StringGridInventory;
      end;
      
      procedure TFormMain.StringGridPlayListDragDrop(Sender, Source: TObject; X,
        Y: Integer);
      var
        i : integer;
        mdata : TMusicData;
        mr : TModalResult;
      begin
      //  if (Sender = StringGridPlayList) and (Source = StringGridInventory) then
      //  begin
          with StringGridPlayList do
          begin
        if (musiclist.getItemCount > 0) then
        begin
          mr := mrCancel;
          for i := StringGridInventory.Selection.Top to StringGridInventory.Selection.Bottom do
          begin
            mdata := musiclist.getMusicDataPK(StrToInt(StringGridInventory.Cells[ML_COL_PRIMARY, i]));
            playlist.addMusicData(mdata, mr);
          end;
          refreshStringGridPlayList();
      //  end;
          end;
        end;
      end;

      !!! ist gelöst, vielen Dank !!!

      mit
      Code:
      procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton;  
        Shift: TShiftState; X, Y: Integer);  
      begin  
        (Sender as TStringGrid).BeginDrag(FALSE);  
      end;
      konnte ich dmManuel lassen und meine anderen Funktionen wie OnClick gingen noch.
      Zuletzt editiert von JoJo68; 14.09.2007, 06:58.

      Comment

      Working...
      X