powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запись массива в Комбобокс!!!
8 сообщений из 8, страница 1 из 1
запись массива в Комбобокс!!!
    #34383054
Араик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Select Товар
Locate for Товар.key_nware=ThisForm.cmbTwares.ListIndex
If found ()
Select Товар.name_product,Товар.trade_mark,pack_,volume_,qantity_,cena From Товар ;
where Товар.key_nware=ThisForm.cmbTwares.ListIndex ;
Into Array arrTov

Скажите как теперь массив arrTov записать в комбобокс,чтоб информация в arrTOVе отображалась в комбобоксе на одной строке( как объекте grid)?

(Пробовал множество вариантов , через Additem каято фигня все разбросано или неправильноиспользовал)
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34383532
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Араик(Пробовал множество вариантов , через Additem каято фигня все разбросано или неправильноиспользовал)
Используй AddListItem.

Метод AddItem() - создает новую СТРОКУ, заполняя указанный столбец (один)
Metod AddListItem() - заполняет указанный столбец указанной строки. Если строки с указанным идентификатором не существует, то создает новую строку.

AddItem() адресуется к строкам по их индексу (порядковому номеру). Пропуски (дыры) в индексе - невозможны.
AddListItem() адресуется к строкам по их внутреннему идентификатору. Пропуски (дыры) в идентификаторах возможны.
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34383541
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, проще сделать массив свойством формы и напрямую указать этот массив как источник данных для ComboBox.

В этом случае Вам необходимо предварительно создать свойство формы типа "массив". Признаком того, что новое свойство это именно массив является указание его размерности, например:

Код: plaintext
ThisForm.AddProperty("aCombo[1,1]")

Метод AddProperty() появился только в 6 версии FoxPro. В младших версиях вам придется создать это свойство вручную на этапе проектирования формы

Теперь где-то в событии Init-формы следует наполнить этот массив

Код: plaintext
SELECT ... INTO ARRAY ThisForm.aCombo

И сделайте следующие настройки в ComboBox

Код: plaintext
1.
ComboBox.RowSource='ThisForm.aCombo'  
ComboBox.RowSourceType= 5  - Array
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34384827
Араик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
еще такая проблемка у меня массив содержит как символьный тип данных так и числовой(numeric)
как весь массив мне преобразовать в символьный? (мне для записи в комбобокс нужен символьный тип, а при вводе числового выдает ошибку)

мой вариант
Select Товар
Locate for Товар.key_nware=ThisForm.cmbTwares.ListIndex
If found ()
Select Товар.name_product,Товар.trade_mark,pack_,volume_,qantity_,cena From Товар ;
where Товар.key_nware=ThisForm.cmbTwares.ListIndex ;
Into Array arTov

*Приводим массив к строковому типу данных
aTovcnt=Alen(arTov,1)
aTovclm=Alen(arTov,2)
for i=1 to aTovcnt
for j=1 to aTovClm
if artov[i,j]<>' ' ---> при arTov=0.5 выдает ошибку Operand\Operator type mismatch(несоответствие типов данных)

Artov(i,j)=str(ArTov(i,j),3)
Endif
*Вносим массив в обьект cmbNwares
Store arTov(i,j) to elmt
ThisForm.cmbNwares.AddListItem(elmt,i,j)
Endfor
endfor
else
MessageBox("Нет продукции на складе")
Endif

Почему if arTov[i,j] <>"" выдает ошибку!! в чем прикол? (это ж оператор сравнения, он че и типы сравнивает!, я ж не давал команды проверки типов)
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34384870
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересно, а как можно сравнить два значения не используя их тип?
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34384988
Араик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а как использовать тип? че то я тя не понимаю товарищ Сизов!
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34385038
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сизов имел в виду , что вы сравниваете кислое с мягким.
Фокс автоматом данные к одному типу не приводит
artov[i,j] у вас число , а ' ' это символ
Вот вам фокс и говорит что несовпадение типов ( ну а что-же ему еще говорить-то ?)
т.е. скорее всего вам надо что-то типа
Код: plaintext
1.
2.
if vartype(artov[i,j])='N'  
Artov(i,j)=str(ArTov(i,j), 3 )
Endif
ну и опять-же у вас судя по примеру есть дробная часть - поэтому
опять-же
Код: plaintext
str(ArTov(i,j),длина,кол-во_знаков_после_запятой)
...
Рейтинг: 0 / 0
запись массива в Комбобокс!!!
    #34385230
Араик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо работает!!!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запись массива в Комбобокс!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]