Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie? (https://www.delphipraxis.net/99076-zellwert-aus-tstringgrid-mit-dragdrop-ein-tedit-wie.html)

EccoBravo 6. Sep 2007 14:02


Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Hallo,

ich will endlich meine Programme mit Drag&Drop animieren.
Ich habe vor einen Wert einer beliebigen Zelle eines TStringGrid mittels Drag&Drop in ein TEdit zu ziehen.

Wie geht das?

Vielen Dank

E. B.

Flips 6. Sep 2007 19:39

Re: Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Hi.

Du musst die DragDrop-Handler der Edit-Komponente und die Mousedown-Komponente des Stringgrids nehmen.
Delphi-Quellcode:
procedure TForm3.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
(Sender as TEdit).Text := (Source as TStringGrid).Cells[(Source as TStringGrid).Col,(Source as TStringGrid).Row];
end;

procedure TForm3.Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept := (Source is TStringGrid);
end;

procedure TForm3.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  var acol,arow:integer;
begin
if Button = mbLeft then
  StringGrid1.MouseToCell(X,Y,acol,arow);
if (ACol <> -1) and (ARow <> -1) then
  Stringgrid1.BeginDrag(True);
end;
Damit sollte es gehen.

EccoBravo 13. Sep 2007 17:02

Re: Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Hallo Philipp

habe vielen Dank bin jetzt erst dazugekommen Deinen Code auszuprobieren.
Was muss ich tun, wenn ich auf irgend eine Zelle einer Zeile zum Drag&Drop gehe, und nach drag&Drop immer nur den Wert der 3. Zelle dieser Zeile übertragen möchte?

Vielen Dank

E. B.

Flips 14. Sep 2007 11:57

Re: Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Hi,
also ich verstehe das so das du immer nur den Wert der 3. Zelle der Zeile draggen willst, auch wenn in der Zeile das Drag&Drop beispielsweise über der 2. Zelle der Zeile begonnen wurde.

Dafür brauchst du nur die Nummer zu ändern:
Delphi-Quellcode:
procedure TForm3.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
(Sender as TEdit).Text := (Source as TStringGrid).Cells[3,(Source as TStringGrid).Row];
//Die 3 steht für die 3. Zelle der Zeile
end;

EccoBravo 14. Sep 2007 12:40

Re: Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Wunderbar und vielen Dank, Flips.

Und nun die letzte Frage,

Wenn ich von StringGrid1 die 3. Zelle aus der dort gewählten Zeile
in das StringGrid2 in die 2. Zelle der da gewählte Zeile Drag&Droppen möchte.

Wenn ich das weiss bin ich wunschlos...

Vielen Dank

E. B.

Flips 14. Sep 2007 12:58

Re: Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Delphi-Quellcode:
procedure TForm3.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  var acol,arow:integer;
begin
if Button = mbLeft then
  StringGrid1.MouseToCell(X,Y,acol,arow);
if (ACol <> -1) and (ARow <> -1) then
  Stringgrid1.BeginDrag(True);
end;

procedure TForm3.StringGrid2DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  aCol, aRow : integer;
begin
(Sender as TStringGrid).MouseToCell(X,Y,aCol,ARow);
(Sender as TStringGrid).Cells[2,ARow] := (Source as TStringGrid).Cells[3,(Source as TStringGrid).Row];
end;

procedure TForm3.StringGrid2DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
Accept := (Source is TStringGrid);
end;
;-)

EccoBravo 14. Sep 2007 13:36

Re: Zellwert aus TStringGrid mit DragDrop in ein TEdit -Wie?
 
Hallo Flips,

hab' vielen Dank, es geht,
Habe dadurch einen schön kurzen Code

Ein schönes Wochenende

E. B.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz