К списку форумов К списку вопросов
DELPHI -- SpeedButton -- ВОПРОС, срочно!!
4aynik
07.04.2004 - 13:20
Подскажите плиз, можно ли сделать так, чтобы:
я нажатием кнопки на форме создавал speedbutton в нужном месте.?
Спасибо!
Наф
1 - 07.04.2004 - 13:22
Можно
UE
2 - 07.04.2004 - 13:28
SpeedButton1 := TSpeedButton.Create(Form1);
XPEH
3 - 07.04.2004 - 13:32
SpeedButton1.Parent := Self;
Наф
4 - 07.04.2004 - 13:34
SpeedButton1 := TSpeedButton.Create(Form1);
SpeedButton1.Parent:=Form1; //или еще куда
SpeedButton1.Left:=Tuda;
SpeedButton1.Top:=Suda;
4aynik
5 - 07.04.2004 - 13:47
shas poprobuyu
4aynik
6 - 07.04.2004 - 14:00
объясню свою цель:
у меня на форме Panel, на панели Image(например авто).
на форме кнопка "Создать активную область".
хочу чтобы можно было на этом "авто" можно было наложить speedbutton на колесо, допустим, на крышу и т.п. для того чтобы потом при нажатии ка "колесо авто" выполнялось какое-нибудь действие.
объясните подробнее плиз, а то... 4aynik :)
enum
7 - 07.04.2004 - 14:39
А нафига вообще какие то кнопки,
у Image есть событие OnMouseDown можно через него,
Я бы следал так: (особенно если возможных вариантов изображений несколько)
для каждого изображения создал бы шаблон -- изображение такого же объекта и такого же размера с точностью до пикселя, только на нем все детали -- колеса, крыша и все остальное -- нарисовано разными цветами, то есть все калеса например полностью закрашены зеленым цветом, вся крыша красным и т. д. то есть разделить рисунок на области. Затем создать в памяти Bitmap, и в обработчике OnMouseDown проверять каким цветом нарисован в шаблоне тот же пиксель по которому щелкнули в Image который на форме. А перед этим где нибудь запомнить какому цвету какая деталь соответствует.
4aynik
8 - 07.04.2004 - 15:08
да, вариант понятен, но дело в том, что авто - это пример.
на деле картинка будет разная и по тонам и по размерам.
юзеру надо открыть свою картинку, создать на ней активные области, ну а дальше...легче
4aynik
9 - 07.04.2004 - 19:22
ну помогите ещё
4aynik
10 - 08.04.2004 - 01:29
.
AnatolyP
11 - 08.04.2004 - 08:06
enum предложил правильно , как вариант можно использовать.
FWP
12 - 08.04.2004 - 08:29
Держать в памяти Bitmap - накладно. Тем более, что он используется как массив. Который по сути является слабозаполненным. Когда пользователь создает области необходимо сделать проекцию в массив. А далее как советовал enum.
warmouse
13 - 08.04.2004 - 10:30
А с чем еще помогать? Наф тебе полный код написал. Только не забудь после использования кнопки уничтожить ее.
SpeedButton1.Free;
4aynik
14 - 09.04.2004 - 00:44
 мне не уничтожать эти кнопки надо, а сохранять,
присвоить им name, и работать с ними так, будто я их создал при
разработке.
подскажите, как это сделать?
Sabrian
15 - 09.04.2004 - 01:39
Зачем им Name?
Ты отом чтобы вызывать методы как Name.Что_Нибудь_Там(Что-Нибудь_тут)?
Не выйдет.
Обьяви массив buttons:array of TSpeedButton и добавляй в него кнопки примерно так:
var
  Button:TSpeedButton;
       ......
begin
  Button:=TSpeedButton.Create(self);
  Button.Parent:=Парент_какойнибудь;
  SetLength(buttons,lehgth(buttons)+1);
  buttons[high(buttons)]:=Button;
Теперь можешь обращаться к кнопкам по индексу, типа
       Buttons[0].и_т_д.
Лучше растить массив не по 1, а по несколько кнопок, например 4 или использовать список.
  
4aynik
16 - 12.04.2004 - 00:50
спасбо, буду пробовать
warmouse
17 - 12.04.2004 - 11:54
Проверь почту, подробнее описал

К списку вопросов на форуме Программирование

>>