Форум » GUI » Примеры из Минигуи -ошибки, вопросы..... (продолжение) » Ответить

Примеры из Минигуи -ошибки, вопросы..... (продолжение)

Andrey: Всем привет. Взялся смотреть примеры из МиниГуи, так не все работают. Может кто подскажет что там "допилить" нужно ? А заодно может и исправить и добавить новые.... Очень красочный пример: \MiniGUI\SAMPLES\Advanced\AVI_Animation - не работает под Win7 (наверно AVI-шки нет в ресурсах) Предложение Григорию: Можно ли добавить еще один пример с отдельным AVI-файлом в ресурсах проекта и показом такого же бегунка ? Пример: \MiniGUI\SAMPLES\Advanced\DisplayMode - не работает под ХР и далее.... Пример: \MiniGUI\SAMPLES\Advanced\Tsb_filter - вылетает на ХР -------------------------------------------------------------------------------- Harbour MiniGUI Errorlog File Harbour MiniGUI Extended Edition 2.0.1 - 2011.09.21 -------------------------------------------------------------------------------- Date: 11/15/2011 Time: 22:13:24 Error BASE/1124 Argument error: LEFT Called from LEFT(0) Called from SCANSOFT(195) Called from MAIN(84) Пример: \MiniGUI\SAMPLES\BASIC\MsgEdit - не собирается... Z:\MiniGUI\SAMPLES\BASIC\MsgEdit>call ..\..\..\batch\compile.bat demo /L shell32 Harbour 3.1.0dev (Rev. 17042) Copyright (c) 1999-2011, http://harbour-project.org/ Compiling 'demo.prg'... Lines 20133, Functions/Procedures 30 Generating C source output to 'demo.c'... Done. Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland demo.c: Error E2141 demo.prg 993: Declaration syntax error *** 1 errors in Compile *** C compile error.

Ответов - 300, стр: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 All

Haz: SergKis пишет: Примерчик бы. да не вопрос , сейчас нарисую

Haz: Контекстное меню на бровсе , после исполнения открывается новое окно и пока его не закрыть меню больше не появляется [pre2] #include "minigui.ch" #include "tsbrowse.ch" #define CLR_PINK RGB( 255, 128, 128) #define CLR_NBLUE RGB( 128, 128, 192) Memvar oBrw1 Memvar aDatos Procedure Main() Public oBrw1 Public aDatos DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 355 ; HEIGHT 400 ; TITLE "MAIN" ; MAIN ; FONT 'Tahoma' SIZE 10 Sample1() END WINDOW DEFINE CONTEXT MENU CONTROL oBrw1 OF Form1 MENUITEM 'Test Context Menu' ACTION {|| NewForm() } NAME CM_TEST END MENU ACTIVATE WINDOW Form1 Return *-------------------------------------------------------------- Function Sample1() aDatos := {} AADD( aDatos, {"Ena ", "Art01", "Mod01", "200"} ) AADD( aDatos, {"Dyo ", "Art02", "Mod01", "200"} ) AADD( aDatos, {"Tria ", "Art03", "Mod01", "200"} ) AADD( aDatos, {"Tessera ", "Art04", "Mod01", "200"} ) AADD( aDatos, {"Pente ", "Art05", "Mod01", "200"} ) AADD( aDatos, {"Exi ", "Art06", "Mod01", "200"} ) AADD( aDatos, {"Epta ", "Art07", "Mod01", "200"} ) AADD( aDatos, {"Okto ", "Art08", "Mod01", "200"} ) AADD( aDatos, {"Ennea ", "Art09", "Mod01", "200"} ) AADD( aDatos, {"Deka ", "Art10", "Mod02", "200"} ) AADD( aDatos, {"Enteka ", "Art11", "Mod02", "200"} ) AADD( aDatos, {"Dodeka ", "Art12", "Mod02", "200"} ) AADD( aDatos, {"Dekatria ", "Art13", "Mod02", "200"} ) AADD( aDatos, {"Dekatessera ", "Art14", "Mod02", "200"} ) AADD( aDatos, {"Dekapente ", "Art15", "Mod02", "200"} ) AADD( aDatos, {"Dekaexi ", "Art16", "Mod02", "200"} ) AADD( aDatos, {"Dekaepta ", "Art17", "Mod02", "200"} ) AADD( aDatos, {"Dekaokto ", "Art18", "Mod02", "200"} ) IF !_IsControlDefined ("oBrw1", "Form1") DEFINE TBROWSE oBrw1 ; AT 5,5 ; OF Form1 ; WIDTH 330 ; HEIGHT 345 ; FONT "Verdana" ; SIZE 10 ; GRID oBrw1:SetArray( aDatos ) ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 1; TITLE "Rubro" SIZE 120 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 2; TITLE "Articulo" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 3; TITLE "Marca" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 4; TITLE "M" SIZE 30 oBrw1:SetColor({5,6},{CLR_WHITE,CLR_MAGENTA}) oBrw1:SetColor( { 3, 4 }, { CLR_WHITE, CLR_NBLUE } ) END TBROWSE ENDIF Return Nil *-------------------------------------------------------------- Func NewForm() DEFINE WINDOW Form2 ; AT 5,500 ; WIDTH 355 ; HEIGHT 400 ; TITLE "CHILD" ; END WINDOW ACTIVATE WINDOW Form2 Return [/pre2]

gfilatov2002: Haz пишет: Контекстное меню на бровсе , после исполнения открывается новое окно и пока его не закрыть меню больше не появляется Да, есть такая проблема при обычном использовании контексного меню. Как временная мера, решил следующим образом в Вашем примере: [pre2] #include "minigui.ch" #include "tsbrowse.ch" #define CLR_PINK RGB( 255, 128, 128) #define CLR_NBLUE RGB( 128, 128, 192) Memvar oBrw1 Memvar aDatos Procedure Main() Public oBrw1 Public aDatos DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 355 ; HEIGHT 400 ; TITLE "MAIN" ; MAIN ; FONT 'Tahoma' SIZE 10 Sample1() END WINDOW oBrw1:bRClicked := {|| CM() } DEFINE CONTEXT MENU CONTROL oBrw1 OF Form1 MENUITEM 'Test Context Menu' ACTION {|| NewForm() } NAME CM_TEST END MENU ACTIVATE WINDOW Form1 Return *-------------------------------------------------------------- Function Sample1() aDatos := {} AADD( aDatos, {"Ena ", "Art01", "Mod01", "200"} ) AADD( aDatos, {"Dyo ", "Art02", "Mod01", "200"} ) AADD( aDatos, {"Tria ", "Art03", "Mod01", "200"} ) AADD( aDatos, {"Tessera ", "Art04", "Mod01", "200"} ) AADD( aDatos, {"Pente ", "Art05", "Mod01", "200"} ) AADD( aDatos, {"Exi ", "Art06", "Mod01", "200"} ) AADD( aDatos, {"Epta ", "Art07", "Mod01", "200"} ) AADD( aDatos, {"Okto ", "Art08", "Mod01", "200"} ) AADD( aDatos, {"Ennea ", "Art09", "Mod01", "200"} ) AADD( aDatos, {"Deka ", "Art10", "Mod02", "200"} ) AADD( aDatos, {"Enteka ", "Art11", "Mod02", "200"} ) AADD( aDatos, {"Dodeka ", "Art12", "Mod02", "200"} ) AADD( aDatos, {"Dekatria ", "Art13", "Mod02", "200"} ) AADD( aDatos, {"Dekatessera ", "Art14", "Mod02", "200"} ) AADD( aDatos, {"Dekapente ", "Art15", "Mod02", "200"} ) AADD( aDatos, {"Dekaexi ", "Art16", "Mod02", "200"} ) AADD( aDatos, {"Dekaepta ", "Art17", "Mod02", "200"} ) AADD( aDatos, {"Dekaokto ", "Art18", "Mod02", "200"} ) IF !_IsControlDefined ("oBrw1", "Form1") DEFINE TBROWSE oBrw1 ; AT 5,5 ; OF Form1 ; WIDTH 330 ; HEIGHT 345 ; FONT "Verdana" ; SIZE 10 ; GRID oBrw1:SetArray( aDatos ) ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 1; TITLE "Rubro" SIZE 120 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 2; TITLE "Articulo" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 3; TITLE "Marca" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 4; TITLE "M" SIZE 30 oBrw1:SetColor({5,6},{CLR_WHITE,CLR_MAGENTA}) oBrw1:SetColor( { 3, 4 }, { CLR_WHITE, CLR_NBLUE } ) END TBROWSE ENDIF Return Nil *-------------------------------------------------------------- Func NewForm() DEFINE WINDOW Form2 ; AT 5,500 ; WIDTH 355 ; HEIGHT 400 ; TITLE "CHILD" ; CHILD END WINDOW ACTIVATE WINDOW Form2 Return nil *-------------------------------------------------------------- Func CM() if iswindowdefined(Form2) Form2.release endif Return Nil [/pre2]


Haz: gfilatov2002 пишет: Как временная мера, решил следующим образом Григорий, Ну как очень временная. Пример слишком прост, а реальная работа в том чтобы протащить в системе удобное переключение между активными окнами и документами. Пользователь наоткрывал много документов и по контексту хочу не закрывать документ , а переключится на него если он открыт. Сейчас все можно через главное меню, но там своя вложенная иерархия. Пока буду искать выход дальше, ведь главное меню отрабатывает правильно, значит и контекст можно научить

gfilatov2002: Haz пишет: хочу не закрывать документ , а переключится на него если он открыт. Тогда рекомендую сделать таким образом: [pre2] #include "minigui.ch" #include "tsbrowse.ch" #define CLR_PINK RGB( 255, 128, 128) #define CLR_NBLUE RGB( 128, 128, 192) Memvar oBrw1 Memvar aDatos Procedure Main() Public oBrw1 Public aDatos DEFINE WINDOW Form1 ; AT 0,0 ; WIDTH 355 ; HEIGHT 400 ; TITLE "MAIN" ; MAIN ; FONT 'Tahoma' SIZE 10 Sample1() END WINDOW DEFINE WINDOW Form2 ; AT 5,500 ; WIDTH 355 ; HEIGHT 400 ; TITLE "CHILD" ; CHILD END WINDOW DEFINE CONTEXT MENU CONTROL oBrw1 OF Form1 MENUITEM 'Test Context Menu' ACTION {|| NewForm() } NAME CM_TEST END MENU ACTIVATE WINDOW ALL Return *-------------------------------------------------------------- Function Sample1() aDatos := {} AADD( aDatos, {"Ena ", "Art01", "Mod01", "200"} ) AADD( aDatos, {"Dyo ", "Art02", "Mod01", "200"} ) AADD( aDatos, {"Tria ", "Art03", "Mod01", "200"} ) AADD( aDatos, {"Tessera ", "Art04", "Mod01", "200"} ) AADD( aDatos, {"Pente ", "Art05", "Mod01", "200"} ) AADD( aDatos, {"Exi ", "Art06", "Mod01", "200"} ) AADD( aDatos, {"Epta ", "Art07", "Mod01", "200"} ) AADD( aDatos, {"Okto ", "Art08", "Mod01", "200"} ) AADD( aDatos, {"Ennea ", "Art09", "Mod01", "200"} ) AADD( aDatos, {"Deka ", "Art10", "Mod02", "200"} ) AADD( aDatos, {"Enteka ", "Art11", "Mod02", "200"} ) AADD( aDatos, {"Dodeka ", "Art12", "Mod02", "200"} ) AADD( aDatos, {"Dekatria ", "Art13", "Mod02", "200"} ) AADD( aDatos, {"Dekatessera ", "Art14", "Mod02", "200"} ) AADD( aDatos, {"Dekapente ", "Art15", "Mod02", "200"} ) AADD( aDatos, {"Dekaexi ", "Art16", "Mod02", "200"} ) AADD( aDatos, {"Dekaepta ", "Art17", "Mod02", "200"} ) AADD( aDatos, {"Dekaokto ", "Art18", "Mod02", "200"} ) IF !_IsControlDefined ("oBrw1", "Form1") DEFINE TBROWSE oBrw1 ; AT 5,5 ; OF Form1 ; WIDTH 330 ; HEIGHT 345 ; FONT "Verdana" ; SIZE 10 ; GRID oBrw1:SetArray( aDatos ) ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 1; TITLE "Rubro" SIZE 120 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 2; TITLE "Articulo" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 3; TITLE "Marca" SIZE 80 ADD COLUMN TO TBROWSE oBrw1 ; DATA ARRAY ELEMENT 4; TITLE "M" SIZE 30 oBrw1:SetColor({5,6},{CLR_WHITE,CLR_MAGENTA}) oBrw1:SetColor( { 3, 4 }, { CLR_WHITE, CLR_NBLUE } ) END TBROWSE ENDIF Return Nil *-------------------------------------------------------------- Func NewForm() Form2.Restore Form2.Show Return nil[/pre2]

Andrey: Почему собираю ехе-ник (последняя версия Минигуи) под Win8 всё отлично работает, а под ХР появляются непонятные ошибки, вплоть до того что нет объекта, типа: Error BASE/1003 Переменная не существует: OBRWV Где и куда копать ?

SergKis: Haz пишет Пока буду искать выход дальше так работает на new версии http://my-files.ru/35j2jn

Haz: Григорий: Тогда рекомендую сделать таким образом: Григорий , спасибо за участие . К сожалению этот путь мне не годиться т.к. в контексте много пунктов , открываться может не одно окно и нужно правильно угадать куда хочет пользователь. В том же контексте живут вызовы dbAppend(), dbDelete() , вызов полной истории изменения значений ячейки в текущем бровсе (кто что когда ) и пр. Как идея - переделаю на вызов в своем потоке примерно так ( "гусары молчать! " (с) ) зато работает [pre2] MENUITEM 'Test Context Menu' ACTION {|| hb_threadDetach( hb_threadStart( HB_THREAD_INHERIT_PUBLIC, @Newform())) } NAME CM_TEST [/pre2] SergKis пишет: так работает на new версии Ты волшебник , работает , правда перспектива переписи кода по всему проекту не обрадовала. Буду переползать постепенно

SergKis: Haz пишет Буду переползать постепенно Игорь, начни регистрировать все вызовы на Main окне (с главного меню, подменю, с окон, ...). Потом, действительно, постепенно меняешь вызовы на oMain:PostMsg(...). В oMain:oCargo:Set(nn, ...) под такими же номерами регистрации, можно иметь параметры для работы события и т.д.

Haz: SergKis пишет: начни регистрировать все вызовы на Main окне Спасибо. Начну понемногу. Тем более что вижу в этом только плюсы

Andrey: Как сделать до создания окна MAIN показ окна без ожидания ? Версия МиниГуи последняя. Пробовал так: [pre2]#include "i_hmgcompat.ch" Function Test_CreateDbf() .......... SET WINDOW MAIN OFF WAIT WINDOW "Подождите, создаю тестовую базу...." NOWAIT //WaitWindow( "Подождите, создаю тестовую базу....", .T. ) // можно делать так везде без "i_hmgcompat.ch" FOR nI := 1 TO .... .......... NEXT WAIT CLEAR //WaitWindow() // можно делать так везде без "i_hmgcompat.ch" ..... RETURN NIL[/pre2] Программа отрабатывает нормально, НО в окне НЕТ НАДПИСИ !!! Что ещё нужно сделать, чтобы надпись появилась ?

Vlad04: Я создаю окно Main, но не показываю его NOSHOW ...ICON 'MAIN' MAIN NOSHOW NOMAXIMIZE ON INIT Init_Glav() ... При инициализации Окна делаю что надо - индексирую - проверяю доступ к программе и тп. А потом показываю ГЛАВНОЕ окно, если все нормально.

Andrey: Vlad04 пишет: Я создаю окно Main, но не показываю его NOSHOW Вопрос был другой...

Andrey: Пробую пере собрать исходник 2013 г. Не хватает функции IsWindowStyle(). Где её теперь брать ? В примере код выглядит так: [pre2] FOR i := 1 TO Len( aLbl ) cLbl := aLbl[ i ][ _N ] h := GetControlHandle( cLbl, cWnd ) lB := ! IsWindowStyle( h, WS_BORDER ) SetWindowStyle( h, WS_BORDER, lB ) DoMethod( cWnd, cLbl, "Refresh" ) NEXT[/pre2]

Dima: Andrey пишет: Где её теперь брать ? Возможно это твой сырец.

Andrey: Dima пишет: озможно это твой сырец. Нет, мне его (код программы) Григорий давал. Было раньше в самом МиниГуи. В версии 2.5.5 HB_FUNC( ISWINDOWSTYLE ) есть в модуле c_windows.c а в последней нет. Что тогда можно использовать ? Сам пример Form3color-demo.prg ниже: /* * MINIGUI - Harbour Win32 GUI library Demo * Minigui for version 2.1.9 and above * * Copyright 2013 Grigory Filatov <gfilatov@inbox.ru> * * Example: 3-color form and resize the program window * Copyright 2013 Verchenko Andrey <verchenkoag@gmail.com> * Copyright 2013 SergKis <http://clipper.borda.ru> */ #include "minigui.ch" #include "i_winuser.ch" #define PROGRAM '3-color form and resize the window' #define VERSION ' version 1.0' #define _Y 1 #define _X 2 #define _W 3 #define _H 4 #define _N 5 #define _T 6 STATIC lEdge := .T. STATIC aLbl STATIC aClr FUNCTION Main() LOCAL hWnd, nCliW, nCliH, cWnd := "MyWnd" DEFINE WINDOW &cWnd ; At 40, 50 ; WIDTH 480 ; HEIGHT 410 ; MINWIDTH 480 MINHEIGHT 410 ; TITLE PROGRAM + VERSION ; MAIN ; ON SIZE ReSize() ; ON MAXIMIZE ReSize() ; ON INIT ReSize() Test_This( cWnd ) aLblClrInit() // initialize array size 3-color box AEval( aLbl, { | a, n | MySayColorLabel( n, n ) } ) hWnd := GetFormHandle ( cWnd ) nCliW := GetClientWidth ( hWnd ) nCliH := GetClientHeight( hWnd ) @ 40 , nCliW - 120 BUTTON Button_1 CAPTION 'Message_1' ; ACTION MsgInfo( "ACTION - Message Button_1 !" ) @ 180 , nCliW - 120 BUTTON Button_2 CAPTION 'Message_2' ; ACTION MsgInfo( "ACTION - Message Button_2 !" ) @ nCliH - 40 , nCliW - 120 BUTTON Button_3 CAPTION 'Cancel' ; ACTION ThisWindow.Release // change style object LABEL @ 40, 70 BUTTON Button_Style CAPTION 'Label Style' ; ACTION MyBorder( cWnd, aLbl ) @ 80, 70 BUTTON Button_Edge CAPTION 'Label Edge' ; ACTION MyEdge( cWnd, aLbl ) END WINDOW ACTIVATE WINDOW &cWnd RETURN NIL //////////////////////////////////////////////////////////////// // initialize array size 3-color box STATIC FUNCTION aLblClrInit() LOCAL cWnd, hWnd, nCliW, nCliH, nH1, nH2, nH3 cWnd := _HMG_ThisFormName hWnd := GetFormHandle ( cWnd ) nCliW := GetClientWidth ( hWnd ) nCliH := GetClientHeight( hWnd ) nH1 := Int( nCliH / 3 ) nH2 := nH1 * 2 nH3 := nCliH IF aLbl == NIL aLbl := { } AAdd( aLbl, { 0, 0, nCliW, nH1, "LabelColor_1", cWnd + "_Frame_Text1" } ) AAdd( aLbl, { nH1, 0, nCliW, nH2, "LabelColor_2", cWnd + "_Frame_Text2" } ) AAdd( aLbl, { nH2, 0, nCliW, nH3, "LabelColor_3", cWnd + "_Frame_Text3" } ) ELSE aLbl[ 1 ] [ _W ] := nCliW ; aLbl[ 1 ] [ _Y ] := 0 ; aLbl[ 1 ] [ _H ] := nH1 aLbl[ 2 ] [ _W ] := nCliW ; aLbl[ 2 ] [ _Y ] := nH1 ; aLbl[ 2 ] [ _H ] := nH2 aLbl[ 3 ] [ _W ] := nCliW ; aLbl[ 3 ] [ _Y ] := nH2 ; aLbl[ 3 ] [ _H ] := nH3 ENDIF IF aClr == NIL aClr := { } AAdd( aClr, { 178, 227, 137 } ) AAdd( aClr, { 255, 0, 255 } ) AAdd( aClr, { 251, 250, 174 } ) ENDIF RETURN //////////////////////////////////////////////////////////////// FUNCTION Test_This( cWnd ) IF Empty( _HMG_ThisFormName ) _HMG_ThisFormName := cWnd _HMG_ThisFormIndex := GetFormIndex( cWnd ) ELSEIF _HMG_ThisFormName != cWnd _HMG_ThisFormName := cWnd _HMG_ThisFormIndex := GetFormIndex( cWnd ) ENDIF RETURN //////////////////////////////////////////////////////////////// FUNCTION MySayColorLabel( nLabel, nColor ) LOCAL cLabelName, cLabelTitle, aColor LOCAL cWnd, i, j, y, x, w, h, t DEFAULT nColor TO nLabel cWnd := _HMG_ThisFormName aColor := aClr[ nColor ] cLabelName := aLbl[ nLabel ][ _N ] cLabelTitle := aLbl[ nLabel ][ _T ] @ aLbl[ nLabel ][ _Y ], aLbl[ nLabel ][ _X ] LABEL &cLabelName VALUE "" OF &cWnd ; WIDTH aLbl[ nLabel ][ _W ] HEIGHT aLbl[ nLabel ][ _H ] ; BACKCOLOR aColor CLIENTEDGE // BORDER //CLIENTEDGE i := GetControlIndex( cLabelName, cWnd ) j := cWnd + cLabelTitle t := "Hello - " + cLabelName + " { " + Str( aColor[ 1 ], 3 ) + "," t += Str( aColor[ 2 ], 3 ) + "," + Str( aColor[ 3 ], 3 ) + " }" y := _HMG_aControlRow [ i ] + 10 x := _HMG_aControlCol [ i ] + 10 w := 220 h := 24 @ y, x LABEL &cLabelTitle VALUE t WIDTH w HEIGHT h BACKCOLOR aColor RETURN NIL //////////////////////////////////////////////////////////////// FUNCTION ReSize() LOCAL i, cWnd, hWnd, nCliW, nCliH cWnd := _HMG_ThisFormName hWnd := GetFormHandle ( cWnd ) nCliW := GetClientWidth ( hWnd ) nCliH := GetClientHeight( hWnd ) aLblClrInit() // initialize array size 3-color box // change the position of the Label-Color FOR i := 1 TO Len( aLbl ) SetProperty( cWnd, aLbl[ i ][ _N ], "Row" , aLbl[ i ][ _Y ] ) SetProperty( cWnd, aLbl[ i ][ _N ], "Width" , aLbl[ i ][ _W ] ) SetProperty( cWnd, aLbl[ i ][ _N ], "Height", aLbl[ i ][ _H ] ) NEXT // change the position of the Label-Text FOR i := 1 TO Len( aLbl ) SetProperty( cWnd, aLbl[ i ][ _T ], "Row" , aLbl[ i ][ _Y ] + 10 ) NEXT // change the position of the buttons SetProperty( cWnd, "Button_1", "Row" , 40 ) SetProperty( cWnd, "Button_1", "Col" , nCliW - 120 ) SetProperty( cWnd, "Button_2", "Row" , aLbl[ 2, _Y ] + 40 ) SetProperty( cWnd, "Button_2", "Col" , nCliW - 120 ) SetProperty( cWnd, "Button_3", "Row" , nCliH - 40 ) SetProperty( cWnd, "Button_3", "Col" , nCliW - 120 ) SETFOCUS Button_3 OF &cWnd RETURN // change the type border Style FUNCTION MyBorder( cWnd, aLbl ) LOCAL i, cLbl, lB, h FOR i := 1 TO Len( aLbl ) cLbl := aLbl[ i ][ _N ] h := GetControlHandle( cLbl, cWnd ) lB := ! IsWindowStyle( h, WS_BORDER ) SetWindowStyle( h, WS_BORDER, lB ) DoMethod( cWnd, cLbl, "Refresh" ) NEXT RETURN Nil // change the type border Style FUNCTION MyEdge( cWnd, aLbl ) LOCAL i, cLbl, h cLbl := aLbl[ 1 ][ _N ] h := GetControlHandle( cLbl, cWnd ) lEdge := ! lEdge IF lEdge ChangeStyle( h, WS_EX_CLIENTEDGE, 0, .T. ) ELSE ChangeStyle( h, 0, WS_EX_CLIENTEDGE, .T. ) ENDIF FOR i := 1 TO Len( aLbl ) cLbl := aLbl[ i ][ _N ] DoMethod( cWnd, cLbl, "Refresh" ) NEXT RETURN Nil //////////////////////////////////////////////////////////////// #pragma BEGINDUMP #include <windows.h> #include "hbapi.h" HB_FUNC( GETCLIENTWIDTH ) { RECT rect; GetClientRect( ( HWND ) hb_parnl(1), &rect ); hb_retni( ( INT ) rect.right - rect.left ); } HB_FUNC( GETCLIENTHEIGHT ) { RECT rect; GetClientRect( ( HWND ) hb_parnl(1), &rect ); hb_retni( ( INT ) rect.bottom - rect.top ); } #pragma ENDDUMP

gfilatov2002: Andrey пишет: Что тогда можно использовать ? Попробуй [pre2]FUNCTION IsWindowStyle( h, nStyle ) LOCAL nCtlStyle := GetWindowStyle( h ) RETURN( hb_bitAnd( nCtlStyle, nStyle ) != 0 ) [/pre2]

Andrey: gfilatov2002 пишет: Попробуй Спасибо БОЛЬШОЕ !

Vlad04: Если функцию sWindowStyle не добавлять, а закоментировать строку //lB := ! IsWindowStyle( h, WS_BORDER ) программа собирается и по внешнему виду не отличается. Операционка Win 7

Andrey: Vlad04 пишет: программа собирается и по внешнему виду не отличается. Там тогда у LABEL переопределить CLIENTEDGE и BORDER на лету нельзя будет....



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