Вопрос № 24702: Доброго времени суток, уважаемые!
Подскажите пожалуйста как выделить какой-либо пункт меню каймой красного цвета (меню уже раскрыто)?
В приложении пример как я выделяю любой контрол, однако не могу определить экранные координаты пункта меню....Вопрос № 24709: Здравствуйте, уважаемые эксперты.
Подскажите, пожалуйста, у меня никак
не получается:
1. Как найти все ListBox, имя которых
начинается с "MyList_" ?
2. Можно ли менять цвет текста в TStatusBar ?
Заранее бол...
Вопрос № 24.702
Доброго времени суток, уважаемые!
Подскажите пожалуйста как выделить какой-либо пункт меню каймой красного цвета (меню уже раскрыто)?
В приложении пример как я выделяю любой контрол, однако не могу определить экранные координаты пункта меню.
Надеюсь, понятно изложил... Благодарю за внимание!
Приложение:
Отправлен: 10.08.2005, 13:06
Вопрос задал: Zubex (статус: 1-ый класс)
Всего ответов: 1 Мини-форум вопроса >>>
Отвечает: Ерёмин Андрей
Здравствуйте, Zubex!
Для того, чтобы иметь возможность самостоятельно отрисовывать пункты меню, нужно установить для этого меню тип OwnerDraw. После этого в событии OnDrawItem можно делать всё, что угодно. Рисовать - как на обычном TCanvas. Событию передаётся параметр Rect (или ARect - точно не помню), в котором хранится прямоугольный участок для данного пункта меню. Вот примерно то, что Вам нужно там написать:
if (odSelected in State) Then
Begin
Menu.Canvas.Brush.Style:=bsClear;
Menu.Canvas.Pen.Color:=clRed;
Menu.Canvas.Rect(Rect);
End;
Если у стандартного меню нет возможности изменения типа (точно не помню, возможно действительно нет) и нет такого события, то следует воспользоваться менюшками из JediVCL. Удачи!
--
С уважением,
Андрей.
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 10.08.2005, 17:52
Вопрос № 24.709
Здравствуйте, уважаемые эксперты.
Подскажите, пожалуйста, у меня никак
не получается:
1. Как найти все ListBox, имя которых
начинается с "MyList_" ?
2. Можно ли менять цвет текста в TStatusBar ?
Отвечает: Rusland
Здравствуйте, Гусев Сергей!
1. Смотри пример ниже - поиск компонента
2. Со стандартной панелью можно менять только размер, вид шрифта. Советую использовать компонент из набора LMD LMDStatusBar.
Удачи.
Приложение:
--------- Тише едешь, дальше будешь... от того места куда едешь
Ответ отправил: Rusland (статус: Студент)
Отправлен: 10.08.2005, 15:12
Отвечает: Zubex
Здравствуйте, Гусев Сергей!
1. См предыдущий ответ;
2. Можно сделать следующее:
в StatudBar`е создать панель, присвоить ей свойство
StatusBar.Panels[0].style="psOwnerDraw;" далее см. в приложении...
Приложение:
Ответ отправил: Zubex (статус: 1-ый класс)
Отправлен: 10.08.2005, 16:48
Отвечает: Tsechoev Bagaudin
Здравствуйте, Гусев Сергей!
Вопрос 1.
Вот не оптимизированный метод, не было на это времени, но это работает:
procedure TForm1.Button1Click(Sender: TObject);
var
i: integer;
begin
for i:=0 to self.ControlCount-1 do
begin
if CompareStr(Copy(self.Controls[i].Name,1,7),'MyList_') = 0 then // если сравнение нужно без учета регистра, то используй CompareText
showMessage(self.Controls[i].Name);
end;
end;
Вопрос 2:
Я компоненту такого рода еще не встречал, а если создавать самому, то долго возиться.
Удачи!
--------- Есть только одно зло - невежество, и только одно благо - знания
Ответ отправил: Tsechoev Bagaudin (статус: 10-ый класс)
Отправлен: 10.08.2005, 17:00
Отвечает: Ерёмин Андрей
Здравствуйте, Гусев Сергей!
1. Воспользуйтесь массивом Components формы, на которой данные TListBox расположены.
Вот код, который во все TListBox, расположенные на форме Form1 и имя которых начинается с "MyList_", добавляет строку "Hello!":
procedure TForm1.Button1Click(Sender: TObject);
Var I: Integer;
begin
For I:=0 To Form1.ComponentCount-1 Do
If (Form1.Components[I].ClassName = 'TListBox')
And (Pos('MyList_',Form1.Components[I].Name) > 0) Then
TListBox(FindComponent(Form1.Components[I].Name)).Items.Add('Hello!');
end;
2. В стандартном TStatusBar - нет. Причина заключается в том, что этот компонент отрисовывает Windows и использует системные цвета. Чтобы выводить цветной текст, воспользуйтесь сторонними компонентами, например StatusBar Pro или из набора JediVCL.
Удачи!
--
С уважением,
Андрей.
--------- Если б не было бы глюка, жизнь была б такая скyка...
Ответ отправил: Ерёмин Андрей (статус: Студент)
Отправлен: 10.08.2005, 17:52