Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.06.20;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.038 c
3-1085662064
Sasha73
2004-05-27 16:47
2004.06.20
Локальная BD (один файл) ?


14-1085911034
ИМХО
2004-05-30 13:57
2004.06.20
Ура!


9-1070178138
Cash
2003-11-30 10:42
2004.06.20
Как работать с альфой


1-1086352731
Denis2003
2004-06-04 16:38
2004.06.20
Непрямоугольное меню


1-1086279022
Игорь
2004-06-03 20:10
2004.06.20
Как сделать компьютерный экзамен на Delphi 6.0





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский