powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 2 vopros
25 сообщений из 27, страница 1 из 2
2 vopros
    #32776542
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Privet . U menya srazu 2 voprosa.

1. Mojno li delat kruqlaya knopka v VFP5?
2. Yest tablitsa.Nado cdelat tak chto sluchayno vibrat kakoy-to pole i kakoy-to zapis
(zapis-toje sluchayno) ,i zanchenie etoqo pole pomenyat na sluchaynoe chislo.
No pri etom v kajdom pole yest oqranichenie.Napirmer: 1-ya pole mojet menyatsa
ot 1 do 9,2-ya pole ot 10 do 19, 3-ya pole ot 20 do 29.Kto to stalkivalsa
s takoy zadachoy?
...
Рейтинг: 0 / 0
2 vopros
    #32776569
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1 создать невидимую кнопку и поверьх ее поставить рисунок с крожочком
2. создать массиф полей таблицы - AFIELDS(), через RAND() получить случайное число в диапазоне количества полей и выбрать это поле. Снова RAND() и GO на эту запись. а далее свои условия проверяй и меняй по необходимости
...
Рейтинг: 0 / 0
2 vopros
    #32776570
Philin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на второй вопрос:
сначала случайно выбираешь запись в таблице:
Код: plaintext
1.
2.
3.
NumRec = (RecCount() +  1 ) * RAND()
Go NumRec
lcMin = (NumRec -  1 )* 10 
lcMax = (NumRec -  1 )* 10  +  9 
и новое значение будет
Код: plaintext
NewVal = (LcMax - LcMin +  1 )*RAND()
...
Рейтинг: 0 / 0
2 vopros
    #32777475
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2-m voprosam pomoemu ya razabralsa, sposibo Vam.
Nashet 1-y: 'Nevidemaya knopka' eto znachit 'visible=.f.' Ili ya cto-to ne ponimayu?
...
Рейтинг: 0 / 0
2 vopros
    #32777532
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не, это обычная кнопка у кот cmd.Visible=.T. но cmd.Style=1 - invisible
...
Рейтинг: 0 / 0
2 vopros
    #32777564
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в фокспро рисунок тоже имеет метод click()
поэтому просто нарисуй кнопку и обрабатывай щелчок на рисунке
...
Рейтинг: 0 / 0
2 vopros
    #32781671
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pomoqite, ne moqu delat kruqluyu knopku.S pomoshi shape tolko pryamuqolnik poluchaetsa.
...
Рейтинг: 0 / 0
2 vopros
    #32781737
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
она фсегда будет выделяца квадратом - потому што это не Флеш или ч:Е там еще может сделать круглые кнопки? Либа ищи АстХ спецовый, либа читай посты выше и создай круглый рисунок. иначе - никак
...
Рейтинг: 0 / 0
2 vopros
    #32781791
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A kak cdelat kruqluy risunok (otdelno ot foxpro? , napirmer s pomoshi photoshopa, ili v foxpre yest takaya vozmojnost delat kruqliy risunok?) i kak postavit na forme?
...
Рейтинг: 0 / 0
2 vopros
    #32781805
leaf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
из стандартных програма paint или лучше любой редектор для пиктограмм
фотошоп это круто и даже слишком
чем сложнее рисунок тем дольше он грузится в память - выводы сами делайте
...
Рейтинг: 0 / 0
2 vopros
    #32781810
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
о блин :) Хоть в ПаинтБраше рисуешь BMP, потом присваиваеь cmd.Picture= твой рисунок и стираешь у кнопки Caption
...
Рейтинг: 0 / 0
2 vopros
    #32781815
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
добафчик - белый цвет буит "прозрачный" Если белый тебе нужен, то еще придеца сделать файл маски - тотже BMP, тока расширение MSK и чернобелый, где белый - прозрачные места, чорные - соотв нет :)
...
Рейтинг: 0 / 0
2 vopros
    #32784623
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Chto ya ne pravilno delal:
Sozdal knopku, caption ubral, i v painte delal risunok. (cmd.Picture= risunok)
Yesli dlya knopki cmd.Style=1 , toqda risunok ne vidno
I yeshyo kak mojno delat tak chto kvadratnaya knopka ne zametno bilo?
...
Рейтинг: 0 / 0
2 vopros
    #32784645
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо cmd.Picture= risunok, рисунок размещаешь сверху кнопки.
По идее и кнопки не надо. Вставляешь контрол Image, привязываешь к нему свой рисунок, а в его (контрола) Click пишешь свой код.
...
Рейтинг: 0 / 0
2 vopros
    #32785104
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sposibo ALEKSMED, Poluchilos.

No, nachet 2 voprosa ,utochnenie:
Yest takaya tablitsa(NB1.DBF),i tsikl nacinaetsa ot 1 do napirmer 30.
I v kajdom tsikle doljen menyatsa znachenie poley (yesli <>0) na sluchayno
vibrannoe chislo nachinaya ot poley 'A1' do 'B6'

No pri etom yest oqranichenie dlya poley, napirmer
dlya A1 i B1 znachenie poley mojet menyatsa ot 1 do 9
dlya A2 i B2 znachenie poley mojet menyatsa ot 10 do 19
dlya A3 i B3 znachenie poley mojet menyatsa ot 20 do 29
dlya A4 i B4 znachenie poley mojet menyatsa ot 30 do 39
dlya A5 i B5 znachenie poley mojet menyatsa ot 40 do 49
dlya A6 i B6 znachenie poley mojet menyatsa ot 50 do 60

i dlya parnix poley (A1 i B1, A2 i B2, A3 i B3, A4 i B4, A5 i B5, A6 i B6)
znachenie poley ne mojet povtoryatsa.
Kak reshit eti zadachi,pomoqite pojalusta!
...
Рейтинг: 0 / 0
2 vopros
    #32785109
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tablitsa:
...
Рейтинг: 0 / 0
2 vopros
    #32789256
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?!
...
Рейтинг: 0 / 0
2 vopros
    #32789320
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вопрос на примитивное знание команд FoxPro. Поэтому кода не напишу, но некоторые намеки:

RAND() возвращает значение от 0 до 1. Поэтому, если Вам надо получить случайное значение в некотором заданном диапазоне, то проще исходить из предположения, что RAND() - это процент от интервала. Например:

Код: plaintext
1.
2.
3.
4.
LOCAL lnValueMin, lnValueMax, lnRand, 
lnValueMin =  10 
lnValueMax =  20 
=RAND(- 1 ) && для сброса счетчика "случайных" чисел
lnRand = m.lnValueMin + ROUND((m.lnValueMax - m.lnValueMin) * RAND(), 0 )

Для определения имени поля выбранного случайным образом почитайте описание команд

FCOUNT() - количество полей в таблице
FIELD() - возвращает имя поля по его номеру
AFIELDS() - структура таблицы записывается в массив. Одна строка - описание одного поля.

Для привсоения значения полю, если имя этого поля записано в переменной используют макроподстановку. Примерно так:

Код: plaintext
1.
2.
3.
LOCAL lcFieldName
lcFieldName = "B1"
select MyTable
REPLACE &lcFieldName WITH  10 
...
Рейтинг: 0 / 0
2 vopros
    #32789395
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VladimirM,Vi pishite primitivnoe znanie foxpro, no eto dlya menya slojnaya
zadaca, priblizitelno chto-to takaya, ya delal.No mne nado yeshyo
odnajdi slucayno vibrannoe pole,zapis i tsifra sledyushiy raz vibralsa.
dopustim yesli, v pole "A1" 1-y zapis 3, bolshe ne qde eto kombinatsiya
ne doljno vstrechatsa, Yesli yeshyo raz vibrona pole "A1" i 1-zapis,
toqda tsifr doljen bit #3 i yeshyo V ODNOM TSIKLE eto tsifra (3) v pole
"A1" i "B1" NE DOLJNO UCASTVOVAT.yesli vibrano pole dopustim "B3",
eto tsifra ne doljno ucastvovat v pole "A3" i "B3" i t.d.
...
Рейтинг: 0 / 0
2 vopros
    #32789511
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Формализуем твое ТЗ (техническое задание)

У тебя надо случайным образом выбирать 3 значения:

1) Номер поля
2) Номер записи
3) Значение

При этом комбинация этих 3 значений должна быть уникальна.

Следовательно, необходимо организовать хранение ранее выбранных троек значений, чтобы исключить повторы

Номер поля и номер записи никак не связаны между собой, но "Значение" должно находится в диапазоне, который определяется по выбранным номерам полей и номерам записи.

Тебе дается N попыток выбора случайных комбинаций (например, 30 раз).

Схема решения:

1) Создаем временную таблицу для хранения выбранных троек случайных значений

CREATE CURSOR curSelect (nField I, nRecord I, nValue I)

2) Нам необходимо повторять операцию поиска троек случайных значений, до тех пор, пока не будет набрано 30 наборов случайных значений. В данном случае - 30 записей в курсоре curSelect

=RAND(-1)
DO WHILE Reccount("curSelect")<30
...
ENDDO

3) Внутри этого цикал отдельно определяем каждое из 3 значений (как? уже неоднократно объяснили)

LOCAL lnField, lnRecord, lnValue
lnField = ... RAND() ...
lnRecord = ... RAND() ...
lnValue = ... RAND() ...

4) Перед тем, как записать полученную тройку значений в итоговый курсор проверям, не были ли использована эта комбинация раньше

select curSelect
LOCATE FOR nField = m.lnField AND nRecord = m.lnRecord AND nValue=m.lnValue
IF FOUND("curSelect")=.T.
* Такая комбинация уже была
* Повторяем расчет случайных значений без записи
LOOP
ENDIF

5) Если такой комбинации случайных значений не было, то записываю эту комбинацию в итоговый курсор и выполняю модификацию нужного поля в нужной записи

INSERT INTO curSelect (nField, nRecord, nValue) VALUES (m.lnField, m.lnRecord, m.lnValue)
LOCAL lcField
lcField = FIELD(m.lnField, "MyTab")
select MyTab
GO (m.lnRecord)
REPLACE &lcField WITH m.lnValue


Надеюсь, такого объяснения достаточно?
...
Рейтинг: 0 / 0
2 vopros
    #32789587
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vot u menya kod.
Chto u menya ne poluchaetsa:
1. Sluchayno vibraetsa tolko te pole i te zapisi kotoriy ne pusto.
2. Odnajdi slucayno vibrannoe pole,zapis i tsifra sledyushiy raz ne vibralsa.
dopustim yesli, v pole "A1" 1-y zapis 3, bolshe ne qde eto kombinatsiya
ne doljno vstrechatsa, Yesli yeshyo raz vibrona pole "A1" i 1-zapis,
toqda tsifr doljen bit #3
3. Dlya 1-qo "N" (pole) kajdiy tsifr 1 raz doljen ucastvovat.
4. Yest oqranichenie dlya poley
dlya A1 i B1 znachenie poley mojet menyatsa ot 1 do 9
dlya A2 i B2 znachenie poley mojet menyatsa ot 10 do 19
dlya A3 i B3 znachenie poley mojet menyatsa ot 20 do 29
dlya A4 i B4 znachenie poley mojet menyatsa ot 30 do 39
dlya A5 i B5 znachenie poley mojet menyatsa ot 40 do 49
dlya A6 i B6 znachenie poley mojet menyatsa ot 50 do 60
...
Рейтинг: 0 / 0
2 vopros
    #32790435
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To yest, mne nujno poluchit napirmer 100 (eto mojet bit i bolshe) unikalnaya
tablitsa "nb_tek" (nb_tek1,nb_tek2,...nb_tek100) I eti tablitsi doljni xranitsa
v tablitsa "gen" (appe from)
(Prietom vishe skazannie pravili (oqranichenie) doljni soblyudatsa )
...
Рейтинг: 0 / 0
2 vopros
    #32791718
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот ведь упорный какой! Пока код не напишут не успокоится

Ладно, если время терпит, то на выходных я тебе напишу код. Надеюсь, саму задачу я понял правильно?

И еще твои дополнительные условия к написанному ранее ТЗ:

-) Можно модифицировать только содержимое полей с 11 по 22 (это поля A1, A2, ... B1, B2), если до модификации в выбранной записи уже было записано какое-то значение отличное от 0.

-) Диапазон допустимых значений для полей определяется по цифре в имени поля. Эта цифра определяет десяток, в пределах которого должно быть значение.

A5 - выделяем 5, значение в диапазоне от (5-1)*10 до 5*10-1

Правильно?
...
Рейтинг: 0 / 0
2 vopros
    #32791811
SDF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Da, VladimirM, vsyo pravilno! Yesli i kod budet ,budu ochen bloqadaren.
...
Рейтинг: 0 / 0
2 vopros
    #32792430
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот. Посмотри, что получилось.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / 2 vopros
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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