Форум: "Основная";
Текущий архив: 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