- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Dra och släpp-exempel för TStringgrid Kategori: Komponenter
Inlagt: 2009-10-15
Läst: 7586
Inlagt av: Staffan Berg
Beskrivning
Ett grundläggande exempel på hur du kan använda Drag&Drop-eventet i en TStringgrid
Kod
implementation 
 
{$R *.DFM} 
 
var 
 SourceCol, SourceRow: integer; 
 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 { Set DragMode to Manual, to control entire drag & drop by code } 
 SG.DragMode := dmManual;  
 { For testing purposes, fill a few cells } 
 SG.Cells[2, 2] := 'A'; 
 SG.Cells[3, 2] := 'B'; 
 SG.Cells[4, 2] := 'C'; 
end; 
 
procedure TForm1.SGMouseDown(Sender: TObject; Button: TMouseButton; 
 Shift: TShiftState; X, Y: integer); 
begin 
 { Convert mouse coordinates X, Y to 
  to StringGrid related col and row numbers } 
 SG.MouseToCell(X, Y, SourceCol, SourceRow); 
 { Allow dragging only if an acceptable cell was clicked 
  (cell beyond the fixed column and row) } 
 if (SourceCol > 0) and (SourceRow > 0) then 
  { Begin dragging after mouse has moved 4 pixels } 
  SG.BeginDrag(False, 4); 
end; 
 
procedure TForm1.SGDragOver(Sender, Source: TObject; X, Y: Integer; 
 State: TDragState; var Accept: Boolean); 
var 
 CurrentCol, CurrentRow: integer; 
begin 
 SG.MouseToCell(X, Y, CurrentCol, CurrentRow); // konvertera muskoordinater 
 //Acceptera drag endast om källan är en string grid och musen är över en tillåten region 
 Accept := (Sender = Source) and 
      (CurrentCol > 0) and (CurrentRow > 0); 
end; 
 
procedure TForm1.SGDragDrop(Sender, Source: TObject; X, Y: Integer); 
var 
 DestCol, DestRow: Integer; 
begin 
 SG.MouseToCell(X, Y, DestCol, DestRow); // konvertera muskoordinater 
//Flytta innehållet från källa till måldestination 
 SG.Cells[DestCol, DestRow] := SG.Cells[SourceCol, SourceRow]; 
 if (SourceCol <> DestCol) or (SourceRow <> DestRow) then 
  SG.Cells[SourceCol, SourceRow] := ''; 
end;

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -