| 
			| 
					
						| Дмитрий777 
								Гость
 | 
								|  | «  : 04-08-2009 08:47 »  |  | 
 
 Здравствуйте. Нужно в панели статусбара изменить цвет шрифта. Не могу найти в настройках ничего похожего. Или Дельфи-7 глючит?  Или голову напекло? Подскажите плз.   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| RXL | 
								|  | « Ответ #1 : 04-08-2009 09:51 »  |  | 
 
 Тип TStatusBar? Смотри свойства ParentColor и Font.Color. |  
						| 
								|  |  
								|  |  Записан | 
 
 ... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #2 : 04-08-2009 09:57 »  |  | 
 
 Рисуй на канве: StatusBar1.Canvas.Font.Color := clRed;StatusBar1.Canvas.TextRect(...
 
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #3 : 05-08-2009 14:35 »  |  | 
 
 я вот тоже помню такую шнягу, что надо было ставить у панели ownerdraw и исполнять танцы с бубнами. из-за того, что TStatusBar - это враппер вокруг виндового компонента и его цветом якобы рулит сама винда. 
 а сейчас попробовал - меняется. штатно - свойство Color. дельфя - 7.0, сборка 4.453. винда - xp pro 2002, sp3.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #4 : 06-08-2009 03:40 »  |  | 
 
 x77, Win XP SP2 - не меняется. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #5 : 10-08-2009 12:18 »  |  | 
 
 проверил на работе, на sp2 - меняется. но там стоит D7.0 (build 8.1) |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #6 : 10-08-2009 13:02 »  |  | 
 
 Delphi2007(v 11.0.2709.7128) - цвет также не меняется |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #7 : 10-08-2009 14:14 »  |  | 
 
 мне почему-то кажется, что тут дело не в дельфях. если будет время, скинь, плз., свой comctrls.pas или прогони диффом с моим. |  
						| 
								| 
 |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #8 : 10-08-2009 14:28 »  |  | 
 
 Найдено одно различие здесь:
 procedure TComboExItems.Notify(Item: TCollectionItem;
 Action: TCollectionNotification);
 begin
 case Action of
 cnAdded:
 with TComboExItem(Item) do
 begin
 FImageIndex := -1;
 FSelectedImageIndex := -1;
 FIndent := -1;
 FOverlayImageIndex := -1;
 FData := nil;
 FCaption := '';
 end;
 cnExtracting, cnDeleting:
 if not (csDestroying in TWinControl(Owner).ComponentState) then
 SendMessage(TWinControl(Owner).Handle, CBEM_DELETEITEM, Item.Index, 0);
 end;
 end;
 
 В моем модуле есть cnDeleting, а в твоем нет. Судя по всему, данное различие никакого отношения к цвету статусбара не имеет. Сейчас нет времени ковыряться в исходниках Delphi, будет время гляну как там свойство Font привязано к отображению текста.
 Ради интереса, если не трудно, скинь проект с цветным текстом статусбара, может я что не так делаю?
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Sla | 
								|  | « Ответ #9 : 10-08-2009 14:37 »  |  | 
 
 нескромный вопрос. попадающий в оффтоп
 А нафига в статусбаре менять цвет?
 Шоб моргало и сверкало?
 |  
						| 
								|  |  
								|  |  Записан | 
 
 Мы все учились понемногу... Чему-нибудь и как-нибудь. |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #10 : 10-08-2009 15:07 »  |  | 
 
 нескромный вопрос. попадающий в оффтоп
 А нафига в статусбаре менять цвет?
 Шоб моргало и сверкало?
 
 а тут два варианта. либо чтобы моргало и сверкало, либо наоборот - чтобы статусбар был всегда фиксированного цвета в независимости от тем и настроек рабочего стола виндузы. |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #11 : 10-08-2009 16:04 »  |  | 
 
 может я что не так делаю?
 я пустой проект открываю, кидаю статусбар, меняю цвет:  причём он сразу в дизайн-тайме меняется. |  
						| 
								| 
 |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #12 : 10-08-2009 19:12 »  |  | 
 
 x77, название темы - цвет шрифта статус-бара, а не цвет статус-бара. А цвет статус-бара прекрасно меняется, но шрифт, какой бы в свойстве Font  ни ставил - все равно черный. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| x77 
								Модератор
								
								   Offline 
								Пол:    
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							 | 
								|  | « Ответ #13 : 11-08-2009 09:28 »  |  | 
 
 zubr, вот это я протупил   |  
						| 
								|  |  
								|  |  Записан | 
 
 |  |  | 
	| 
			| 
					
						| Oldy | 
								|  | « Ответ #14 : 11-08-2009 14:57 »  |  | 
 
 Из "kuliba" procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect);begin
 with statusbar1.Canvas do
 begin
 Brush.Color := clRed;
 FillRect(Rect);
 TextOut(Rect.Left, Rect.Top, 'Панель '+IntToStr(Panel.Index));
 end;
 end;
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 11-08-2009 15:03 от Oldy » |  Записан | 
 
 С уважением, Oldy. |  |  | 
	| 
			| 
					
						| zubr 
								Гость
 | 
								|  | « Ответ #15 : 11-08-2009 15:10 »  |  | 
 
 Oldy, а зачем Brush.Color := clRed;
 FillRect(Rect);?
 Ведь речь о цвете шрифта!
 |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Oldy | 
								|  | « Ответ #16 : 11-08-2009 16:15 »  |  | 
 
 zubr, Я сразу понял, что написал не то, но не смог удалить свой пост. Куда-то девалась эта возможность.  Вот из Delphikingdom:  Вопрос:Почему при изменении цвета букв StatusBar'а ничего не происходит?
 
 Ответ:
 
 Status bar - стандартный элемент управления Windows, и соответственно цвет его букв - значение clBtnText которое изменяется с помощью настроек в Control Panel. Этот цвет черный по умолчанию и может изменяться в зависимости от выбранной цветовой схемы. Другие стандартные элемент управления Windows, например кнопки, также имеют цвет букв, настраиваемый из ControlPanel. StatusBar и его панели имеют свойство "owner-draw", позволяющее Вам использовать любой цвет букв.
 Пример:
 
 procedure TForm1.StatusBar1DrawPanel(StatusBar: TStatusBar;
 Panel: TStatusPanel; const Rect: TRect);
 begin
 if Panel = StatusBar.Panels[0] then
 begin
 StatusBar.Canvas.Font.Color := clRed;
 StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, 'Panel - 0')
 end
 else
 begin
 StatusBar.Canvas.Font.Color := clGreen;
 StatusBar.Canvas.TextOut(Rect.Left, Rect.Top, 'Panel - 1');
 end;
 end;
 
 |  
						| 
								|  |  
								| « Последнее редактирование: 11-08-2009 17:13 от Oldy » |  Записан | 
 
 С уважением, Oldy. |  |  | 
	|  |