COMBO
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
COMBO
Может знает кто -- как разделить логику при выборе пользователем Entry-части combobox (для ввода текста) и при нажатии на кнопку-стрелку, разворачивающую список?
			
			
									
						С уважением, ДП
			
						Re: COMBO
Вот это не поможет найти решение (Кусок из FileDropComboClass.TakeEvent PROCEDURE):
CASE EVENT()
OF EVENT:OpenWindow
SELF.EntryField = SELF.ListControl
SELF.ListField = SELF.ListControl + 1000
SELF.ListControl{PROP:ListFeq} = SELF.ListField
SELF.ButtonField = SELF.ListControl + 2000
SELF.ListControl{PROP:ButtonFeq} = SELF.ButtonField
			
			
									
						CASE EVENT()
OF EVENT:OpenWindow
SELF.EntryField = SELF.ListControl
SELF.ListField = SELF.ListControl + 1000
SELF.ListControl{PROP:ListFeq} = SELF.ListField
SELF.ButtonField = SELF.ListControl + 2000
SELF.ListControl{PROP:ButtonFeq} = SELF.ButtonField
Re: COMBO
Не понял. Я сам-то комбо принципиально не использую нигде, поэтому фантазирую, но мне кажется события на EntryField и ButtonField разделить можно?
Или проверять EntryField{PROP:Hide),ListField{PROP:Hide}?
			
			
									
						Или проверять EntryField{PROP:Hide),ListField{PROP:Hide}?
Re: COMBO
Может быть, так попробовать:
Если в Event:Selected Keycode()<>MouseLeft - значит, это Entry
Иначе если Prop:SelStart>1 - опять же Entry
Иначе если MouseX() < Prop:Xpos+Prop:Width-Prop:Height - таки снова Entry
Иначе кнопа...
			
			
									
						Если в Event:Selected Keycode()<>MouseLeft - значит, это Entry
Иначе если Prop:SelStart>1 - опять же Entry
Иначе если MouseX() < Prop:Xpos+Prop:Width-Prop:Height - таки снова Entry
Иначе кнопа...
Re: COMBO
Prop:SelStart не канает, при щелчке по кнопке может выделиться часть текста. 
А остальное работает...
			
			
									
						А остальное работает...
- Дед Пахом
 - Старичок
 - Сообщения: 3346
 - Зарегистрирован: 07 Июль 2005, 16:51
 - Откуда: Москва, Россия
 - Благодарил (а): 20 раз
 - Поблагодарили: 56 раз
 - Контактная информация:
 
Re: COMBO
Юрий, спасибо, работает! Вот мой вариант:Yufil писал(а):Может быть, так попробовать:
Если в Event:Selected Keycode()<>MouseLeft - значит, это Entry
Иначе если Prop:SelStart>1 - опять же Entry
Иначе если MouseX() < Prop:Xpos+Prop:Width-Prop:Height - таки снова Entry
Иначе кнопа...
Код: Выделить всё
Combo::ButtonPressed    PROCEDURE(SIGNED pComboFEQ)
bLeft                     SIGNED, AUTO    !-- Btn{XPos}
  CODE
  IF pComboFEQ{PROP:Type} <> CREATE:combo
    RETURN FALSE    !-- not a combo
  END
  bLeft = pComboFEQ{PROP:Xpos} + (pComboFEQ{PROP:ButtonFEQ}){PROP:Xpos}  !-- left pos of dropdown button
  
  IF KEYCODE() <> MouseLeft OR MOUSEX() < bLeft
    !-- whether not a mouse was pressed or clicked outside dropdown-part
    RETURN FALSE
  END
  
  RETURN TRUE
И всем спасибо тоже!
С уважением, ДП
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Re: COMBO
А я использую событие EVENT:DroppingDown. По-моему, оно однозначно показывает, что нажата эта кнопка. И ещё вопрос по теме, раз уж говорим о Combo. Combo используется при редактировании Edit-In-Place в классе LookUp. Хотелось бы повесить на эту кнопку Tip, ну типа "Выбрать файл фотографии". Ни у кого не идей?
			
			
									
						We are hard at work… for you.   
			
						- 
				Igor Vesnin
 - Посетитель
 - Сообщения: 49
 - Зарегистрирован: 30 Декабрь 2005, 0:06
 
