Форум » GUI » 2 вопроса знающим » Ответить

2 вопроса знающим

Allcome: Прошу помощи! USE PRIVIV ALIAS TEST NEW INDEX ON STROKA TO (PATHTM + 'INGOD.NTX') FOR (GODI = NGOD .AND. UCHR=NUCH) // SET FILTER TO GODI = NGOD .AND. UCHR=NUCH ------------------> НЕ РАБОТАЕТ DBGOTOP() DEFINE WINDOW Form_1 ; AT 100, 50 ; WIDTH getdesktopWidth()-30 ; HEIGHT getDeskTopHeight()-57 ; CHILD ; ICON 'N_ICON' ; TITLE ALLTRIM(MUCHREG[NUCH])+' '+ALLTRIM(STR(NGOD)) ; FONT "COURIER NEW" SIZE 12 DEFINE STATUSBAR FONT "COURIER NEW" SIZE 10 STATUSITEM '' STATUSITEM '<Enter> / 2 клика-Редактировать' WIDTH 300 END STATUSBAR @ 10,10 BROWSE Browse_1 ; WIDTH getdesktopWidth()-50 ; HEIGHT getDeskTopHeight()-125 ; HEADERS mRusn; WIDTHS mRazm; FIELDS mPole ; VALUE 1 ; ON CHANGE Podpis() ; WORKAREA Test ; EDIT INPLACE APPEND DELETE ; LOCK FONT "COURIER NEW" SIZE 12 BOLD ON KEY ESCAPE ACTION Form_1.Release END WINDOW CENTER WINDOW Form_1 Form_1.Browse_1.SetFocus ACTIVATE WINDOW Form_1 DBCLOSEALL() RETURN (NIL) Procedure Pospis() Form_1.StatusBar.Item(1) := [TEST->STROKA] -----------> ? Return 1. Не работает SET FILTER TO c BROWSE - это так или я что-то неправильно делаю? Вышел из положения с помощью INDEX ... FOR 2 В STATUSBAR нужно выводить значение одного из полей текущей строки, вывести не получается. Прошу помочь!!!!

Ответов - 15

Dima: В STATUSBAR первый его элемент по умолчанию зарезервирован под TSBROWSE , выводи во второй и тд

Allcome: Ясно, спасибо попробую!

Allcome: Нет, не работает к сожалению!((


Dima: Allcome пишет: Нет, не работает к сожалению!(( Может из за этого ? Allcome пишет: ON CHANGE Podpis() ; Allcome пишет: Procedure Pospis()

Allcome: Может и от этого, но как тогда получить текущее значение поля и вывести его в STATUS?

gfilatov2002: Allcome пишет: как тогда получить текущее значение поля и вывести его в STATUS? Просто добавь в начале программы команду SET BROWSESYNC ON и посмотри результат

Allcome: Спасибо, помогло!!!! А по первому вопросу ???

gfilatov2002: Allcome пишет: А по первому вопросу Посмотри рабочий пример ниже [pre2]#include "minigui.ch" #include "Dbstruct.ch" Function Main Local bColor := { || if ( deleted() , RGB( 255, 0, 0 ) , RGB( 255, 255, 255 ) ) } Local var := 'Test' REQUEST DBFCDX SET EXCLUSIVE ON SET CENTURY ON SET DELETED OFF SET BROWSESYNC ON DEFINE WINDOW Form_1 ; AT 0,0 ; WIDTH 640 HEIGHT 480 ; TITLE 'Browse Demo' ; MAIN NOMAXIMIZE ; ON INIT OpenTable() ; ON RELEASE CloseTable() DEFINE MAIN MENU POPUP 'File' ITEM 'Go Home' ACTION Go_1_record() ITEM 'Delete/Undelete' ACTION Delete_record() SEPARATOR ITEM 'Exit' ACTION Form_1.Release END POPUP POPUP 'Help' ITEM 'About' ACTION MsgInfo ("MiniGUI Browse Demo") END POPUP END MENU DEFINE STATUSBAR STATUSITEM '' FONTCOLOR BLACK CENTERALIGN END STATUSBAR @ 10,10 BROWSE Browse_1 ; WIDTH 610 ; HEIGHT 313 ; HEADERS { 'X' , 'Code' , 'First Name' , 'Last Name', 'Birth Date', 'Married' , 'Biography' } ; WIDTHS { 30 , 150 , 150 , 150 , 150 , 150 , 150 } ; WORKAREA &var ; FIELDS {'Test->(iif(deleted(),"*"," "))' , 'Test->(Round(Code,0))' , 'Test->First' , 'Test->Last' , 'Test->Birth' , 'Test->Married' , 'Test->(if(empty(Bio)," ","*"))' } ; ON CHANGE ChangeTest() ; JUSTIFY { BROWSE_JTFY_LEFT, BROWSE_JTFY_RIGHT, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER, BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER,BROWSE_JTFY_CENTER} ; TOOLTIP 'Browse Test' ; DYNAMICBACKCOLOR { bColor, bColor, bColor, bColor, bColor, bColor, bColor } ; EDIT ; readonly { .t., .t., .f., .f., .f., .f., .t. } @ 350,150 BUTTON Button_1 ; CAPTION 'Go Home' ; WIDTH 140 ; ACTION Go_1_record() ; TOOLTIP 'Go to first record' @ 350,300 BUTTON Button_2 ; CAPTION 'Delete/Undelete' ; WIDTH 140 ; ACTION Delete_record() ; TOOLTIP 'Delete / Recall the current record' END WINDOW CENTER WINDOW Form_1 ACTIVATE WINDOW Form_1 Return Nil Procedure OpenTable() local form := thiswindow.name if !file("test.dbf") CreateTable() endif Use Test Index Code Via "DBFCDX" set filter to code<1000 .and. code > 990 Go Top SetProperty(Form,"Browse_1","Value", RecNo()) // Form_1.Browse_1.ColumnsAutoFitH Form_1.Browse_1.Header(2) := 'New Code' Form_1.Browse_1.SetFocus Return Procedure CloseTable() Use Return Procedure ChangeTest() Form_1.StatusBar.Item(1) := 'RecNo: ' + Alltrim ( Str ( GetProperty ( 'Form_1', 'Browse_1', 'Value' ) ) ) Return Procedure Go_1_record() Form_1.Browse_1.SetFocus Insert_Ctrl_Home() Return Procedure Delete_record() iif(Test->(Deleted()), Test->(DbRecall()), Test->(DbDelete())) Form_1.Browse_1.Refresh Form_1.Browse_1.SetFocus Return Procedure CreateTable LOCAL aDbf[6][4], i aDbf[1][ DBS_NAME ] := "Code" aDbf[1][ DBS_TYPE ] := "+" aDbf[1][ DBS_LEN ] := 6 aDbf[1][ DBS_DEC ] := 0 // aDbf[2][ DBS_NAME ] := "First" aDbf[2][ DBS_TYPE ] := "Character" aDbf[2][ DBS_LEN ] := 25 aDbf[2][ DBS_DEC ] := 0 // aDbf[3][ DBS_NAME ] := "Last" aDbf[3][ DBS_TYPE ] := "Character" aDbf[3][ DBS_LEN ] := 25 aDbf[3][ DBS_DEC ] := 0 // aDbf[4][ DBS_NAME ] := "Married" aDbf[4][ DBS_TYPE ] := "Logical" aDbf[4][ DBS_LEN ] := 1 aDbf[4][ DBS_DEC ] := 0 // aDbf[5][ DBS_NAME ] := "Birth" aDbf[5][ DBS_TYPE ] := "Date" aDbf[5][ DBS_LEN ] := 8 aDbf[5][ DBS_DEC ] := 0 // aDbf[6][ DBS_NAME ] := "Bio" aDbf[6][ DBS_TYPE ] := "Memo" aDbf[6][ DBS_LEN ] := 10 aDbf[6][ DBS_DEC ] := 0 DBCREATE("Test", aDbf, "DBFCDX") Use test Via "DBFCDX" For i:= 1 To 1000 append blank Replace First With 'First Name '+ Ltrim(Str(i)) Replace Last With 'Last Name '+ Ltrim(Str(i)) Replace Married With ( i/2 == int(i/2) ) replace birth with date()-Max(10000, Random(20000))+Random(LastRec()) Next i Index on field->code to code Use Return #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( INSERT_CTRL_HOME ) { keybd_event( VK_CONTROL, // virtual-key code 0, // hardware scan code 0, // flags specifying various function options 0 // additional data associated with keystroke ); keybd_event( VK_HOME, // virtual-key code 0, // hardware scan code 0, // flags specifying various function options 0 // additional data associated with keystroke ); keybd_event( VK_CONTROL, // virtual-key code 0, // hardware scan code KEYEVENTF_KEYUP,// flags specifying various function options 0 // additional data associated with keystroke ); } #pragma ENDDUMP[/pre2]

Allcome: Спасибо за пример, Григорий!

Allcome: И всё-же при передаче диапазона фильтрации через локальные переменные программа вылетает в ошибкой local AA := 1000, BB := 990 set filter to code<AA .and. code > BB Error BASE/1003 Variable does not exist: AA Called from _BROWSESETVALUE(1087) Called from _SETVALUE(301) Called from SETPROPERTY(3670) Called from OPENTABLE(91) Called from (b)MAIN(24) Called from _PROCESSINITPROCEDURE(1492) Called from _ACTIVATEWINDOW(1358) Called from MAIN(73)

SergKis: Allcome если посмотрите std.ch, то увидите: #command SET FILTER TO <exp> => dbSetFilter( <{exp}>, <"exp"> ) т.е. {exp} - блок кода и через команду SET FILTER ... local переменная не видна, используте private или public переменную в выражении фильта или так с local: SET FILTER TO &( 'CODE < '+hb_ntos(AA)+' .and. CODE > '+hb_ntos(BB) )

Andrey: SergKis Ясность и четкость мысли. Хотя это ещё на клипере было, но я тоже не смог ответить на этот простой вопрос.

Allcome: Спасибо Андрей! Всё ясно!

Andrey: Allcome пишет: Спасибо Андрей! Всё ясно! А я то тут при чём ? Это SergKis ответил, а не я.

Allcome: SergKis спасибо! Сорри, зарапортовался!



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