On-line: Мирослав, гостей 0. Всего: 1 [подробнее..]
АвторСообщение
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:....



Спасибо: 0 
Профиль
Ответов - 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

Но всё равно в контекстном меню нет имени файла ?
В лог-файл выводится имена файлов, а в менюшку нет.

Спасибо: 0 
Профиль
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 )


Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4740
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 21.02.16 15:12. Заголовок: Haz пишет: Дарю ( в..


Haz пишет:

 цитата:
Дарю ( вместо _SetMenuItemCaption ), вешай на ::bChange.


Благодарю !

Сделаю пример - выложу.

Только функцию _GetMenuIds() придётся тоже тащить из исходников к себе в проект.
Там она STATIC FUNCTION _GetMenuIds().

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 807
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 21.02.16 17:12. Заголовок: Andrey пишет: Тольк..


Andrey пишет:

 цитата:
Только функцию _GetMenuIds() придётся тоже тащить из исходников к себе в проект.
Там она STATIC FUNCTION _GetMenuIds().



да придется

Спасибо: 0 
Профиль
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() - кракозяб не видно !


Спасибо: 0 
Профиль
Haz
администратор




Пост N: 810
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.02.16 11:05. Заголовок: Andrey пишет: Вопро..


Andrey пишет:

 цитата:
Вопрос - как убрать показ этих кракозяб на экран ?


Зачем в windows задаче кодировка 866 ? перекодируй в 1251 и проблема сама исчезнет.
А по сути вопроса - лучше выложи самодостаточный, а то не получается угадать какой код и где что не так

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4750
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.02.16 14:39. Заголовок: Haz пишет: Зачем в ..


Haz пишет:

 цитата:
Зачем в windows задаче кодировка 866 ? перекодируй в 1251 и проблема сама исчезнет.


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

Проблему решил таким кодом:
InkeyGui(10)
и всё ....
Я сам в шоке от такой простоты.

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 811
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.02.16 14:56. Заголовок: Andrey пишет: Пробл..


Andrey пишет:

 цитата:
Проблему решил таким кодом:
InkeyGui(10)
и всё ....


Заплатку поставил. Ведь причина глюка осталась неясной, значит выскочит в другом месте.
Andrey пишет:

 цитата:
Не могу. Терминалку перевожу постепенно, сразу все таблицы не перевести.
Некоторые не хотят нового интерфейса, оставь им старый, привычный.
Так что год-два придётся использовать базы с 866 кодировкой.


Если консольную программу уже не развивать то нет и смысла сползать с 866
Я уже много много лет не использую 866 , а только 1251 и никаких проблем ни в консоли ни в гуи.
Правда с консолью почти не работаю , только мелкие сервисные утилиты, да и базы у меня все нативные от RDDADS.
в ADS кодировка ANSI используется по умолчанию , а OEM требует вызова перекодирования, это по исходникам видно.

Спасибо: 0 
Профиль
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!



И менюшку обработки по мышке:


Спасибо: 0 
Профиль
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() менять их там еще тот гемор ... но если есть желание - то желающие могут попробовать.


Спасибо: 0 
Профиль
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.>)} и все работает с новыми "галочками" (это может быть и файл и ресурс)

Спасибо: 0 
Профиль
SergKis
постоянный участник




Пост N: 868
Зарегистрирован: 17.02.12
ссылка на сообщение  Отправлено: 27.02.16 18:13. Заголовок: Andrey пишет:InkeyGu..


Andrey пишет:
 цитата:
InkeyGui(10)
и всё ....
Я сам в шоке от такой простоты.


ты просто дал возможность обработать очередь, приостановив код на 10 мс., DO EVENTS тоже помогло бы, надо в гуи иногда давать возможность обрабатывать очередь сообщений

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 813
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.02.16 18:18. Заголовок: Andrey пишет: И мен..


Andrey пишет:

 цитата:
И менюшку обработки по мышке:



мат в форуме запрещен ?
тогда иди пожалуйста почитай хелп по контекстному меню

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 814
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.02.16 18:23. Заголовок: SergKis пишет: дела..


SergKis пишет:

 цитата:
делаем просто oBrw:aCheck := {LoadImage(<для .T.>), LoadImage(<для .F.>)} и все работает с новыми "галочками" (это может быть и файл и ресурс)


Сергей , это да... но позволяет задать общий aCheck на все колонки, а Андрею нужны свои на каждую
если бы было так aColumns[]:aCheck := ...
надо подумать над этой идеей

Спасибо: 0 
Профиль
Andrey
постоянный участник




Пост N: 4752
Зарегистрирован: 12.09.06
ссылка на сообщение  Отправлено: 27.02.16 18:46. Заголовок: Haz пишет: мат в фо..


Haz пишет:

 цитата:
мат в форуме запрещен ?
тогда иди пожалуйста почитай хелп по контекстному меню


Да понял я.... Не надо матерится.
Пример ты давал, я реализовал эту идею.
Просто хотелось бы попроще эти галочки в контекстном меню реализовать. Может что то изменить в самом Tsbrowse ?
Уж больно код выглядит не очень понятно для новичков !
Тестовый пример делаю. Как сделаю - выложу.

Спасибо: 0 
Профиль
Dima
администратор




Пост N: 5490
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 27.02.16 18:57. Заголовок: Haz пишет: мат в фо..


Haz пишет:

 цитата:
мат в форуме запрещен ?


Нет

Спасибо: 0 
Профиль
Haz
администратор




Пост N: 815
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.02.16 19:04. Заголовок: Andrey пишет: Прост..


Andrey пишет:

 цитата:
Просто хотелось бы попроще эти галочки в контекстном меню реализовать. Может что то изменить в самом Tsbrowse ?


я и не матерюсь
контекстное меню реализовано проще некуда. А с картинками в колонках - только так , я пока не вижу как проще сделать кроме как Сергей навел на мысль про aColumns[]:aCheck
И потом TS не для новмчков , также как browse класс в clipper / harbour т.к. не только новички а и некоторые старички в этот класс не лезут.
То что имеет внутри множество инструментов для реализации почти любой хотелки - простым быть не может.



Спасибо: 0 
Профиль
Haz
администратор




Пост N: 816
Зарегистрирован: 20.02.11
ссылка на сообщение  Отправлено: 27.02.16 19:05. Заголовок: Dima пишет: Нет ..


Dima пишет:

 цитата:
Нет


а чего ты молчал?
теперь многие посты на форуме будут короткими и четкими как выстрел )

Спасибо: 0 
Профиль
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


и все

Спасибо: 0 
Профиль
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) }), ) })



Спасибо: 0 
Профиль
Ответов - 300 , стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All [только новые]
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 500
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет