Автор | Сообщение |
Vlad04
|
| постоянный участник
|
Пост N: 420
Зарегистрирован: 13.10.05
|
|
Отправлено: 19.12.13 18:16. Заголовок: TsBrowse в Минигуи (продолжение)
TsBrows определяется в виде строки ПАРМЕТРОВ объекта и их значений К примеру цитата: | DEFINE TBROWSE oBrw2 ; AT 60,450 ; ALIAS cAlias ; OF Form1 ; WIDTH 330 ; HEIGHT 340 ; FONT "Verdana" ; SIZE 9 ; ON DBLCLICK CopyRec(); ON GOTFOCUS fModelo_Hab(2) ; AUTOFILTER ; CELLED EDIT; VALUE nRec; GRID |
| Здесь я собрал параметры из разных tBrows Можно или нет и какие парметры заменить выражением ( и каким) ? oBrw2:.... oBrw2:....
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|
Andrey
|
| постоянный участник
|
Пост N: 4739
Зарегистрирован: 12.09.06
|
|
Отправлено: 20.02.16 17:18. Заголовок: Победил сваливание т..
Победил сваливание так: IF nStaticViewRecno # 0 // при первом показе - не выводить cCaption1 := "File open 1: " + (oBrw1:cAlias)->FILE1 cCaption2 := "File open 2: " + (oBrw1:cAlias)->FILE2 _SetMenuItemCaption ( "MYNAMEOPENFILE1" , cForm , cCaption1 ) _SetMenuItemCaption ( "MYNAMEOPENFILE2" , cForm , cCaption2 ) oBrw1:aColumns[1]:cFooting := { || ALLTRIM(Transform( nLen, "9 999" )) } cText := IIF( M->nPubLang == 1, " Записи: ", " Recno: ") oBrw1:aColumns[4]:cFooting := { || cText + cVal + "/" + cLen } oBrw1:DrawFooters() // выполнить прорисовку подвала TblFocus() ENDIF Но всё равно в контекстном меню нет имени файла ? В лог-файл выводится имена файлов, а в менюшку нет.
|
|
|
Haz
|
| |
Пост N: 806
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.02.16 11:08. Заголовок: Andrey пишет: Но вс..
Andrey пишет: цитата: | Но всё равно в контекстном меню нет имени файла ? В лог-файл выводится имена файлов, а в менюшку нет. |
| Дарю ( вместо _SetMenuItemCaption ), вешай на ::bChange. Проверил на своем примере , все работает как надо Func MenuCaptionSet( ItemName , FormName, Caption ) LOCAL a := _GetMenuIds ( ItemName , FormName ) LOCAL x := GetControlIndex ( ItemName , FormName ) LOCAL Id := _HMG_aControlIds [ x ] ModifyMenuItem ( a [1] , a [2] , Id , Caption ) return nil PS. подсмотрено в исходниках minigui - h_menu.prg - FUNCTION _ModifyMenuItem ( ItemName , FormName , Caption , action , name , Image )
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4740
Зарегистрирован: 12.09.06
|
|
Отправлено: 21.02.16 15:12. Заголовок: Haz пишет: Дарю ( в..
Haz пишет: цитата: | Дарю ( вместо _SetMenuItemCaption ), вешай на ::bChange. |
| Благодарю ! Сделаю пример - выложу. Только функцию _GetMenuIds() придётся тоже тащить из исходников к себе в проект. Там она STATIC FUNCTION _GetMenuIds().
|
|
|
Haz
|
| |
Пост N: 807
Зарегистрирован: 20.02.11
|
|
Отправлено: 21.02.16 17:12. Заголовок: Andrey пишет: Тольк..
Andrey пишет: цитата: | Только функцию _GetMenuIds() придётся тоже тащить из исходников к себе в проект. Там она STATIC FUNCTION _GetMenuIds(). |
| да придется
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4749
Зарегистрирован: 12.09.06
|
|
Отправлено: 26.02.16 20:05. Заголовок: Кодировка базы 866. ..
Кодировка базы 866. Выводил таблицу всю сразу на экран, было отлично. Юзера захотели чтобы последний поиск (фильтр по базе) сохранялся и потом сразу показывался вместо всей базы. Сделал. Использую условную индексацию, т.е. показ базы по индексу. Теперь при показе таблицы на несколько секунд все записи в кракозябах (другая кодировка), потом строится индекс и всё записи показываются нормально ! Вопрос - как убрать показ этих кракозяб на экран ? Пробовал делать: SetProperty(oBrw:cParentWnd, oBrw:cControlName, "Enabled", .F.) TsbNewIndex(cForm,nTable,aFilter[2], aFilter[1], aFilter[3] ) SetProperty(oBrw:cParentWnd, oBrw:cControlName, "Enabled", .T.) Если ставишь отладку через MsgDebug() - кракозяб не видно !
|
|
|
Haz
|
| |
Пост N: 810
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 11:05. Заголовок: Andrey пишет: Вопро..
Andrey пишет: цитата: | Вопрос - как убрать показ этих кракозяб на экран ? |
| Зачем в windows задаче кодировка 866 ? перекодируй в 1251 и проблема сама исчезнет. А по сути вопроса - лучше выложи самодостаточный, а то не получается угадать какой код и где что не так
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4750
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.16 14:39. Заголовок: Haz пишет: Зачем в ..
Haz пишет: цитата: | Зачем в windows задаче кодировка 866 ? перекодируй в 1251 и проблема сама исчезнет. |
| Не могу. Терминалку перевожу постепенно, сразу все таблицы не перевести. Некоторые не хотят нового интерфейса, оставь им старый, привычный. Так что год-два придётся использовать базы с 866 кодировкой. Проблему решил таким кодом: InkeyGui(10) и всё .... Я сам в шоке от такой простоты.
|
|
|
Haz
|
| |
Пост N: 811
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 14:56. Заголовок: Andrey пишет: Пробл..
Andrey пишет: цитата: | Проблему решил таким кодом: InkeyGui(10) и всё .... |
| Заплатку поставил. Ведь причина глюка осталась неясной, значит выскочит в другом месте. Andrey пишет: цитата: | Не могу. Терминалку перевожу постепенно, сразу все таблицы не перевести. Некоторые не хотят нового интерфейса, оставь им старый, привычный. Так что год-два придётся использовать базы с 866 кодировкой. |
| Если консольную программу уже не развивать то нет и смысла сползать с 866 Я уже много много лет не использую 866 , а только 1251 и никаких проблем ни в консоли ни в гуи. Правда с консолью почти не работаю , только мелкие сервисные утилиты, да и базы у меня все нативные от RDDADS. в ADS кодировка ANSI используется по умолчанию , а OEM требует вызова перекодирования, это по исходникам видно.
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4751
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.16 16:46. Заголовок: 1) Как в Tsbrowse за..
1) Как в Tsbrowse заменить картинки для oCol:lCheckBox := .T. // virtual checkbox ? 2) Как организовать в Tsbrowse свои дополнительные поля со своими картинками ? т.е. в одной таблице нужен стандартный CheckBox и еще 2 дополнительных CheckBox со своими картинками. Примерно так же как в The Bat! И менюшку обработки по мышке:
|
|
|
Haz
|
| |
Пост N: 812
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 17:35. Заголовок: Andrey пишет: 1) Ка..
Andrey пишет: цитата: | 1) Как в Tsbrowse заменить картинки для oCol:lCheckBox := .T. // virtual checkbox ? 2) Как организовать в Tsbrowse свои дополнительные поля со своими картинками ? т.е. в одной таблице нужен стандартный CheckBox и еще 2 дополнительных CheckBox со своими картинками. Примерно так же как в The Bat! |
| элементарно только не чеквокс это Организовать в базе 3 логических поля и по значению в них показывать или не показывать картинку см в примерах tsb_cursor я там календарь в текущей строке рисовал, замени lDrawSelect на значение из поля значение в поле должно инвертиться в bPrevEdit , который должен вернуть ложь чтоб не пустить в редактирование PS. если картинок в поле должно быть много то логическое поле не подойдет, сделай числовое и показывай нужную картинку в зависимости от числа в поле PSS в чекбоксе картинки определены из массива функции StockBmp() менять их там еще тот гемор ... но если есть желание - то желающие могут попробовать.
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 867
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.02.16 18:05. Заголовок: Haz пишет: в чекбокс..
Haz пишет: цитата: | в чекбоксе картинки определены из массива функции StockBmp() менять их там еще тот гемор |
| это не совсем так METHOD DrawLine( xRow ) CLASS TSBrowse ... If lCheck Default ::aCheck := { StockBmp( 6 ), StockBmp( 7 )} hBitMap := ::aCheck[ If( Upper( uData ) == "T", 1, 2 ) ] делаем просто oBrw:aCheck := {LoadImage(<для .T.>), LoadImage(<для .F.>)} и все работает с новыми "галочками" (это может быть и файл и ресурс)
|
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 868
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.02.16 18:13. Заголовок: Andrey пишет:InkeyGu..
Andrey пишет: цитата: | InkeyGui(10) и всё .... Я сам в шоке от такой простоты. |
| ты просто дал возможность обработать очередь, приостановив код на 10 мс., DO EVENTS тоже помогло бы, надо в гуи иногда давать возможность обрабатывать очередь сообщений
|
|
|
Haz
|
| |
Пост N: 813
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 18:18. Заголовок: Andrey пишет: И мен..
Andrey пишет: цитата: | И менюшку обработки по мышке: |
| мат в форуме запрещен ? тогда иди пожалуйста почитай хелп по контекстному меню
|
|
|
Haz
|
| |
Пост N: 814
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 18:23. Заголовок: SergKis пишет: дела..
SergKis пишет: цитата: | делаем просто oBrw:aCheck := {LoadImage(<для .T.>), LoadImage(<для .F.>)} и все работает с новыми "галочками" (это может быть и файл и ресурс) |
| Сергей , это да... но позволяет задать общий aCheck на все колонки, а Андрею нужны свои на каждую если бы было так aColumns[]:aCheck := ... надо подумать над этой идеей
|
|
|
Andrey
|
| постоянный участник
|
Пост N: 4752
Зарегистрирован: 12.09.06
|
|
Отправлено: 27.02.16 18:46. Заголовок: Haz пишет: мат в фо..
Haz пишет: цитата: | мат в форуме запрещен ? тогда иди пожалуйста почитай хелп по контекстному меню |
| Да понял я.... Не надо матерится. Пример ты давал, я реализовал эту идею. Просто хотелось бы попроще эти галочки в контекстном меню реализовать. Может что то изменить в самом Tsbrowse ? Уж больно код выглядит не очень понятно для новичков ! Тестовый пример делаю. Как сделаю - выложу.
|
|
|
Dima
|
| |
Пост N: 5490
Зарегистрирован: 17.05.05
|
|
Отправлено: 27.02.16 18:57. Заголовок: Haz пишет: мат в фо..
Haz пишет: Нет
|
|
|
Haz
|
| |
Пост N: 815
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 19:04. Заголовок: Andrey пишет: Прост..
Andrey пишет: цитата: | Просто хотелось бы попроще эти галочки в контекстном меню реализовать. Может что то изменить в самом Tsbrowse ? |
| я и не матерюсь контекстное меню реализовано проще некуда. А с картинками в колонках - только так , я пока не вижу как проще сделать кроме как Сергей навел на мысль про aColumns[]:aCheck И потом TS не для новмчков , также как browse класс в clipper / harbour т.к. не только новички а и некоторые старички в этот класс не лезут. То что имеет внутри множество инструментов для реализации почти любой хотелки - простым быть не может.
|
|
|
Haz
|
| |
Пост N: 816
Зарегистрирован: 20.02.11
|
|
Отправлено: 27.02.16 19:05. Заголовок: Dima пишет: Нет ..
Dima пишет: а чего ты молчал? теперь многие посты на форуме будут короткими и четкими как выстрел )
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 869
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.02.16 21:50. Заголовок: Haz пишет:если бы бы..
Haz пишет: цитата: | если бы было так aColumns[]:aCheck := ... надо подумать над этой идеей |
| так вроде не сложно: 1. добавляем в TsColumn DATA aCheck 2. чуть правим METHOD DrawLine( xRow ) CLASS TSBrowse ... If lCheck Default ::aCheck := { StockBmp( 6 ), StockBmp( 7 )} If Valtype(oColumn:aCheck) =="A" .and. Len(oColumn:aCheck) > 1 hBitMap := oColumn:aCheck[ If( Upper( uData ) == "T", 1, 2 ) ] Else hBitMap := ::aCheck[ If( Upper( uData ) == "T", 1, 2 ) ] EndIf и все
|
|
|
SergKis
|
| постоянный участник
|
Пост N: 870
Зарегистрирован: 17.02.12
|
|
Отправлено: 27.02.16 22:05. Заголовок: SergKis пишет:и все ..
SergKis пишет: надо добавить METHOD Destroy() CLASS TSBrowse ... If ::aCheck != Nil //V90 DeleteObject ( ::aCheck[ 1 ] ) DeleteObject ( ::aCheck[ 2 ] ) EndIf AEval(::aColumns, {|oCol| If( Valtype(oCol:aCheck) == "A", AEval(oCol:aCheck, {|hBmp| DeleteObject (hBmp) }), ) })
|
|
|
Ответов - 300
, стр:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
All
[только новые]
|
|