![]() |
![]() |
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 | Проверь почту, подробнее описал |