void __fastcall TForm1::Button1Click(TObject *Sender)
{
TRect r;
r = Label1->BoundsRect;
this->Canvas->DrawFocusRect(r);
}
как выделить объект?
Во время выполнения программы я создаю множество различных огбъектов на TPanel (таких как Label и Image).
Как мне сделать так чтобы при нажатии на один из них мышкой он выделялся прямоугольником и при этом тот объект который был выделен до него потерял свое выделение..
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
буду признателен за помощь!
Цитата:
Originally posted by kasyava
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
Если уже есть (полу)работающий код, то сперва установи для всех TLabel свойство Transparent=true. Может поможет.
Цитата:
Originally posted by Mоngооsе
Если уже есть (полу)работающий код, то сперва установи для всех TLabel свойство Transparent=true. Может поможет.
Если уже есть (полу)работающий код, то сперва установи для всех TLabel свойство Transparent=true. Может поможет.
Пробовал не помогает :(
Цитата:
Originally posted by kasyava
Пробовал не помогает :(
Да и мне как бы надо чтобы оно было =FALSE
Пробовал не помогает :(
Да и мне как бы надо чтобы оно было =FALSE
Значит код не рабочий.
Код:
Код:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TRect r;
r = Label1->BoundsRect;
this->Canvas->DrawFocusRect(r);
r = Label2->BoundsRect;
this->Canvas->DrawFocusRect(r);
}
{
TRect r;
r = Label1->BoundsRect;
this->Canvas->DrawFocusRect(r);
r = Label2->BoundsRect;
this->Canvas->DrawFocusRect(r);
}
Нужно определить глобальную переменную TRect lastBoundRect.
Инициализировать в (0,0,0,0) в Form OnCreate. Определить обработчик
Код:
void __fastcall TForm1::OnLabelClick(TObject *Sender)
{
this->Canvas->DrawFocusRect(lastBoundRect);
TRect r = ((TLabel *)Sender)->BoundsRect;
this->Canvas->DrawFocusRect(r);
lastBoundRect = r;
}
{
this->Canvas->DrawFocusRect(lastBoundRect);
TRect r = ((TLabel *)Sender)->BoundsRect;
this->Canvas->DrawFocusRect(r);
lastBoundRect = r;
}
Цитата:
Originally posted by kasyava
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Тебе нужно виндовое выделение или программная эмуляция? По-виндовому можно выделять только наследников TWinControl - они имеют дескриптор окна. А неоконные компоненты, вроде TLabel, просто рисуются на (контексте) канве родителя.
Specifies the background color of the control.
__property Graphics::TColor Color = {read=FColor, write=SetColor, stored=IsColorStored, default=-2147483643 };
Description
Use Color to read or change the background color of the control.
If a control's ParentColor property is true, then changing the Color property of the control's parent automatically changes the Color property of the control. When the value of the Color property is changed, the control's ParentColor property is automatically set to false.
Спасибо за помощь, буду пробовать..
Цитата:
Originally posted by kasyava
У меня такой вопрос!!!
Во время выполнения программы я создаю множество различных огбъектов на TPanel (таких как Label и Image).
Как мне сделать так чтобы при нажатии на один из них мышкой он выделялся прямоугольником и при этом тот объект который был выделен до него потерял свое выделение..
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
буду признателен за помощь!
У меня такой вопрос!!!
Во время выполнения программы я создаю множество различных огбъектов на TPanel (таких как Label и Image).
Как мне сделать так чтобы при нажатии на один из них мышкой он выделялся прямоугольником и при этом тот объект который был выделен до него потерял свое выделение..
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
буду признателен за помощь!
Ну если втупую, то каждый Лейбел помести на панель, панель автосайз = true и меняй бордюр панели при клике.
Цитата:
Originally posted by kasyava
У меня такой вопрос!!!
Во время выполнения программы я создаю множество различных огбъектов на TPanel (таких как Label и Image).
Как мне сделать так чтобы при нажатии на один из них мышкой он выделялся прямоугольником и при этом тот объект который был выделен до него потерял свое выделение..
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
буду признателен за помощь!
У меня такой вопрос!!!
Во время выполнения программы я создаю множество различных огбъектов на TPanel (таких как Label и Image).
Как мне сделать так чтобы при нажатии на один из них мышкой он выделялся прямоугольником и при этом тот объект который был выделен до него потерял свое выделение..
Пробовал использовать DrawFocusRect но почемуто Label не выделяется..
Может кто нибудь знает другой способ.....???
буду признателен за помощь!
Ну очень простой метод.
в .h
Код:
class TForm1 : public TForm
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
void __fastcall FormDblClick(TObject *Sender);
void __fastcall SelectClick(TObject *Sender);
private: // User declarations
TLabel* prev;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
{
__published: // IDE-managed Components
TLabel *Label1;
TLabel *Label2;
void __fastcall FormDblClick(TObject *Sender);
void __fastcall SelectClick(TObject *Sender);
private: // User declarations
TLabel* prev;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
в .cpp
Код:
void __fastcall TForm1::SelectClick(TObject *Sender)
{
if(prev)
{
prev->Color = clBtnFace;
prev->Font->Color = clWindowText;
}
prev = (TLabel*)Sender;
prev->Color = clBlue;
prev->Font->Color = clWhite;
}
{
if(prev)
{
prev->Color = clBtnFace;
prev->Font->Color = clWindowText;
}
prev = (TLabel*)Sender;
prev->Color = clBlue;
prev->Font->Color = clWhite;
}
на OnClick вешаешь SelectClick, дальше тебя может ограничить только твоя фантазия.
P.S.
Кстати Лэйблов может быть сколько угодно