Можно ли подправить ComboBox

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Программирование на CAVO / / Можно ли подправить ComboBox

Страницы: 1  новая тема

Автор Сообщение

Группа: Модераторы
Сообщений: 177
Добавлено: 23-06-2010 12:46
Столкнулся с проблемой: надо в ComboBox-е принудительно выставить
тип выпадения списочного значения в DROPDOWNLIST.
Ситуация усугубляется тем, что он создаётся через репозиторий
через ресурс и в момент его создания я не могу повлиять на его
качества. Т.е. мне надо перерисовать (исправить) ComboBox после
его создания. Думаю, что это невозможно...
У кого какие мысли?

Группа: Участники
Сообщений: 24
Добавлено: 23-06-2010 17:31
Поподробней пожалуйста. Не совсем понятны желания. Combobox, как впрочем и любой другой объект, вполне управляем. Не понятно причем здесь репозитарий, Combobox можно создавать динамически, например в Postinit().

Группа: Модераторы
Сообщений: 177
Добавлено: 23-06-2010 19:46
Делаю свой класс ComboBox.
Задача: в закладке "General" устанавливаю свойство "Inherit from CLASS" <мой класс> и мне должно быть всё равно, какое значение стоит в закладке "stylе" у элемента "ComboBox Type".
Т.е. хочу только задав свой класс, всегда получать DropDownList.

Личный вопрос: Komar, можете черкнуть письмо мне на адрес из профиля? Я сейчас восстанавливаю свою адресную книгу...

Группа: Участники
Сообщений: 24
Добавлено: 24-06-2010 17:06
CLASS KlSchetb INHERIT bDataWindow


//{{%UC%}} USER CODE STARTS HERE (do NOT remove this line)

PROTECT oComsearch AS Comsearch
PROTECT oMyName AS ComboBoxAuto
PROTECT oMyKod AS ComboBoxAuto

METHOD PostInit(oWindow,iCtlID,oServer,uExtra) CLASS KlSchetb

LOCAL oCol AS bDataColumn
LOCAL oDb AS DbServer
LOCAL oKl AS ComSer
LOCAL aNm:={},aKd:={} as Array

SELF:Pointer:=Pointer{PointerHourGlass}

//SELF:oDcFrp:Hide()
IF Len( aPayer)= 0
oDb := DbServer{SsaIniFs:GetString('Directories','Klassif')+'KlOrg.Dbf'}
APayer := getArray(#Name,#Kod, oDb)
oDb:Close()
AAdd( aPayer,{ Space(40),Space(4)})
aPayer:=ASort(aPayer,,,{|x,y| x[1]<y[1] })
ENDIF
IF Len( aEmpl ) =0
oDB:=DbServer{SSaIniFs:GetString('Directories','Zarplata' )+'Empl.Dbf'}
DO WHILE !oDB:EOF
AAdd( aEmpl,{ AllTrim(oDB:FIELDGET(#Fam))+' '+SubStr(oDB:FIELDGET(#Name1),1,1)+'.'+;
SubStr(oDB:FIELDGET(#Name2),1,1)+'. - '+Str(oDB:FIELDGET(#TabN),5),;
oDB:FIELDGET(#TabN)})
oDB:Skip()
ENDDO
AAdd( aEmpl,{ Space(40),0})
aEmpl:=ASort(Aempl,,,{|x,y|x[1]<y[1]})

oDB:Close()
ENDIF

oKl := ComSer{SELF,'KlSchet',,SsaIniFs:GetString('Directories','Klassif'),{'KodSchet'}}
DO WHILE ! oKl:EoF
AAdd(aNm,{oKl:FIELDGET(#Name),oKl:FIELDGET(#Kod)})
AAdd(aKd,{oKl:FIELDGET(#Kod),oKl:FIELDGET(#Kod)})
oKl:skip()
ENDD
aNm:=ASort(ANm,,,{|x,y|x[1]<y[1]})
aKd:=ASort(AKd,,,{|x,y|x[1]<y[1]})
// ********************
oMyName:=ComboBoxAuto{SELF:Menu:ToolBar,888,Point{270,-195},Dimension{230,220}, , WS_CHILD+WS_OVERLAPPED}
oMyName:HyperLabel:=HyperLabel{#oMyName, 'Поиск', 'по имени;'}
oMyName:FillUsing(aNm)
oMyName:Show()

oMyKod:=ComboBoxAuto{SELF:Menu:ToolBar,889,Point{520,-195},Dimension{100,220}, , WS_CHILD+WS_OVERLAPPED}
oMyKod:HyperLabel:=HyperLabel{#oMyKod, 'Поиск', 'По коду'}
oMyKod:FillUsing(aKd)
oMyKod:Show()

Пример создания Combobox в PostInit()
Он создается в поле ToolBar меню окна.

В Вашем случае, в момент инициализации окна ComboBox установится тип отличный от родителя, прописанный в RESOURCE окна. Изменить тип думаю можно в PostInit, но не пробовал.

Группа: Модераторы
Сообщений: 177
Добавлено: 24-06-2010 17:27
Спасибо! Этот способ я знаю. Но в PostInit подправить не получится. Покопался в SDK. Если ComboBox делается родными средствами, то используются только данные его ресурса... Можно ли изменить или подправить данные ресурса по ходу исполнения кода?

Страницы: 1  новая тема
Раздел: 
Программирование на CAVO / / Можно ли подправить ComboBox

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU