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

Вниз

DranDrop для TLabel   Найти похожие ветки 

 
Kiloper   (2004-06-01 17:26) [0]

Как мне перетаскивать Tlabel по форме во время работы программы


 
Ega23 ©   (2004-06-01 17:27) [1]

Мышкой?


 
Kiloper   (2004-06-01 17:44) [2]

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


 
Ega23 ©   (2004-06-01 17:48) [3]

зачем ставить себя умней других.
1. Я вообще-то сказал бы "зачем ставить себя ГЛУПЕЙ других", но хозяин - барин.
2. Каков вопрос - таков ответ. Напиши что КОНКРЕТНО тебе не понятно в технологии Drag"n"Drop.


 
Kiloper   (2004-06-01 17:54) [4]

Мне надо, чтобы во время работы программы можно было перемещать мышкой лабелку по форме.


 
Sandman25 ©   (2004-06-01 17:56) [5]

[4] Kiloper   (01.06.04 17:54)

Ну так и перетаскивайте на здоровье. На нажатии левой кнопки мыши устанавливаете флаг, на OnMouseMove рисуете label в новом месте, на отпускание кнопки фиксируете текущее положение. В чем проблема?


 
default ©   (2004-06-01 18:33) [6]

var
 Form1: TForm1;
 InMove: Boolean;
 mx, my: Integer;

...

procedure TForm1.Label1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
InMove := True;
mx := Mouse.CursorPos.X;
my := Mouse.CursorPos.Y
end;

procedure TForm1.Label1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
InMove := False
end;

procedure TForm1.Label1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
if InMove and (ssLeft in Shift) then begin
 Label1.Left := Label1.Left + Mouse.CursorPos.X - mx;
 Label1.Top := Label1.Top + Mouse.CursorPos.Y - my;
 mx := Mouse.CursorPos.X;
 my := Mouse.CursorPos.Y
end
end;


 
default ©   (2004-06-01 18:36) [7]

if InMove then begin
Label1.Left := Label1.Left + Mouse.CursorPos.X - mx;
Label1.Top := Label1.Top + Mouse.CursorPos.Y - my;
mx := Mouse.CursorPos.X;
my := Mouse.CursorPos.Y
end
даже так


 
GuAV ©   (2004-06-01 20:50) [8]

Юзай StaticText заместо лабела и делай так:

procedure TForm1.StaticText1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 ReleaseCapture;
 TWinControl(Sender).Perform(WM_SYSCOMMAND, $F012, 0);
end;


 
default ©   (2004-06-01 20:59) [9]

текст не вместе с курсором будет двигаться


 
lyeh ©   (2004-06-02 00:22) [10]

В названии темы было указано DragDrop - тогда у TLabel измени свойство DragMode на dmAutomatic


 
Gero ©   (2004-06-02 00:27) [11]


Label1.DragMode := dmAutomatic;

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

procedure TForm1.FormDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
 TLabel(Source).Left := X;
 TLabel(Source).Top := Y;
end;


 
default ©   (2004-06-02 00:44) [12]

опять же [9]
пусть автор выбирает


 
lyeh ©   (2004-06-02 04:06) [13]


> текст не вместе с курсором будет двигаться


Почему не будет? Код [8] вполне нормально работает, вся фишка в том, чтобы использовать именно TStaticText вместо TLabel. Так что вопрос можно считать решенным.


 
default ©   (2004-06-02 04:15) [14]

lyeh ©   (02.06.04 04:06) [13]
рамка будет закрашенная белым двигаться...


 
lyeh ©   (2004-06-02 04:35) [15]

2 default ©

Нет, ты что-то не то делаешь. Я сам все пробовал - работает. Даже если у TStaticText включена рамка, все равно нормально. Ведь по этому принципу и формы двигают "за любое место". Поэтому ищи ошибку у себя...


 
default ©   (2004-06-02 04:55) [16]

хочешь сказать и текст вместе с рамкой двигается?


 
GuAV ©   (2004-06-04 00:42) [17]

Я понял в чем дело. lyeh, default, слушайте сюда.
короче, если в св-вах раб стола стоит галка "отображать сод-е окна при перетаскивании" то отображается, а если нет - то только рамка. т.е. это стандартное поведение.
зы - багфикс - в начале нужно проверить левая ли кнопа, и если нет - exit.



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

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

Наверх




Память: 0.5 MB
Время: 0.04 c
1-1086342787
Ruslan
2004-06-04 13:53
2004.06.20
Не могу очистить TreeView.


14-1086257689
AlexG
2004-06-03 14:14
2004.06.20
Борьба с региональными настройками.


1-1086372975
Канадин Владимир
2004-06-04 22:16
2004.06.20
Как использовать CustomSort


3-1085480208
AlexG
2004-05-25 14:16
2004.06.20
Выскакивает ошибка при использовании ADO...


3-1085148755
Smoke
2004-05-21 18:12
2004.06.20
Помогите выбрать!