Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.13;
Скачать: CL | DM;

Вниз

TStringGrid - как организовать перенос значения ячейки?   Найти похожие ветки 

 
kserg@ukr.net   (2002-06-03 11:24) [0]

Привет.
Подскажите (на примере), как строится "перенос" значения из одной ячейки в другую мышою.
Спасибо


 
MBo ©   (2002-06-03 11:29) [1]

что-нибудь такое (с Ctrl или Alt)

Dragmode=dmManual


procedure TForm1.StringGrid1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Var Acol,ARow:Integer;
begin
with StringGrid1 do begin
if (ssAlt in Shift) or (ssCtrl in Shift) then begin
MouseToCell(X,Y,Acol,Arow);
if (Acol>=FixedCols) and (Arow>=FixedRows) then begin
Tag:=ACol+1000*ARow;
if ssAlt in Shift then
Tag:=Tag+1000000;
BeginDrag(True)
end else
Tag:=0;
end;
end;
end;

procedure TForm1.StringGrid1DragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
Var Acol,ARow:Integer;
begin
with StringGrid1 do begin
MouseToCell(X,Y,Acol,Arow);
Accept:=(Source=StringGrid1) and (Tag>0)
and (Acol>=FixedCols) and (Arow>=FixedRows)
and (Acol+1000*ARow<>Tag mod 1000000);
end;
end;

procedure TForm1.StringGrid1DragDrop(Sender, Source: TObject; X,
Y: Integer);
Var Acol,ARow:Integer;
begin
with StringGrid1 do begin
MouseToCell(X,Y,Acol,Arow);
Cells[Acol,Arow]:=Cells[Tag mod 1000, (Tag div 1000) mod 1000];
if Tag div 1000000=1 then
Cells[Tag mod 1000, (Tag div 1000) mod 1000]:="";
Tag:=0;
end;
end;


 
Song ©   (2002-06-03 11:36) [2]

Но не так гибко:

With StringGrid1 Do Option:=Options+[goRowMoving];
With StringGrid1 Do Option:=Options+[goColMoving];


 
kserg@ukr.net   (2002-06-03 12:16) [3]

>MBo © (03.06.02 11:29)
>Song © (03.06.02 11:36)

спасибо за содействие.
и хочу извиниться за несовсем продуманый вопрос: просто спешу решить проблемку, но сам никогда не работал с Drag/drop

уточняю вопрос:
1) работаю не с TStringGrid, а с TAdvStringGrid: в принципе это одно и тоже, но в TAdvStringGrid есть спец.св-ва для реализации
2) мне нужен не сам "перенос" значения, а просто определить из какой ячейки и в какую юзер пытается сделать "Copy"

спасибо



Страницы: 1 вся ветка

Текущий архив: 2002.06.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.012 c
1-40031
XAlert
2002-05-31 21:05
2002.06.13
16 разрядные DLL в Delphi 5/6 ?


1-40010
Monak
2002-06-01 20:28
2002.06.13
Отлавливание клавиш!


1-40093
Novak
2002-05-29 13:23
2002.06.13
StringGrid. Очень интересно как...Спасибо.


1-40023
AL2002
2002-05-31 16:06
2002.06.13
Исчо один вопрос о списке со шрифтами.


6-40144
Зинец Виктор
2002-03-22 15:17
2002.06.13
Связь 2-х компов через ИНет