изменять размер в рантайме

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

изменять размер в рантайме

Сообщение Attid » 18.06.2007 18:08:32

в общем хочу у кнопки \ панельки в рантайме менять размер мышкой также как в дизайн-тайме как это сделать ?

помнися как-то просто должно быть.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Alexx2000 » 22.06.2007 18:59:56

Не знаю может можно проще, но я делал через обработку событий
OnMouseDown
OnMouseMove
OnMouseUp
Аватара пользователя
Alexx2000
постоялец
 
Сообщения: 487
Зарегистрирован: 25.10.2006 00:22:07
Откуда: Мытищи

Сообщение Attid » 22.06.2007 22:24:35

я заюзал
OnMouseMove
OnMouseLeave

код делал для примера знакомому, надо будет в понедельник запостить для потомков.

просто думал может можно вызвать свойства которые у компонентов в дизайне, чтоб появились квадратики за которые мышь цеплятся будет.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Slavikk » 25.06.2007 21:59:35

Потомки уже ждут :D
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение Attid » 26.06.2007 12:17:44

Код: Выделить всё
procedure TForm1.MyMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
//  TWinControl(Sender).Caption := 'x= '+IntToStr(x)+ ' y = '+ IntToStr(Y) ;
  if (x > TWinControl(Sender).Width - 10) and (y > TWinControl(Sender).Height - 10) then
    TWinControl(Sender).Cursor := crSizeNWSE;

  if ((TWinControl(Sender).Cursor = crSizeNWSE) and (ssLeft in Shift)) then
  begin
       TWinControl(Sender).Width := X;
       TWinControl(Sender).Height := Y;
  end;
end;

procedure TForm1.MyMouseLeave(Sender: TObject);
begin
  TWinControl(Sender).Cursor := crDefault;
end;


код работает на кнопке\панельке\мемо
больше не проверял =)

по хорошему надо маус ап\доун тоже обрабатывать, но и так все работает =)
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение Slavikk » 26.06.2007 14:18:05

Спасибо
Аватара пользователя
Slavikk
постоялец
 
Сообщения: 208
Зарегистрирован: 15.01.2007 22:34:52
Откуда: Из лесов...

Сообщение v-t-l » 26.06.2007 22:50:44

Если написать так
Код: Выделить всё
  if (x > TWinControl(Sender).Width - 10) and (y > TWinControl(Sender).Height - 10) then
    TWinControl(Sender).Cursor := crSizeNWSE
  else
    TWinControl(Sender).Cursor := crDefault;

, то OnMouseLeave не нужен.

Кстати, немного смущает TWinControl. Нормально в плане кроссплатформенности?
v-t-l
энтузиаст
 
Сообщения: 728
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение Attid » 27.06.2007 11:23:16

v-t-l
а ты пробывал ? я перед тем как OnMouseLeave заюзать пробывал.
если быстро двигать мышей глючит бесподобно.
Аватара пользователя
Attid
долгожитель
 
Сообщения: 2585
Зарегистрирован: 27.10.2006 17:29:15
Откуда: 44°32′23.63″N 41°2′25.2″E

Сообщение v-t-l » 27.06.2007 13:30:23

Пробовал. Заметил.
v-t-l
энтузиаст
 
Сообщения: 728
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus

Сообщение v-t-l » 11.07.2007 16:10:52

Attid
http://angusj.com/delphi/sizectrl.zip
Может удастся адаптировать.
v-t-l
энтузиаст
 
Сообщения: 728
Зарегистрирован: 13.05.2007 16:27:22
Откуда: Belarus


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 99

Рейтинг@Mail.ru