Форум » GUI » Снова STATUSBAR » Ответить

Снова STATUSBAR

Dima: В главном окне программы заявлен Statusbar [pre2] DEFINE STATUSBAR OF Form_0 FONT 'Verdana' SIZE 8 BOLD STATUSITEM "1" WIDTH 100 STATUSITEM "2" WIDTH 400 STATUSITEM "3" WIDTH 100 STATUSITEM "Проверка" WIDTH WidthWindow_MyApl/4 BACKCOLOR {212,212,212} FONTCOLOR BLACK CENTERALIGN END STATUSBAR [/pre2] По какому то событию хочу писать в первый ITEM статусбара Делаю так [pre2] Form_0.StatusBar.Item(1):="Подключаюсь к серверу" _SetStatusItemProperty( 1, { 255,255,0}, GetFormHandle("Form_0"), STATUS_ITEM_BACKCOLOR ) Form_0.StatusBar.Item(1):="Считываю данные" // вот это уже не отображается но если закоментить смену фона то работает. [/pre2] При чем когда ITEM всего один то все работает как надо , если больше одного то Что не так делаю ?

Ответов - 19

Dima: Dima пишет: STATUSITEM "1" WIDTH 100 STATUSITEM "2" WIDTH 400 STATUSITEM "3" WIDTH 100 Проехали , надо почему то так (ХЗ зачем) [pre2] STATUSITEM "1" WIDTH 100 FONTCOLOR BLACK STATUSITEM "2" WIDTH 400 FONTCOLOR BLACK STATUSITEM "3" WIDTH 100 FONTCOLOR BLACK [/pre2]

Dima: До кучи При том же Statusbar изменение ширины вот так не работает _SetStatusItemProperty( 1, WidthWindow_MyApl-2 , GetFormHandle("Form_0"), STATUS_ITEM_WIDTH ) вот так работает Form_0.StatusBar.Width(1):=WidthWindow_MyApl-2 И для чего тогда _SetStatusItemProperty с параметром STATUS_ITEM_WIDTH если она не пашет ?

Dima: Пара вопросов. 1. Можно ли сменить цвет бегунка в ProgressItem ? 2. Не собирается прога если в отдельном PRG живет функция которая обновляет StatusBar Form_0.StatusBar.Item(3):= ntoc(nPercent)+" %" // валит ошибка при сборке Хотя на эту строку не ругается Set StatusBar ProgressItem Of Form_0 Position To 0 , которая тоже использует Form_0 Если эту функцию поместить в тот же PRG где объявляется окно Form_0 то собирается. Как лечить ?


Dima: Dima пишет: Form_0.StatusBar.Item(3):= ntoc(nPercent)+" %" // валит ошибка при сборке С этим вопрос решил через SetProperty("Form_0","StatusBar","Item",3,ntoc(nPercent)+" %") а вот этот вопрос в силе Dima пишет: 1. Можно ли сменить цвет бегунка в ProgressItem ?

gfilatov2002: Dima пишет: вот этот вопрос в силе Нет, т.к. цвет бегунка прязан к используемой в Винде теме. Если изменишь тему Винды, то тогда изменится и цвет бегунка

Dima: gfilatov2002 Понял , спасибо. Еще не большой вопрос. Индексирую базу , и все бегунки живут в статус баре главного окна. Как заморозить действия пользователя в этом окне , пока не закончится индексация ? Запретить юзать меню и другие контролы окна. Видел пример и найти не могу теперь :) Пробовал WaitWindow но оно замораживает и вывод в окно средствами программы.

Dima: Вопрос решил модальным окном и NOWAIT

SergKis: Dima пишет:Запретить юзать меню и другие контролы окна. Считываешь со всех контролов (и меню) окна (по handle) состояние Enabled в массив У тех, что .T., ставишь .F., запоминаешь (помечаешь) их После завершения операции, для тех что менял возвращаешь состояние Enabled .T.

Dima: SergKis пишет: Считываешь со всех контролов (и меню) окна (по handle) состояние Enabled в массив У тех, что .T., ставишь .F., запоминаешь (помечаешь) их После завершения операции, для тех что менял возвращаешь состояние Enabled .T. Идея понятна , только я новенький и как замутить эту процедуру без понятия а курить мильон примеров нет времени. По ходу косяк нашел. Есть главное окно программы , в нем живут Statusbar и главное меню. Из этого меню вызываю функцию которая создает новое CHILD окно. Если окно существует то делаю [pre2] IF IswindowDefined("TMP") DoMethod("TMP", "Restore") DoMethod("TMP", "Setfocus") return nil endif [/pre2] Все работает нормально , пока это CHILD окно не свернули. После описанного выше поднятия окна , портится StatusBar в том месте где это окно полежало в свернутом виде , (портится фон , затираются надписи)

SergKis: Dima пишет: как замутить эту процедуру без понятия а курить мильон примеров нет времени. Думаю за "рыбу" сойдут пара функций: [pre2] FUNCTION GetFormControls( cForm, lProp ) // Все контролы окна или по типам контролов LOCAL i, x, nFormHandle, nControlCount, aRetVal := {}, aProp, cType, lAdd DEFAULT cForm := _HMG_ThisFormName, ; lProp := .F. If ValType(lProp) == "C" // по типам контролов cType := ","+upper(lProp)+"," lProp := .T. EndIf nFormHandle := GetFormHandle ( cForm ) nControlCount := Len ( _HMG_aControlHandles ) For i := 1 To nControlCount lAdd := .F. If _HMG_aControlParentHandles[ i ] == nFormHandle If ValType( _HMG_aControlHandles[ i ] ) == 'N' IF ! Empty( _HMG_aControlNames[ i ] ) lAdd := .T. If ! empty(cType); lAdd := ","+ _HMG_aControlType[ i ] +"," $ cType EndIf If lAdd If lProp aAdd( aRetVal, GetHmgValue(cForm, _HMG_aControlNames[ i ]) ) ElseIf Ascan( aRetVal, _HMG_aControlNames[ i ] ) == 0 Aadd( aRetVal, _HMG_aControlNames[ i ] ) EndIf EndIf ENDIF ElseIf ValType( _HMG_aControlHandles [ i ] ) == 'A' For x := 1 To Len ( _HMG_aControlHandles[ i ] ) IF ! Empty( _HMG_aControlNames[ i ] ) lAdd := .T. If ! empty(cType); lAdd := ","+ _HMG_aControlType[ i ] +"," $ cType EndIf If lAdd If lProp aAdd( aRetVal, GetHmgValue(cForm, _HMG_aControlNames[ i ]) ) ElseIf Ascan( aRetVal, _HMG_aControlNames[ i ] ) == 0 Aadd( aRetVal, _HMG_aControlNames [ i ] ) EndIf EndIf ENDIF Next x EndIf EndIf Next i If ! lProp; RETURN ASort( aRetVal ) EndIf RETURN aRetVal FUNCTION GetHmgValue( cForm, cControl ) // Значения переменных _HMG_... окна, контрола LOCAL i, k := 0, aRet := {} DEFAULT cForm := _HMG_ThisFormName If Valtype(cForm) == "N"; i := AScan(_HMG_cFormHandles, cForm) Else ; i := GetFormIndex(cForm) EndIf If i > 0 If Valtype(cControl) == "N"; k := AScan(_HMG_aControlHandles, cForm) ElseIf ! empty(cControl) ; k := GetControlIndex(cControl, cForm) EndIf If empty(cControl) aAdd( aRet, {"_HMG_aFormNames " , _HMG_aFormNames [ i ]} ) aAdd( aRet, {"_HMG_aFormHandles " , _HMG_aFormHandles [ i ]} ) aAdd( aRet, {"_HMG_aFormActive " , _HMG_aFormActive [ i ]} ) aAdd( aRet, {"_HMG_aFormType " , _HMG_aFormType [ i ]} ) aAdd( aRet, {"_HMG_aFormParentHandle " , _HMG_aFormParentHandle [ i ]} ) aAdd( aRet, {"_HMG_aFormReleaseProcedure " , _HMG_aFormReleaseProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormInitProcedure " , _HMG_aFormInitProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormToolTipHandle " , _HMG_aFormToolTipHandle [ i ]} ) aAdd( aRet, {"_HMG_aFormContextMenuHandle " , _HMG_aFormContextMenuHandle [ i ]} ) aAdd( aRet, {"_HMG_aFormMouseDragProcedure " , _HMG_aFormMouseDragProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormSizeProcedure " , _HMG_aFormSizeProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormClickProcedure " , _HMG_aFormClickProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormMouseMoveProcedure " , _HMG_aFormMouseMoveProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormMoveProcedure " , _HMG_aFormMoveProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormDropProcedure " , _HMG_aFormDropProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormDeleted " , _HMG_aFormDeleted [ i ]} ) aAdd( aRet, {"_HMG_aFormBkColor " , _HMG_aFormBkColor [ i ]} ) aAdd( aRet, {"_HMG_aFormPaintProcedure " , _HMG_aFormPaintProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormNoShow " , _HMG_aFormNoShow [ i ]} ) aAdd( aRet, {"_HMG_aFormNotifyIconName " , _HMG_aFormNotifyIconName [ i ]} ) aAdd( aRet, {"_HMG_aFormNotifyIconToolTip " , _HMG_aFormNotifyIconToolTip [ i ]} ) aAdd( aRet, {"_HMG_aFormNotifyIconLeftClick " , _HMG_aFormNotifyIconLeftClick [ i ]} ) aAdd( aRet, {"_HMG_aFormNotifyIconDblClick " , _HMG_aFormNotifyIconDblClick [ i ]} ) aAdd( aRet, {"_HMG_aFormGotFocusProcedure " , _HMG_aFormGotFocusProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormLostFocusProcedure " , _HMG_aFormLostFocusProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormReBarHandle " , _HMG_aFormReBarHandle [ i ]} ) aAdd( aRet, {"_HMG_aFormNotifyMenuHandle " , _HMG_aFormNotifyMenuHandle [ i ]} ) aAdd( aRet, {"_HMG_aFormBrowseList " , _HMG_aFormBrowseList [ i ]} ) aAdd( aRet, {"_HMG_aFormSplitChildList " , _HMG_aFormSplitChildList [ i ]} ) aAdd( aRet, {"_HMG_aFormVirtualHeight " , _HMG_aFormVirtualHeight [ i ]} ) aAdd( aRet, {"_HMG_aFormVirtualWidth " , _HMG_aFormVirtualWidth [ i ]} ) aAdd( aRet, {"_HMG_aFormFocused " , _HMG_aFormFocused [ i ]} ) aAdd( aRet, {"_HMG_aFormScrollUp " , _HMG_aFormScrollUp [ i ]} ) aAdd( aRet, {"_HMG_aFormScrollDown " , _HMG_aFormScrollDown [ i ]} ) aAdd( aRet, {"_HMG_aFormScrollLeft " , _HMG_aFormScrollLeft [ i ]} ) aAdd( aRet, {"_HMG_aFormScrollRight " , _HMG_aFormScrollRight [ i ]} ) aAdd( aRet, {"_HMG_aFormHScrollBox " , _HMG_aFormHScrollBox [ i ]} ) aAdd( aRet, {"_HMG_aFormVScrollBox " , _HMG_aFormVScrollBox [ i ]} ) aAdd( aRet, {"_HMG_aFormBrushHandle " , _HMG_aFormBrushHandle [ i ]} ) aAdd( aRet, {"_HMG_aFormFocusedControl " , _HMG_aFormFocusedControl [ i ]} ) aAdd( aRet, {"_HMG_aFormGraphTasks " , _HMG_aFormGraphTasks [ i ]} ) aAdd( aRet, {"_HMG_aFormMaximizeProcedure " , _HMG_aFormMaximizeProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormMinimizeProcedure " , _HMG_aFormMinimizeProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormRestoreProcedure " , _HMG_aFormRestoreProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormAutoRelease " , _HMG_aFormAutoRelease [ i ]} ) aAdd( aRet, {"_HMG_aFormInteractiveCloseProcedure" , _HMG_aFormInteractiveCloseProcedure [ i ]} ) aAdd( aRet, {"_HMG_aFormMinMaxInfo " , _HMG_aFormMinMaxInfo [ i ]} ) aAdd( aRet, {"_HMG_aFormActivateId " , _HMG_aFormActivateId [ i ]} ) aAdd( aRet, {"_HMG_aFormMiscData1 " , _HMG_aFormMiscData1 [ i ]} ) ElseIf k > 0 aAdd( aRet, {"_HMG_aControlType " , _HMG_aControlType [ k ]} ) aAdd( aRet, {"_HMG_aControlNames " , _HMG_aControlNames [ k ]} ) aAdd( aRet, {"_HMG_aControlHandles " , _HMG_aControlHandles [ k ]} ) aAdd( aRet, {"_HMG_aControlParentHandles " , _HMG_aControlParentHandles [ k ]} ) aAdd( aRet, {"_HMG_aControlIds " , _HMG_aControlIds [ k ]} ) aAdd( aRet, {"_HMG_aControlProcedures " , _HMG_aControlProcedures [ k ]} ) aAdd( aRet, {"_HMG_aControlPageMap " , _HMG_aControlPageMap [ k ]} ) aAdd( aRet, {"_HMG_aControlValue " , _HMG_aControlValue [ k ]} ) aAdd( aRet, {"_HMG_aControlInputMask " , _HMG_aControlInputMask [ k ]} ) aAdd( aRet, {"_HMG_aControllostFocusProcedure" , _HMG_aControllostFocusProcedure [ k ]} ) aAdd( aRet, {"_HMG_aControlGotFocusProcedure " , _HMG_aControlGotFocusProcedure [ k ]} ) aAdd( aRet, {"_HMG_aControlChangeProcedure " , _HMG_aControlChangeProcedure [ k ]} ) aAdd( aRet, {"_HMG_aControlDeleted " , _HMG_aControlDeleted [ k ]} ) aAdd( aRet, {"_HMG_aControlBkColor " , _HMG_aControlBkColor [ k ]} ) aAdd( aRet, {"_HMG_aControlFontColor " , _HMG_aControlFontColor [ k ]} ) aAdd( aRet, {"_HMG_aControlDblClick " , _HMG_aControlDblClick [ k ]} ) aAdd( aRet, {"_HMG_aControlHeadClick " , _HMG_aControlHeadClick [ k ]} ) aAdd( aRet, {"_HMG_aControlRow " , _HMG_aControlRow [ k ]} ) aAdd( aRet, {"_HMG_aControlCol " , _HMG_aControlCol [ k ]} ) aAdd( aRet, {"_HMG_aControlWidth " , _HMG_aControlWidth [ k ]} ) aAdd( aRet, {"_HMG_aControlHeight " , _HMG_aControlHeight [ k ]} ) aAdd( aRet, {"_HMG_aControlSpacing " , _HMG_aControlSpacing [ k ]} ) aAdd( aRet, {"_HMG_aControlContainerRow " , _HMG_aControlContainerRow [ k ]} ) aAdd( aRet, {"_HMG_aControlContainerCol " , _HMG_aControlContainerCol [ k ]} ) aAdd( aRet, {"_HMG_aControlPicture " , _HMG_aControlPicture [ k ]} ) aAdd( aRet, {"_HMG_aControlContainerHandle " , _HMG_aControlContainerHandle [ k ]} ) aAdd( aRet, {"_HMG_aControlFontName " , _HMG_aControlFontName [ k ]} ) aAdd( aRet, {"_HMG_aControlFontSize " , _HMG_aControlFontSize [ k ]} ) aAdd( aRet, {"_HMG_aControlFontAttributes " , _HMG_aControlFontAttributes [ k ]} ) aAdd( aRet, {"_HMG_aControlToolTip " , _HMG_aControlToolTip [ k ]} ) aAdd( aRet, {"_HMG_aControlRangeMin " , _HMG_aControlRangeMin [ k ]} ) aAdd( aRet, {"_HMG_aControlRangeMax " , _HMG_aControlRangeMax [ k ]} ) aAdd( aRet, {"_HMG_aControlCaption " , _HMG_aControlCaption [ k ]} ) aAdd( aRet, {"_HMG_aControlVisible " , _HMG_aControlVisible [ k ]} ) aAdd( aRet, {"_HMG_aControlHelpId " , _HMG_aControlHelpId [ k ]} ) aAdd( aRet, {"_HMG_aControlFontHandle " , _HMG_aControlFontHandle [ k ]} ) aAdd( aRet, {"_HMG_aControlBrushHandle " , _HMG_aControlBrushHandle [ k ]} ) aAdd( aRet, {"_HMG_aControlEnabled " , _HMG_aControlEnabled [ k ]} ) aAdd( aRet, {"_HMG_aControlMiscData1 " , _HMG_aControlMiscData1 [ k ]} ) aAdd( aRet, {"_HMG_aControlMiscData2 " , _HMG_aControlMiscData2 [ k ]} ) EndIf EndIf RETURN aRet [/pre2] Список _HMG_... переменных для версии 2.07, возможно надо сверить с текущим из h_init.prg

Dima: SergKis Спасибо !

Alex_Cher: Мужики, помогите разобраться ... Имеем Окно в нем DEFINE TBROWSE DEFINE WINDOW Form_1 AT 0,0 WIDTH 1320 HEIGHT 580; TITLE ' test' MAIN FONT 'ARIAL' SIZE 12 DEFINE STATUSBAR PARENT Form_1 STATUSITEM 'Номер текущей записи : 1' + ' Записей всего : ' + Str( LastRec(), 10) END STATUSBAR DEFINE TBROWSE Browse_1 AT 30, 30 OF Form_1 ALIAS 'a1342' WIDTH 1250 HEIGHT 430 ........ END TBROWSE Суть проблемы ... как только мышка входит в поле TBROWSE стока STATUSITEM исчезает. При прокрутку стрелкой появляется, при малейшем перемещение мышки исчезает снова ... Как уйти этой беды ? На ... @ 30, 30 BROWSE Browse_1 PARENT Form_1_3 все нормально, поднял старые сборки проблема та же.

Haz: Alex_Cher пишет: Как уйти этой беды ? TSBROWS первый элемент стстусбара приватизирует себе безусловно под выводы сообщений. Надо или выводить в статусбар через TSBrows или тупо первый элемент установить в ноль а выводить во второй DEFINE STATUSBAR PARENT Form_0 STATUSITEM "Item 1" WIDTH 0 STATUSITEM 'Номер текущей записи : 1' + ' Записей всего : ' + Str( LastRec(), 10) END STATUSBAR

SergKis: Haz пишет TSBROWS первый элемент стстусбара приватизирует себе безусловно под выводы сообщений Если сделать так:[pre2] CLASS TControl ... DATA lNoStatusMsg AS LOGICAL METHOD SetMsg( cText, lDefault ) CLASS TControl Local cOldText, cParentWnd If ::lNoStatusMsg RETURN Nil EndIf ... [/pre2] то можно этой приватизацией управлять, т.е. oBrw:lNoStatusMsg := .T. // отключили вывод oBrw:lNoStatusMsg := .F. // включили вывод

Haz: SergKis пишет: Если сделать так: Если модифицировать исходник - то да отключать можно будет. Если не трогать исходник то первый элемент стстусбара либо загонять в нулевую длинну , либо застявлять его показывать то что надо примерно так oBrw:cMsg := "эта строка будет в статусе первым элементом" PS в исходник не лез , строка выше по памяти

Alex_Cher: SergKis пишет: Если сделать так: CLASS TControl Получилось, SergKis огромное спасибо .... может попросим gfilatov2002 включить это в следующую сборку ..?

SergKis: Alex_Cher пишет может попросим gfilatov2002 включить это в следующую сборку ..? В сборку включать, возможно, надо такой вариант:[pre2] CLASS TControl DATA nStatusItem INIT 1 ... METHOD SetMsg( cText, lDefault ) CLASS TControl Local cOldText, cParentWnd If ::nStatusItem < 1 RETURN Nil EndIf DEFAULT lDefault := .F. , cText := "" cParentWnd := IF( _HMG_MainClientMDIHandle == 0, ::cParentWnd, _HMG_MainClientMDIName ) if _IsWindowActive (cParentWnd) if _IsControlDefined ( "StatusBar" , cParentWnd ) if !lDefault cOldText := GetItemBar( _HMG_ActiveStatusHandle , ::nStatusItem ) if !(AllTrim(cOldText) == AllTrim(cText)) SetProperty( cParentWnd, "StatusBar", "Item", ::nStatusItem, cText ) endif elseif valtype ( _HMG_DefaultStatusBarMessage ) == "C" SetProperty( cParentWnd, "StatusBar", "Item", ::nStatusItem, _HMG_DefaultStatusBarMessage ) endif endif endif return nil [/pre2] т.е. oBrw:nStatusItem := 0 // отключили вывод oBrw:nStatusItem := 1 // вкл. в 1-ый item вывод oBrw:nStatusItem := 2 // вкл. во 2-ой item вывод ...

SergKis: PS сообщения 2-х тсб можно разделить в разные item StatusBar

gfilatov2002: SergKis пишет: В сборку включать Благодарю за помощь! Добавил эту переменную в класс TControl с таким комментарием: * Updated: Adaptation FiveWin Class TSBrowse 9.0 in HMG: - New: added handling of the variable :nStatusItem to TControl class. Contributed by SergKis.



полная версия страницы