Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2012, 22:57   #1
Софья1992
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 12
По умолчанию работа с SaticText

помогите пожалуйста с SaticText.
дан этот компонент на форме и нужен код,позволяющий перетаскивать его мышкой
Софья1992 вне форума Ответить с цитированием
Старый 09.04.2012, 23:19   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

И снова здрасьте.
У StaticText создаем все три процедуры мышиных событий, в которых прописываем такой код:
Код:
var
  P : TPoint;   //доступные из всех нижележащих процедур переменные
  Move : Boolean;

procedure TForm1.StaticText1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
  if not Move then Exit;  //компонент перемещается, если задан режим "нажата кнопка", иначе ничего не делаем 
  //метод SetBounds меняет координаты левого верхнего угла компонента на величину сдвига курсора мыши,
  //относительно запомненных ранее (в MouseDown). 
  with (Sender as TStaticText) do
    SetBounds(Left + X - P.X, Top + Y - P.Y, Width, Height)  
end;

procedure TForm1.StaticText1MouseDown(Sender: TObject;
                  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button <> mbLeft then exit;  //если нажата не левая кнопка мыши, то ничего не делаем (Exit)
  P := Point(X, Y);   //запоминаем координаты курсора в момент, когда щелкнули по компоненту
  Move := True;   //переключаем флаг режима - "левая кнопка нажата"
end;

procedure TForm1.StaticText1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  //отпуская кнопку, переключаем "режим", чтобы перемещение курсора
  //с не нажатой кнопкой  не вызывало перемещение компонента
  Move := False;  
end;

Последний раз редактировалось Прик; 09.04.2012 в 23:55.
Прик вне форума Ответить с цитированием
Старый 09.04.2012, 23:33   #3
Софья1992
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 12
По умолчанию

хорошо,спасибо
а можно комментарии к строчкам?
а то не все понятно((
Софья1992 вне форума Ответить с цитированием
Старый 10.04.2012, 00:06   #4
Софья1992
Пользователь
 
Регистрация: 09.04.2012
Сообщений: 12
По умолчанию

можно еще узнать про эти строки?

P : TPoint;
Move : Boolean;
with (Sender as TControl) do
Софья1992 вне форума Ответить с цитированием
Старый 10.04.2012, 00:31   #5
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

TPoint - тип данных такой есть в дельфи. Состоит из двух полей:
Код:
TPoint = record
  X, Y : Integer;
end;
Конструкцию:

Код:
   with (Sender as TControl) do SetBounds(...)
Чтобы не мучиться, можно заменить на два оператора:
Код:
    StaticText1.Left := StaticText1.Left + X - P.X;
    StaticText1.Top := StaticText1.Top + Y - P.Y;
--------------
Оператор with позволяет сокращать текст программы, указывая квалификатор стурктуры, или объекта один раз после этого оператора.
Для примера. С оператором with:
Код:
  with StaticText1 do
    SetBounds(Left + X - P.X, Top + Y - P.Y, Width, Height);
Без этого оператора нужно приписывать каждому методу имя объекта:
Код:
StaticText1.SetBounds(StaticText1.Left + X - P.X, StaticText1.Top + Y - P.Y, 
            StaticText1.Width, StaticText1.Height);

Последний раз редактировалось Прик; 10.04.2012 в 00:48. Причина: Про with
Прик вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с матрицами (норма матрицы, работа со строками) Neitrosha Помощь студентам 1 26.11.2010 20:19
Задача. Работа с псевдослучайными последовательностями (ПСП). Работа с цветом. 0101 Помощь студентам 3 17.12.2009 23:57
Работа с webbrowser - Фреймы, работа с конкретным феймом в фрейме NewDelphi Фриланс 2 08.10.2009 11:00