Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ада и другие языки _ Builder 6.0

Автор: Fanat 4.01.2008 16:22

При создании динамически кнопки необходимо что бы она оказалась поверх всех компонентов...
BringToFont() и SendToBack() не работает в этом случае...Как быть?..

Автор: volvo 4.01.2008 16:58

Положи TPanel (с размером, равным размеру кнопки) на форму, а уж на нее - свою кнопку, тогда кнопка будет "сверху"...

Автор: Fanat 4.01.2008 17:37

Цитата(volvo @ 4.01.2008 12:58) *

Положи TPanel (с размером, равным размеру кнопки) на форму, а уж на нее - свою кнопку, тогда кнопка будет "сверху"...


А как то ещё можно?..Потому что кнопок много...то есть зарание неизвесто сколько нужно панелей...
Одна большая панель также не подходит... unsure.gif

Автор: volvo 4.01.2008 17:42

Ты не понял... При создании кнопки - создавай перед этим панель, тоже динамически...

Автор: Fanat 4.01.2008 17:52

Цитата(volvo @ 4.01.2008 13:42) *

Ты не понял... При создании кнопки - создавай перед этим панель, тоже динамически...


А как вставить на динамически созданную панель кнопку?



MyButton *B = new MyButton(this);
TPanel *P = new TPanel(Panel1);

Main->InsertControl(P);
Main->P->InsertControl(B);




Так не работает...

Добавлено через 12 мин.
Цитата(Fanat @ 4.01.2008 13:52) *

А как вставить на динамически созданную панель кнопку?



MyButton *B = new MyButton(this);
TPanel *P = new TPanel(Panel1);

Main->InsertControl(P);
Main->P->InsertControl(B);




Так не работает...



Всё...спасибо разобрался...

Автор: volvo 4.01.2008 19:22

Я бы сделал так:

class MyButton : public TSpeedButton
{
TPanel *parent;
public:
int n, m;
__fastcall MyButton(Classes::TComponent* AOwner, const TRect& rect);
};

__fastcall MyButton::MyButton(Classes::TComponent* AOwner, const TRect& rect)
:TSpeedButton(AOwner)
{
parent = new TPanel(AOwner);
parent->BoundsRect = rect;
parent->BevelOuter = bvNone;
parent->Parent = dynamic_cast<TWinControl*>(AOwner);

m = n = 0;
this->Parent = parent;
};

void __fastcall TForm1::Button1Click(TObject *Sender)
{
static MyButton* Button = new MyButton(this, Rect(10, 10, 10+23, 10+23));
Button->m = 10;
Button->n = 20;
Button->Show();
}

(эта тема является логическим продолжением темы о наследовании от Button-а, я не ошибся?)

Автор: Fanat 6.01.2008 18:14

Цитата(volvo @ 4.01.2008 15:22) *

(эта тема является логическим продолжением темы о наследовании от Button-а, я не ошибся?)


Нет, не ошибся...Очень интересно спасибо...=)
А что это за свойства?..
parent->BoundsRect
parent->BevelOuter
parent->Parent


Автор: volvo 6.01.2008 18:35

Цитата
А что это за свойства?..
Как это "что за свойства"? blink.gif Обычные свойства TPanel...

Первое - координаты прямоугольника, содержащего панель.
Второе - стиль отображения наружной границы панели.
Третье - собственно "родитель" панели...