LIST как BROWSE (Clarion 5.5)

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Yufil »

О птичках...
ABCFree Templates содержит шаблон BrowseQueue...
EugeneR
Посетитель
Сообщения: 30
Зарегистрирован: 02 Август 2011, 12:40
Откуда: г. Ленинск-Кузнецкий

Re: LIST как BROWSE (Clarion 5.5)

Сообщение EugeneR »

Всем здравствуйте! Помогите пожалуйста с таким маленьким вопросом. А то я что-то запутался совсем...

Код: Выделить всё

OF  ?EditRec     ! редактировать запись
                    GET(Q,CHOICE(?List))    ! получить в Q выделенную строку из List'а
                    OPEN(WinEditRec)	        ! открыть окно редактирования записи (это окно номер 2)
                    ?UpdTel{PROP:USE}=Q.Tel; ?UpdFam{PROP:USE}=Q.Fam; ?UpdAdr{PROP:USE}=Q.Adr; ?UpdKat{PROP:USE}=Q.Kat;
                 
                    ACCEPT
                        CASE ACCEPTED()
                             OF ?UpdRec     	! кнопка сохранить
                                Q.Tel=?UpdTel{PROP:USE}; Q.Fam=?UpdFam{PROP:USE}; Q.Adr=?UpdAdr{PROP:USE};  Q.Kat=?UpdKat{PROP:USE};
                                
                                PUT(Q)     	        ! обновить запись в очереди
                                F.R=Q       	! подготовить файловую запись
                                PUT(F)      	!   записать ее. Почему не пишет в файл в позицию, соответствующую позиции в Q?

                                DISPLAY
                                break

                             OF ?ExitRec    	! кнопка выхода без сохранения
                                BREAK
                        END
                    END
После нажатия кнопки "сохранить изменения", PUT(F) пишет всегда в первую запись. Почему не пишет в файл в позицию, соответствующую позиции в Q?
svru
Посетитель
Сообщения: 27
Зарегистрирован: 29 Февраль 2012, 13:49
Откуда: Е-бург

Re: LIST как BROWSE (Clarion 5.5)

Сообщение svru »

EugeneR писал(а):Всем здравствуйте! Помогите пожалуйста с таким маленьким вопросом. А то я что-то запутался совсем...
OF ?EditRec ! редактировать запись
GET(Q,CHOICE(?List)) ! получить в Q выделенную строку из List'а
OPEN(WinEditRec) ! открыть окно редактирования записи (это окно номер 2)
?UpdTel{PROP:USE}=Q.Tel; ?UpdFam{PROP:USE}=Q.Fam; ?UpdAdr{PROP:USE}=Q.Adr; ?UpdKat{PROP:USE}=Q.Kat;

ACCEPT
CASE ACCEPTED()
OF ?UpdRec ! кнопка сохранить
Q.Tel=?UpdTel{PROP:USE}; Q.Fam=?UpdFam{PROP:USE}; Q.Adr=?UpdAdr{PROP:USE}; Q.Kat=?UpdKat{PROP:USE};

PUT(Q) ! обновить запись в очереди
F.R=Q ! подготовить файловую запись
PUT(F) ! записать ее. Почему не пишет в файл в позицию, соответствующую позиции в Q?

DISPLAY
break

OF ?ExitRec ! кнопка выхода без сохранения
BREAK
END
END
После нажатия кнопки "сохранить изменения", PUT(F) пишет всегда в первую запись. Почему не пишет в файл в позицию, соответствующую позиции в Q?
В общем случае перед выполнением функции Put(F) необходимо выполнить функцию Get(F) или SET(F), и разумеется, NEXT(F), :lol: чтобы обозначить запись, над которой будут выполняться операции изменения или удаления.
Последний раз редактировалось svru 22 Май 2012, 19:07, всего редактировалось 1 раз.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Yufil »

1.Надо обработать Event:NewSelection для листбокса, чтобы выбрать запись очереди
Get(Queue,?List{Prop:Selected})

2. Весьма удобно поля для EIP делать непосредственно полями очереди (?Q:Tel, ?Q:Fam и т.д.), тогда игрища с Prop:Use становятся абсолютно не нужными.

3. Запись сохраняется не по кнопке, а по Event:Selected на любое поле, кроме редактируемых. Иначе будут неприятности при уходе с листбокса.
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Shur »

В общем случае перед выполнением функции Put(F) необходимо выполнить функцию Get(F) или SET(F), чтобы обозначить запись, над которой будут выполняться операции изменения или удаления.
...Get(F) или SET(F)..NEXT(F)...

А перед PUT(F) желательно WATCH() какой-нибудь вставить, если, конечно, это не однопользовательская система.
Да и DUPLICATE() не помешает для проверки, чего там навводили.

...PUT(F) лучше делать под LOGOUT() и вносить изменения в очередь Q после COMMIT.

А лучше всего переделать это всё на стандартный темплейт Form, если это не противоречит принципам разработчика.
EugeneR
Посетитель
Сообщения: 30
Зарегистрирован: 02 Август 2011, 12:40
Откуда: г. Ленинск-Кузнецкий

Re: LIST как BROWSE (Clarion 5.5)

Сообщение EugeneR »

В общем случае перед выполнением функции Put(F) необходимо выполнить функцию Get(F) или SET(F), и разумеется, NEXT(F), чтобы обозначить запись, над которой будут выполняться операции изменения или удаления.
Я использую в ROUTINE загрузку Q из F (через VIEW)

Код: Выделить всё

LoadQueue       ROUTINE
                LOOP
                    NEXT(V)
                    IF ERRORCODE()
                    break
                    .
                    Q.TEL = CLIP(FDB:TEL)
                    Q.FAM = CLIP(FDB:FAM)
                    Q.ADR = CLIP(FDB:ADR)
                    Q.UPP = CLIP(FDB:UPP)
                   
                    ADD(Q)
                endили
И больше к чтению F не возвращаюсь. 
Может как-то отслеживать каждое перемещение в List'е на соответствие записям в VIEW или в F?
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Shur »

В этой же очереди надо сохранить либо значение уникального ключа (ID), чтобы потом можно было сделать GET по ключу,
либо, если такового нет, то POINTER или POSITION (в зависимости от драйвера), опять-таки чтобы сделать GET по указателю или REGET.
Ну и всё вышесказанное.
Алексей- Софт-Центр
Ветеран
Сообщения: 390
Зарегистрирован: 26 Август 2009, 12:41
Откуда: Moscow
Контактная информация:

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Алексей- Софт-Центр »

Добрый день!
Я использую в ROUTINE загрузку Q из F (через VIEW)
Можно дурацкий вопрос: а зачем все это делать ручками,
а не использовать стандартный temlate Browse ? Который все это делает сам...

Алексей
EugeneR
Посетитель
Сообщения: 30
Зарегистрирован: 02 Август 2011, 12:40
Откуда: г. Ленинск-Кузнецкий

Re: LIST как BROWSE (Clarion 5.5)

Сообщение EugeneR »

В этой же очереди надо сохранить либо значение уникального ключа (ID), чтобы потом можно было сделать GET по ключу,
либо, если такового нет, то POINTER или POSITION (в зависимости от драйвера)
Я использую драйвер TOPSPEED. KEY не использую, потому что, когда его указываю, то при открытии базы ошибка - нет записей. Почему?
Shur
Ветеран
Сообщения: 384
Зарегистрирован: 02 Июль 2011, 18:49

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Shur »

Давайте поподробнее и лучше с кодом (описания файла и места ошибки).
А то я смотрю у вас и в LoadQueue закралась ошибка: отсутствует SET() перед циклом LOOP.
(Надобно сказать, что NEXT() всегда работает в паре с SET(), типа также как FindFirst..FindNext, если так понятнее)
EugeneR
Посетитель
Сообщения: 30
Зарегистрирован: 02 Август 2011, 12:40
Откуда: г. Ленинск-Кузнецкий

Re: LIST как BROWSE (Clarion 5.5)

Сообщение EugeneR »

Вот код, посмотрите, пожалуйста. Как работать с индексными файлами (или ключами)? Как исправить режим корректировки записи? Как улучшить фильтр? (Давайте только без шаблонов, всё ручками - мне так надо для большего понимания "из нутри")

Код: Выделить всё

        PROGRAM
        INCLUDE('KEYCODES.CLW')
        MAP
Main    PROCEDURE

        END

        CODE
        Main

Main    PROCEDURE
?EditEntry  EQUATE(100)
EditEntry   string(64)
Columns     SHORT,DIM(8)
ChDb        SHORT(0)            ! флаг внесения изменений в базу и он же счетчик измененных полей
isOpen      SHORT(0)
cnt         LONG(0)
DropL       LONG(10)

Q       QUEUE,PRE(Q)
Tel         STRING(5)
Fam         STRING(27)
Adr         STRING(27)
UPP         STRING(4)
Dom         STRING(4)
Kvr         STRING(4)
Kat         STRING(5)
Ust         STRING(8)
GP          STRING(4)
PR          STRING(4)
        END

FileName    STRING(64),STATIC   !Переменная имени файла
StrFlt      STRING(64),STATIC
S1          STRING(5),STATIC
S2          STRING(5),STATIC
aster       byte(0)
i           byte(0)

F       FILE,DRIVER('TOPSPEED'),NAME(FileName),PRE(FDB),BINDABLE
!K       KEY(FDB:Tel)
R       RECORD
Tel         STRING(5)
Fam         STRING(27)
Adr         STRING(27)
UPP         STRING(4)
Dom         STRING(4)
Kvr         STRING(4)
Kat         STRING(5)
Ust         STRING(8)
GP          STRING(4)
PR          STRING(4)
        . .

V       VIEW(F)
            PROJECT(FDB:TEL,FDB:FAM,FDB:ADR,FDB:UPP,FDB:DOM,FDB:KVR,FDB:KAT,FDB:UST,FDB:GP,FDB:PR)
        END

NewRecWin   WINDOW('Новая запись'),AT(150,70,280,150),GRAY,MAX
            GROUP('Ввод данных абонента'),AT(4,4,210,142),USE(?Gr3),BOXED
                STRING('Номер телефона'),AT(08,15); ENTRY(@S5),  AT(80,15,25,10),  USE(?NewTel)
                STRING('Aбонент'),       AT(08,30); ENTRY(@S28), AT(80,30,128,10), USE(?NewFam)
                STRING('Адрес'),         AT(08,45); ENTRY(@S28), AT(80,45,128,10), USE(?NewAdr)
                STRING('Ул/Пер'),        AT(08,60); ENTRY(@S4),  AT(80,60,16,10),  USE(?NewUpp)
                STRING('Дом'),           AT(08,75); ENTRY(@S4),  AT(80,75,16,10),  USE(?NewDom)
                STRING('Квартира'),      AT(08,90); ENTRY(@S4),  AT(80,90,16,10),  USE(?NewKvr)
                STRING('Категория'),     AT(08,105);ENTRY(@S4),  AT(80,105,16,10), USE(?NewKat)
                STRING('Дата установки'),AT(08,120);ENTRY(@S8),  AT(80,120,50,10), USE(?NewUst)
                STRING('Громполоса'),    AT(08,35); ENTRY(@S4),  AT(80,135,16,10), USE(?NewGP)
                STRING('Пара'),          AT(08,50); ENTRY(@S4),  AT(80,150,16,10), USE(?NewPR)
            END
            BUTTON('Добавить'), AT(219,08,53,27), USE(?OKnewrec), icon('OK.ICO')
            BUTTON('Отменить'), AT(219,45,53,27), USE(?NOnewrec), icon('EXIT.ICO')
            END
WinEditRec  WINDOW('Редактирование записи'),AT(150,70,280,199),GRAY,MAX
            GROUP('Изменение данных по абоненту'),AT(4,4,210,189),USE(?Gr2),BOXED
                STRING('Номер телефона'),AT(8,15); ENTRY(@S5),  AT(80,15,25,10),   USE(?UpdTel)
                STRING('Aбонент'),       AT(8,30); ENTRY(@S28), AT(80,30,128,10),  USE(?UpdFam)
                STRING('Адрес'),         AT(8,45); ENTRY(@S28), AT(80,45,128,10),  USE(?UpdAdr)
                STRING('Ул/Пер'),        AT(8,60); ENTRY(@S4),  AT(80,60,16,10),   USE(?UpdUpp)
                STRING('Дом'),           AT(8,75); ENTRY(@S4),  AT(80,75,16,10),   USE(?UpdDom)
                STRING('Квартира'),      AT(8,90); ENTRY(@S4),  AT(80,90,16,10),   USE(?UpdKvr)
                STRING('Категори<255>'), AT(8,105);ENTRY(@S4),  AT(80,105,16,10),  USE(?UpdKat)
                STRING('Дата установки'),AT(8,120);ENTRY(@S8),  AT(80,120,50,10),  USE(?UpdUst)
                STRING('Громполоса'),    AT(8,135);ENTRY(@S4),  AT(80,135,16,10),  USE(?UpdGP)
                STRING('Пара'),          AT(8,150);ENTRY(@S4),  AT(80,150,16,10),  USE(?UpdPR)
            END
            BUTTON('Применить'), AT(219,8,53,27),  USE(?UpdRec),  ICON('OK.ICO')
            BUTTON('Выход'),     AT(219,45,53,27), USE(?ExitRec), ICON('EXIT.ICO')
            END

Win1 WINDOW('ТЕЛЕФОННЫЙ СПРАВОЧНИК Технологической св<255>зи '),AT(0,1,556,272),SYSTEM,GRAY
       GROUP(' Фильтр '),AT(4,4,215,55),USE(?Group1),BOXED
         STRING('По номеру телефона:'),AT(8,16,65,10),USE(?pont),DISABLE
         ENTRY(@s5),AT(84,12,25,10),USE(?Tel),DISABLE
         STRING('По имени:'),AT(8,32,30,10),USE(?poim),DISABLE
         ENTRY(@S31),AT(56,28,100,10),USE(?Im),DISABLE
         STRING('По адресу:'),AT(8,44,34,10),USE(?poad),DISABLE
         ENTRY(@S31),AT(56,44,100,10),USE(?Adr),DISABLE
         BUTTON('Применить'),AT(164,12,50,40),USE(?BF),DISABLE,ICON('TLF7.ICO')
       END
       LIST,AT(4,80,548,180),USE(?List),HVSCROLL,ALRT(EnterKey),ALRT(MouseLeft2),ALRT(MouseLeft), |
           FORMAT(  '32L@s05@~Телефон~' &|
                    '99L@s27@~| Абонент~' &|
                    '99L@s27@~| Адрес~' &|
                    '27L@s04@~| ул/пер~' &|
                    '19L@s04@~| Дом~' &|
                    '22L@s04@~| Квар~' &|
                    '40L@s05@~| Категори<255>~' &|
                    '60L@s08@~| Дата установки~' &|
                    '47L@s04@~| Громполоса~' &|
                    '05L@s04@~| Пара~'),FROM(Q)

       BUTTON('Выход'),AT(504,8,46,48),USE(?Cancel),ICON('EXIT.ICO')
       BUTTON('Открыть базу'),AT(228,12,60,20),USE(?OpBase) !,ICON('OPEN.ICO') !ENTRY(@S15),AT(280,10,80,15),USE(STR1)
       BUTTON('Нова<255> запись'),AT(292,12,60,20),USE(?NewRec),DISABLE
       BUTTON('Редактировать'),AT(228,36,60,20),USE(?EditRec),DISABLE !,ICON('EXIT.ICO')
       BUTTON('Удалить запись'),AT(292,36,60,20),USE(?DelRec),DISABLE
       PROGRESS,USE(?Pr),DISABLE,AT(4,64,548,14),RANGE(0,300)
     END

            CODE

            OPEN(Win1)
            ACCEPT
            CASE FIELD()
                OF ?List
                    CASE EVENT()
                        OF EVENT:PreAlertKey
                           CYCLE

                        OF EVENT:AlertKey
                           CASE KEYCODE()
                                !IF KEYCODE()=MouseRight
                                !   EXECUTE POPUP('ONE|TWO')
                                !   END
                                !END
                                OF EnterKey OROF MouseLeft2
                                    GET(Q,CHOICE())

                                OF MouseLeft
                                    IF ?List{PROPLIST:MouseDownRow} = 0
                                        !Message(Columns[?List{PROP:COLUMN}])
                                        EXECUTE Columns[?List{PROPLIST:MouseDownField}]
                                        !EXECUTE Columns[?List{PROP:COLUMN}]
                                            SORT(Q,Q.Tel)
                                            SORT(Q,Q.Fam)
                                            SORT(Q,Q.ADR)
                                            SORT(Q,Q.UPP)
                                            SORT(Q,Q.DOM)
                                            SORT(Q,Q.KVR)
                                            SORT(Q,Q.KAT)
                                            SORT(Q,Q.UST)
                                            SORT(Q,Q.GP)
                                            SORT(Q,Q.PR)
                                        END
                                        ?List{PROP:Edit,?List{PROP:Column}} = 0     ! скрыть поле редактирования
                                        SELECT(?)       ! остаться в текущем контроле
                                    END
                            END ! case keycode()
                            
                        !----------------
                        OF event:accepted
                    END ! case event

                OF ?OpBase
                   IF FileName <> ''       ! ЕСЛИ ОТКРЫВАЕМ 2-Ю БАЗУ
                       close(F); close(V)
                   end
                   IF FILEDIALOG('Выбирите базу для работы',FileName, 'Bases|*.TPS', FILE:LongName)
                       ! подготовить дисковый файл
                       OPEN(F);
                       IF NOT RECORDS(F)
                          MESSAGE('База пуста.','Информация',ICON:Clarion,,,0)
                       .
                       
                       SET(F)
                       ! подготовить виртуальный файл
                       OPEN(V); set(V); free(Q)
                       ! подготовить очередь
                       DO LoadQueue
                       DISPLAY
                       ENABLE(?BF); ENABLE(?EditRec); ENABLE(?NewRec); ENABLE(?DelRec)
                       ENABLE(?pont); ENABLE(?Tel); ENABLE(?poim); ENABLE(?Im);
                       ENABLE(?poad); ENABLE(?Adr);

                       ! читаем первую запись
                       SET(V)
                       NEXT(V)
                       !Q=F.R
                       SELECT(?List,1)      ! ставим курсор на первую запись
                   END ! filedialog
                !=====================================================================
                OF  ?EditRec     ! редактировать запись
                    GET(Q,CHOICE(?List))
                    
                    OPEN(WinEditRec)
                    ?UpdTel{PROP:USE}=Q.Tel; ?UpdFam{PROP:USE}=Q.Fam; ?UpdAdr{PROP:USE}=Q.Adr; ?UpdUpp{PROP:USE}; ?UpdDom{PROP:USE}=Q.Dom;
                    ?UpdKvr{PROP:USE}=Q.Kvr; ?UpdKat{PROP:USE}=Q.Kat; ?UpdUst{PROP:USE}=Q.Ust; ?UpdGP{PROP:USE}=Q.GP; ?UpdPR{PROP:USE}=Q.PR
                   
                    ACCEPT
                        CASE ACCEPTED()
                             OF ?UpdRec     ! кнопка сохранить
                                Q.Tel=?UpdTel{PROP:USE}; Q.Fam=?UpdFam{PROP:USE}; Q.Adr=?UpdAdr{PROP:USE}; Q.Upp=?UpdUpp{PROP:USE}; Q.Dom=?UpdDom{PROP:USE};
                                Q.Kvr=?UpdKvr{PROP:USE}; Q.Kat=?UpdKat{PROP:USE}; Q.Ust=?UpdUst{PROP:USE}; Q.GP=?UpdGP{PROP:USE}; Q.PR=?UpdPR{PROP:USE}
                                PUT(Q)      ! обновить запись в очереде
                                F.R=Q       ! подготовить файловую запись
                                !message('3:' & pointer(V))
                                PUT(F)      !   записать ее
                                DISPLAY
                                break

                             OF ?ExitRec    ! кнопка выхода без сохранения
                                BREAK
                        .
                    .
                    if accepted()=?UpdRec
                       !!message('--------')
                    end

                    CLOSE(WinEditRec)
                    DISPLAY

                OF  ?Cancel      ! завершить программу
                    close(F)
                    close(V)
                    CLOSE(Win1)
                    RETURN

                ! обработка поля фильтра
                OF  ?BF
                    aster=0
                    StrFlt=?tel{prop:use}
                    S1 = StrFlt
                    S2 = StrFlt

                    loop i=1 to 5
                        if StrFlt[i]='*'
                           S1[i]=0
                           S2[i]=9
                           aster = 1
                    .    .
                    if aster=1
                        V{PROP:FILTER} = 'FDB:TEL>' & S1 & ' and FDB:TEL<' & S2
                    else
                        V{PROP:FILTER} = 'FDB:TEL=' & StrFlt
                    end
                    SET(V)
                    FREE(Q)
                    DO LoadQueue
                    display(?)

                ! ввести новую запись
                OF  ?NewRec
                    OPEN(NewRecWin)
                    ACCEPT
                        CASE ACCEPTED()
                             OF ?OKnewrec
                                Q.Tel=?NewTel{PROP:USE}; Q.Fam=?NewFam{PROP:USE}; Q.Adr=?NewAdr{PROP:USE}; Q.Upp=?NewUpp{PROP:USE}; Q.Dom=?NewDom{PROP:USE};
                                Q.Kvr=?NewKvr{PROP:USE}; Q.Kat=?NewKat{PROP:USE}; Q.Ust=?NewUst{PROP:USE}; Q.GP=?NewGP{PROP:USE}; Q.PR=?NewPR{PROP:USE}
                                ADD(Q)
                                F.R=Q       ! подготовить файловую запись
                                ADD(F)      !   записать ее
                                BREAK

                             OF ?NOnewrec
                                BREAK

                        END
                    END
                    CLOSE(NewRecWin)
                    SELECT(?List,POINTER(Q))

                ! удалить запись
                OF ?DelRec
                    !MESSAGE(POINTER(Q))
                    DELETE(Q)
                    SET(F,POINTER(Q))
                    DELETE(F)
                    DISPLAY(?)


            END ! case field()
        END


LoadQueue       ROUTINE
                LOOP
                    NEXT(V)
                    IF ERRORCODE()
                    break
                    .
                    Q.TEL = CLIP(FDB:TEL)
                    Q.FAM = CLIP(FDB:FAM)
                    Q.ADR = CLIP(FDB:ADR)
                    Q.UPP = CLIP(FDB:UPP)
                    Q.DOM = CLIP(FDB:DOM)
                    Q.KVR = CLIP(FDB:KVR)
                    Q.KAT = CLIP(FDB:KAT)
                    Q.UST = CLIP(FDB:UST)
                    Q.GP = CLIP(FDB:GP)
                    Q.PR = CLIP(FDB:PR)
                    ADD(Q)
                .
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3288
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Дед Пахом »

Евгений.
Я такие посты буду удалять. Прикрепляйте файл с программой к сообщению или в конце концов ставьте тег <code>, чтобы это хотя бы читалось.
С уважением, ДП
Аватара пользователя
Admin
Администратор
Сообщения: 4010
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 53 раза
Поблагодарили: 33 раза
Контактная информация:

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Admin »

Дед Пахом писал(а):Евгений.
Я такие посты буду удалять. Прикрепляйте файл с программой к сообщению или в конце концов ставьте тег <code>, чтобы это хотя бы читалось.
Тоже негодую. Но я зашел и поправил сам. А у тебя что прав нет?
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
EugeneR
Посетитель
Сообщения: 30
Зарегистрирован: 02 Август 2011, 12:40
Откуда: г. Ленинск-Кузнецкий

Re: LIST как BROWSE (Clarion 5.5)

Сообщение EugeneR »

Извините, исправлюсь. Если не трудно, подскажите что с моей проблемой?
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3288
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: LIST как BROWSE (Clarion 5.5)

Сообщение Дед Пахом »

Admin писал(а):
Дед Пахом писал(а):Евгений.
Я такие посты буду удалять. Прикрепляйте файл с программой к сообщению или в конце концов ставьте тег <code>, чтобы это хотя бы читалось.
Тоже негодую. Но я зашел и поправил сам. А у тебя что прав нет?
Есть, наверно. Но и у авторов постов есть права на редактирование.
С уважением, ДП
Ответить