Italia
Foro

Buttonclick abfragen auf doppeltem Tabcontrol

 

Stephan
Sonneborn
Hallo Zusammen,

hat jemand einen Tip per mich, wie ich die Buttons RESET und ARTIKEL SUCHEN abfragen kann?
KompilierenMarkierenSeparieren
'***************************************************************************************************
'* Programmname: BOMGenerator                                                                      *
'* Version     : 1.00                                                                              *
'* Stand       : 05.02.2011                                                                        *
'* Änderung    :                                                                                   *
'**************************************************************+************************************
'***************************************************************************************************
' Schalter setzen                                                                                  *
'***************************************************************************************************
SET ("TRUECOLOR"  , 1)
SET ("AUTOPAINT"  , 2)
SET ("MESSAGEMODE", 1)
SET ("FASTMODE"   , 0)
 $IFDEF Interpreter
SET ("DEBUGMODE"  , 1)
SET ("ERRORLEVEL" , 1)
 $ELSE
SET ("DEBUGMODE"  , 0)
SET ("ERRORLEVEL" , 0)
 $ENDIF
'***************************************************************************************************
'***************************************************************************************************
' Header-Dateien laden                                                                             *
'***************************************************************************************************
 $H WINDOWS.PH
 $H COMMCTRL.PH
'***************************************************************************************************
'***************************************************************************************************
' Include-Dateien laden                                                                            *
'***************************************************************************************************
'***************************************************************************************************
'***************************************************************************************************
'* Eigene Funktionen                                                                               *
'***************************************************************************************************
DEF CreateTextL(6)  CONTROL("STATIC",@$(2),$50000200,@%(3),@%(4),@%(5),@%(6),@%(1),100, %HInstance, $0000)
DEF CreateTextC(6)  CONTROL("STATIC",@$(2),$50000201,@%(3),@%(4),@%(5),@%(6),@%(1),101, %HInstance, $0000)
DEF CreateTextR(6)  CONTROL("STATIC",@$(2),$50000202,@%(3),@%(4),@%(5),@%(6),@%(1),102, %HInstance, $0000)
DEF CreateTextTL(6) CONTROL("STATIC",@$(2),$50001300,@%(3),@%(4),@%(5),@%(6),@%(1),103, %HInstance, $0000)
DEF CreateTextTC(6) CONTROL("STATIC",@$(2),$50001301,@%(3),@%(4),@%(5),@%(6),@%(1),104, %HInstance, $0000)
DEF CreateTextTR(6) CONTROL("STATIC",@$(2),$50001302,@%(3),@%(4),@%(5),@%(6),@%(1),105, %HInstance, $0000)
DEF CreateEditL(6)  CONTROL("EDIT"  ,@$(2),$50000000,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
DEF CreateEditC(6)  CONTROL("EDIT"  ,@$(2),$50000001,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
DEF CreateEditR(6)  CONTROL("EDIT"  ,@$(2),$50000002,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
'*-------------------------------------------------------------------------------------------------*
DEF MIN(2) IF(@&(1) <= @&(2), @&(1), @&(2))
DEF MAX(2) IF(@&(1) >  @&(2), @&(1), @&(2))
'*-------------------------------------------------------------------------------------------------*
DEF SetwindowTheme(3) !"uxtheme.dll", "SetWindowTheme"
DEF BringWindowToTop(1) !"user32", "BringWindowToTop"
DEF GetSysColor(1) !"USER32","GetSysColor"
'*-------------------------------------------------------------------------------------------------*
'***************************************************************************************************
'* Globale Variablen                                                                               *
'***************************************************************************************************
DECLARE FlashBitmap&, FlashBitmapX%, FlashBitmapY%, SplashScreen&, Progressbar&[2]
DECLARE SearchPath$, IniFile$, PRGName$, Version$
DECLARE ItemFile$[32,3], ItemFiles% , ItemFilePath$, LastBOMPos&
DECLARE Column$[32], Columns%
DECLARE DLG&, HPic&, Pic& , Statusline&
DECLARE TabControl0&, TabCtl0&[2], TabControl&, TabCtl&[32], Gridbox&[2,32]
DECLARE Groupbox&[2,32], Text&[2,32,12], Edit&[2,32,12], Button&[2,32,12], Choicebox&[2,32,4]
DECLARE Excel&, Workbooks&, ExcelWnd&, ExcelBook&, ExcelSheet&, ExcelSheet$, ExcelSheetLines&
DECLARE Range&
DECLARE Font&[20], FontHeight%[2]
DECLARE LVDLL&, ImageList&
'***************************************************************************************************
ItemFile$[1, 1] = "Tab 1"
ItemFile$[2, 1] = "Tab 2"
ItemFile$[3, 1] = "Tab 3"
ItemFile$[4, 1] = "Tab 4"
ItemFile$[5, 1] = "Tab 5"
PrGName$ = "Demo"
'***************************************************************************************************
'* Prozeduren                                                                                      *
'***************************************************************************************************
'*-------------------------------------------------------------------------------------------------*
'* XP-Manifest für einzelne Controls abschalten                                                    *
'*-------------------------------------------------------------------------------------------------*

PROC DisableXPTheme

    '*-------------------------------------------------------------------------------------------------*
    PARAMETERS Hwnd&
    '*-------------------------------------------------------------------------------------------------*
    DECLARE Word#
    DIM Word#, 2
    SetwindowTheme(Hwnd&, Word#, Word#)
    DISPOSE Word#

ENDPROC

'*-------------------------------------------------------------------------------------------------*
'************************************************************************************************
' Benutzerdialog                                                                                *
'************************************************************************************************

PROC Dialog

    DECLARE Dialogende% ,aux$, aux%, aux&, dx%, dy%, LastTab%
    DECLARE Zeilen&, Zeile&, Zeile$, Found&
    DECLARE LVItemText#, LVHandle&, SW#, DblClk&
    DECLARE SuchBegriff$[6]
    '*-------------------------------------------------------------------------------------------------*
    DIM LVItemText#, 16384
    DIM SW#        , 9*4
    '*-------------------------------------------------------------------------------------------------*
    '*-------------------------------------------------------------------------------------------------*
    'Dialogbox:
    '*-------------------------------------------------------------------------------------------------*
    dx% = %MAXX
    dy% = %MAXY
    DLG&       = %HWND'CREATE("DIALOG"      , %HWND,PrgName$ ,0,0,0,0)
    '*-------------------------------------------------------------------------------------------------*
    ' Statuszeile:
    LONG SW#, 0 = 050, 650, 700, 775, 825, 875, 925, dx%-1
    Statusline& = CREATE("STATUSWINDOW", DLG& , "", 9, SW#)
    SETTEXT Statusline&, 0, "Datei:"
    SETTEXT Statusline&, 2, "Stand:"
    SETTEXT Statusline&, 4, "Artikel:"
    SETTEXT Statusline&, 6, "Treffer:"
    SHOWWINDOW(DLG&, 0)
    '*-------------------------------------------------------------------------------------------------*
    USEFONT "MS Sans Serif",13,0,0,0,0
    SETDIALOGFONT 1
    '*-------------------------------------------------------------------------------------------------*
    ' Aktuelle Stückliste:
    GROUPBOX&[0,1] = CREATE("GROUPBOX", DLG&, "Aktuelle Stückliste",015,010,(dx% - %BMPX - 050),055)
    BUTTON&[0,1]   = CREATE("BUTTON",   DLG&, "wählen"             ,(dx% - %BMPX - 130),027,080,030)
    EDIT&[0,0]     = CREATE("EDIT",     DLG&, ""                   ,030,030,WIDTH(GROUPBOX&[0,1])-125,025)
    CREATE("TOOLTIP", DLG&, Edit&[0,0],   "Geben Sie hier den Namen (inkl. Pfad) \nder zu \
    bearbeitenden Stückliste an.")
    CREATE("TOOLTIP", DLG&, Button&[0,1], "Klicken Sie hier, um die zu \nbearbeitende Stückliste \
    auszuwählen.")
    '*-------------------------------------------------------------------------------------------------*
    ' Haupttabcontrol:
    TabControl0&   = CREATE("TABCTRL",  DLG&, "Stückliste", 015, 075, dx% - 40, dy% - 075)
    INSERTTAB(TabControl0&,1,"Artikelliste")
    DisableXPTheme(TabControl0&)

    WHILELOOP 2

        TabCtl0&[&LOOP]    = CONTROL("DIALOG","", $40081003,2,25,WIDTH(TabControl0&)-5, HEIGHT(TabControl0&)-29,TabControl0&,0,%HINSTANCE)
        SHOWWINDOW(TabCtl0&[&LOOP],0)

    WEND

    SHOWWINDOW(TabCtl0&[2],1)
    '*-------------------------------------------------------------------------------------------------*
    'Stücklistentab:
    '*-------------------------------------------------------------------------------------------------*
    'Artikellistentab - Groupbox 1:
    GROUPBOX&[2,0] = CREATE("GROUPBOX"  , TabCtl0&[2],"Aktueller Artikel", 015,010,(WIDTH(TabCtl0&[2]) - 30),075)
    TEXT&[2,0,1]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Pos."         , 015,018,030,017)
    TEXT&[2,0,2]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Menge"        , 055,018,035,017)
    TEXT&[2,0,3]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Korr."        , 095,018,035,017)
    TEXT&[2,0,4]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Einh."        , 135,018,030,017)
    TEXT&[2,0,5]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Benennung 1"  , 175,018,150,017)
    TEXT&[2,0,6]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Benennung 2"  , 435,018,150,017)
    TEXT&[2,0,7]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Norm"         , 695,018,100,017)
    TEXT&[2,0,8]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Werkstoff"    , 805,018,100,017)
    TEXT&[2,0,9]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Artikel-Nr."  , 915,018,080,017)
    TEXT&[2,0,10]  =   CREATE("TEXT"    , GROUPBOX&[2,0], "Gewicht"      ,1005,018,080,017)
    EDIT&[2,0,1]   = CreateEditR (TabCtl0&[2]   , ""                     , 030,050,030,025)
    EDIT&[2,0,2]   = CreateEditR (TabCtl0&[2]   , ""                     , 070,050,030,025)
    EDIT&[2,0,3]   = CreateEditR (TabCtl0&[2]   , ""                     , 110,050,030,025)
    EDIT&[2,0,4]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 135,039,030,025)
    EDIT&[2,0,5]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 175,039,250,025)
    EDIT&[2,0,6]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 435,039,250,025)
    EDIT&[2,0,7]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 695,039,100,025)
    EDIT&[2,0,8]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 805,039,100,025)
    EDIT&[2,0,9]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 915,039,080,025)
    EDIT&[2,0,10]  = CreateTextTL(GROUPBOX&[2,0], ""                     ,1005,039,080,025)
    BUTTON&[2,0,1] =   CREATE("BUTTON", TabCtl0&[2], "übergeben"         ,WIDTH(TabCtl0&[2])-190,045,160,030)
    CREATE("TOOLTIP", DLG&, Edit&[2,0,1]  , "Geben Sie hier die Positionszahl in \nder zu \
    bearbeitenden Stückliste an.")
    CREATE("TOOLTIP", DLG&, Edit&[2,0,2]  , "Geben Sie hier die Menge je Einheit an.")
    CREATE("TOOLTIP", DLG&, Edit&[2,0,3]  , "Geben Sie hier die Korrekturmenge je Einheit an.")
    CREATE("TOOLTIP", DLG&, Button&[2,0,2], "Klicken Sie hier, um den Artikel an die \nbearbeitende \
    Stückliste anzufügen.")
    '*-------------------------------------------------------------------------------------------------*
    'Artikellistentab - TabControl:
    WINDOWSTYLE 80
    TabControl&  =   CREATE("TABCTRL"  , TabCtl0&[2], ItemFile$[1,1], 015, 100, (WIDTH(TabCtl0&[2]) - 30), dy%-300)
    TabCtl&[1]   =   CREATE("WINDOW", TabControl&, "", 2,25,WIDTH(TabControl&)-5, HEIGHT(TabControl&)-29)
    EXTERNAL("user32","SetParent",TabCtl&[1],TabControl&)

    WHILELOOP 2, 5

        INSERTTAB(TabControl&, &LOOP, ItemFile$[&LOOP, 1])
        TabCtl&[&LOOP] = CREATE("WINDOW", TabControl&,"", 2,25,WIDTH(TabControl&)-5, HEIGHT(TabControl&)-29)
        EXTERNAL("user32","SetParent",TabCtl&[&LOOP],TabControl&)
        SHOWWINDOW(TabCtl&[&LOOP],0)

    WEND

    SHOWWINDOW(TabCtl&[1],1)
    DisableXPTheme(TabControl&)
    '*-------------------------------------------------------------------------------------------------*
    'Artikellistentab - Groupbox 2:

    WHILELOOP 1, 5

        '*-------------------------------------------------------------------------------------------------*
        GROUPBOX&[2,&LOOP]  = CREATE("GROUPBOX" ,TabCtl&[&LOOP]    ,"Artikelsuche"     ,015,010,(WIDTH(TabCtl&[&LOOP]) -030),075)
        TEXT&[2,&LOOP,1]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Suchbegriff:"     ,015,018,180,020)
        TEXT&[2,&LOOP,2]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Nennmaß:"         ,205,018,090,020)
        TEXT&[2,&LOOP,3]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Länge:"           ,305,018,090,020)
        TEXT&[2,&LOOP,4]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Norm:"            ,405,018,120,020)
        TEXT&[2,&LOOP,5]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Werkstoff:"       ,535,018,120,020)
        TEXT&[2,&LOOP,6]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Kategorie:"       ,665,018,120,020)
        EDIT&[2,&LOOP,1]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,015,040,180,100)
        EDIT&[2,&LOOP,2]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,205,040,090,100)
        EDIT&[2,&LOOP,3]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,305,040,090,100)
        EDIT&[2,&LOOP,4]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,405,040,120,100)
        EDIT&[2,&LOOP,5]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,535,040,120,100)
        EDIT&[2,&LOOP,6]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,665,040,120,100)

    WEND

    '*-------------------------------------------------------------------------------------------------*
    BUTTON&[2,0,2]    = CREATE("BUTTON",TabControl&,"Artikel finden..."            ,875,060,100,030)
    BUTTON&[2,0,3]    = CREATE("BUTTON",TabControl&,"Reset"                        ,1075,060,050,030)
    CREATE("TOOLTIP", DLG&, Button&[2,0,2], "Klicken Sie hier, um Artikel zu finden.")
    CREATE("TOOLTIP", DLG&, Button&[2,0,3], "Klicken Sie hier, um die Suchkriterien zu löschen.")
    '*-------------------------------------------------------------------------------------------------*
    '*-------------------------------------------------------------------------------------------------*
    SETWINDOWPOS DLG& = (%MAXX-dx%)/2,(%MAXY-dy%)/2 - dx%,dy%; 0
    SETWINDOWPOS StatusLine& = 0,0-0,0;0
    SHOWWINDOW(DLG&, 1)
    '*-------------------------------------------------------------------------------------------------*
    SETFOCUS(DLG&)
    Dialogende% = 0
    '*-------------------------------------------------------------------------------------------------*

    WHILENOT Dialogende%

        '-----------------------------------------------------------------------------------------------'
        '   Reiter im TabControl0& gewechselt

        WHILELOOP 2

            SHOWWINDOW(TabCtl0&[&LOOP], GETACTIVETAB(TabControl0&) = (&LOOP-1))

        WEND

        '-----------------------------------------------------------------------------------------------'
        '   Reiter im TabControl& gewechselt

        WHILELOOP ItemFiles%

            SHOWWINDOW(TabCtl&[&LOOP], GETACTIVETAB(TabControl&) = (&LOOP-1))

        WEND

        '*-------------------------------------------------------------------------------------------------*
        WAITINPUT
        '*-------------------------------------------------------------------------------------------------*
        '*-------------------------------------------------------------------------------------------------*

        IF (%KEY = 2)'Beenden

            Dialogende% = 2
            '*-------------------------------------------------------------------------------------------------*

        ELSEIF CLICKED(BUTTON&[2,0,3])'Reset

            MESSAGEBOX(PRGName$, "Reset", 0)
            '*-------------------------------------------------------------------------------------------------*

        ELSEIF CLICKED(BUTTON&[0,1])'Stückliste wählen

            aux$ = LOADFILE$("Bitte Stückliste wählen:", SearchPath$ + "*.xls")

            IF aux$ <> ""

                SETTEXT Edit&[0,0], aux$
                SearchPath$ = SUBSTR$(aux$, 1, SUBSTR$(aux$, -1, "\\"))
                WRITEINI IniFile$, "OPTIONS", "SearchPath" = SearchPath$

            ENDIF

            '*-------------------------------------------------------------------------------------------------*

        ENDIF

        '*-------------------------------------------------------------------------------------------------*

    ENDWHILE

    '*-------------------------------------------------------------------------------------------------*
    DISPOSE LVItemText#
    DISPOSE SW#
    '*-------------------------------------------------------------------------------------------------*
    DESTROYWINDOW(DLG&)
    '*-------------------------------------------------------------------------------------------------*

ENDPROC

'*-------------------------------------------------------------------------------------------------*
'***************************************************************************************************
' Hauptprogramm                                                                                    *
'***************************************************************************************************
 $IFDEF Interpreter
WINDOWSTYLE (1 | 2 | 8 | 16 | 512)
WINDOW 0,0-%MAXX,%MAXY
CLS GETSYSCOLOR(15)
 $ELSE
WINDOWSTYLE (1 | 2 | 8 | 16 | 512)
WINDOW 0,0-%MAXX,%MAXY
SHOWWINDOW(%HWND,0)
font color="#ff8800"> $ENDIF
'+-------------------------------------------------------------------------------------------------+
Dialog
END

Hab schon diverse Lösungen hier im Foro probiert. Muss ich die Buttons tatsächlich auf %HWND legen? Dann kann ich sie nicht dort positionieren, wo sie jetzt sind...
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
25.02.2011  
 



Ich kann die Buttons weder mit der Maus noch mit der Tastatur erreichen -

die Controls lassen sich scheinbar so nicht bedienen.

So lässt sich naturalmente auch nicht testen ob bm_setState z.B. als UserMessage ankommt.

Vermutlich klaust Du die Messages dadurch das Du SetParent(TabCtl&[1],TabControl&) anwendest.

Ich glaube da hilft nur die Controls neu aufzubauen/ anzuordnen.
 
25.02.2011  
 




Stephan
Sonneborn
iF (25.02.11)
Vermutlich klaust Du die Messages dadurch das Du SetParent(TabCtl&,TabControl&) anwendest.


Das hatte ich hier [...]  gelesen (Dein Beitrag vom 05.10.05/ 19:27)

Ursprünglich hatte ichs so:
KompilierenMarkierenSeparieren
'***************************************************************************************************
'* Programmname: BOMGenerator                                                                      *
'* Version     : 1.00                                                                              *
'* Stand       : 05.02.2011                                                                        *
'* Änderung    :                                                                                   *
'**************************************************************+************************************
'***************************************************************************************************
' Schalter setzen                                                                                  *
'***************************************************************************************************
SET ("TRUECOLOR"  , 1)
SET ("AUTOPAINT"  , 2)
SET ("MESSAGEMODE", 1)
SET ("FASTMODE"   , 0)
 $IFDEF Interpreter
SET ("DEBUGMODE"  , 1)
SET ("ERRORLEVEL" , 1)
 $ELSE
SET ("DEBUGMODE"  , 0)
SET ("ERRORLEVEL" , 0)
 $ENDIF
'***************************************************************************************************
'***************************************************************************************************
' Header-Dateien laden                                                                             *
'***************************************************************************************************
 $H WINDOWS.PH
 $H COMMCTRL.PH
'***************************************************************************************************
'***************************************************************************************************
' Include-Dateien laden                                                                            *
'***************************************************************************************************
'***************************************************************************************************
'***************************************************************************************************
'* Eigene Funktionen                                                                               *
'***************************************************************************************************
DEF CreateTextL(6)  CONTROL("STATIC",@$(2),$50000200,@%(3),@%(4),@%(5),@%(6),@%(1),100, %HInstance, $0000)
DEF CreateTextC(6)  CONTROL("STATIC",@$(2),$50000201,@%(3),@%(4),@%(5),@%(6),@%(1),101, %HInstance, $0000)
DEF CreateTextR(6)  CONTROL("STATIC",@$(2),$50000202,@%(3),@%(4),@%(5),@%(6),@%(1),102, %HInstance, $0000)
DEF CreateTextTL(6) CONTROL("STATIC",@$(2),$50001300,@%(3),@%(4),@%(5),@%(6),@%(1),103, %HInstance, $0000)
DEF CreateTextTC(6) CONTROL("STATIC",@$(2),$50001301,@%(3),@%(4),@%(5),@%(6),@%(1),104, %HInstance, $0000)
DEF CreateTextTR(6) CONTROL("STATIC",@$(2),$50001302,@%(3),@%(4),@%(5),@%(6),@%(1),105, %HInstance, $0000)
DEF CreateEditL(6)  CONTROL("EDIT"  ,@$(2),$50000000,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
DEF CreateEditC(6)  CONTROL("EDIT"  ,@$(2),$50000001,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
DEF CreateEditR(6)  CONTROL("EDIT"  ,@$(2),$50000002,@%(3),@%(4),@%(5),@%(6),@%(1),106, %HInstance, $0200)
'*-------------------------------------------------------------------------------------------------*
DEF MIN(2) IF(@&(1) <= @&(2), @&(1), @&(2))
DEF MAX(2) IF(@&(1) >  @&(2), @&(1), @&(2))
'*-------------------------------------------------------------------------------------------------*
DEF SetwindowTheme(3) !"uxtheme.dll", "SetWindowTheme"
DEF BringWindowToTop(1) !"user32", "BringWindowToTop"
DEF GetSysColor(1) !"USER32","GetSysColor"
'*-------------------------------------------------------------------------------------------------*
'***************************************************************************************************
'* Globale Variablen                                                                               *
'***************************************************************************************************
DECLARE FlashBitmap&, FlashBitmapX%, FlashBitmapY%, SplashScreen&, Progressbar&[2]
DECLARE SearchPath$, IniFile$, PRGName$, Version$
DECLARE ItemFile$[32,3], ItemFiles% , ItemFilePath$, LastBOMPos&
DECLARE Column$[32], Columns%
DECLARE DLG&, HPic&, Pic& , Statusline&
DECLARE TabControl0&, TabCtl0&[2], TabControl&, TabCtl&[32], Gridbox&[2,32]
DECLARE Groupbox&[2,32], Text&[2,32,12], Edit&[2,32,12], Button&[2,32,12], Choicebox&[2,32,4]
DECLARE Excel&, Workbooks&, ExcelWnd&, ExcelBook&, ExcelSheet&, ExcelSheet$, ExcelSheetLines&
DECLARE Range&
DECLARE Font&[20], FontHeight%[2]
DECLARE LVDLL&, ImageList&
'***************************************************************************************************
ItemFile$[1, 1] = "Tab 1"
ItemFile$[2, 1] = "Tab 2"
ItemFile$[3, 1] = "Tab 3"
ItemFile$[4, 1] = "Tab 4"
ItemFile$[5, 1] = "Tab 5"
PrGName$ = "Demo"
'***************************************************************************************************
'* Prozeduren                                                                                      *
'***************************************************************************************************
'*-------------------------------------------------------------------------------------------------*
'* XP-Manifest für einzelne Controls abschalten                                                    *
'*-------------------------------------------------------------------------------------------------*

PROC DisableXPTheme

    '*-------------------------------------------------------------------------------------------------*
    PARAMETERS Hwnd&
    '*-------------------------------------------------------------------------------------------------*
    DECLARE Word#
    DIM Word#, 2
    SetwindowTheme(Hwnd&, Word#, Word#)
    DISPOSE Word#

ENDPROC

'*-------------------------------------------------------------------------------------------------*
'************************************************************************************************
' Benutzerdialog                                                                                *
'************************************************************************************************

PROC Dialog

    DECLARE Dialogende% ,aux$, aux%, aux&, dx%, dy%, LastTab%
    DECLARE Zeilen&, Zeile&, Zeile$, Found&
    DECLARE LVItemText#, LVHandle&, SW#, DblClk&
    DECLARE SuchBegriff$[6]
    '*-------------------------------------------------------------------------------------------------*
    DIM LVItemText#, 16384
    DIM SW#        , 9*4
    '*-------------------------------------------------------------------------------------------------*
    '*-------------------------------------------------------------------------------------------------*
    'Dialogbox:
    '*-------------------------------------------------------------------------------------------------*
    dx% = %MAXX
    dy% = %MAXY
    DLG&       = %HWND'CREATE("DIALOG"      , %HWND,PrgName$ ,0,0,0,0)
    '*-------------------------------------------------------------------------------------------------*
    ' Statuszeile:
    LONG SW#, 0 = 050, 650, 700, 775, 825, 875, 925, dx%-1
    Statusline& = CREATE("STATUSWINDOW", DLG& , "", 9, SW#)
    SETTEXT Statusline&, 0, "Datei:"
    SETTEXT Statusline&, 2, "Stand:"
    SETTEXT Statusline&, 4, "Artikel:"
    SETTEXT Statusline&, 6, "Treffer:"
    SHOWWINDOW(DLG&, 0)
    '*-------------------------------------------------------------------------------------------------*
    USEFONT "MS Sans Serif",13,0,0,0,0
    SETDIALOGFONT 1
    '*-------------------------------------------------------------------------------------------------*
    ' Aktuelle Stückliste:
    GROUPBOX&[0,1] = CREATE("GROUPBOX", DLG&, "Aktuelle Stückliste",015,010,(dx% - %BMPX - 050),055)
    BUTTON&[0,1]   = CREATE("BUTTON",   DLG&, "wählen"             ,(dx% - %BMPX - 130),027,080,030)
    EDIT&[0,0]     = CREATE("EDIT",     DLG&, ""                   ,030,030,WIDTH(GROUPBOX&[0,1])-125,025)
    CREATE("TOOLTIP", DLG&, Edit&[0,0],   "Geben Sie hier den Namen (inkl. Pfad) \nder zu \
    bearbeitenden Stückliste an.")
    CREATE("TOOLTIP", DLG&, Button&[0,1], "Klicken Sie hier, um die zu \nbearbeitende Stückliste \
    auszuwählen.")
    '*-------------------------------------------------------------------------------------------------*
    ' Haupttabcontrol:
    TabControl0&   = CREATE("TABCTRL",  DLG&, "Stückliste", 015, 075, dx% - 40, dy% - 075)
    INSERTTAB(TabControl0&,1,"Artikelliste")
    DisableXPTheme(TabControl0&)

    WHILELOOP 2

        TabCtl0&[&LOOP]    = CONTROL("DIALOG","", $40081003,2,25,WIDTH(TabControl0&)-5, HEIGHT(TabControl0&)-29,TabControl0&,0,%HINSTANCE)
        SHOWWINDOW(TabCtl0&[&LOOP],0)

    WEND

    SHOWWINDOW(TabCtl0&[2],1)
    '*-------------------------------------------------------------------------------------------------*
    'Stücklistentab:
    '*-------------------------------------------------------------------------------------------------*
    'Artikellistentab - Groupbox 1:
    GROUPBOX&[2,0] = CREATE("GROUPBOX"  , TabCtl0&[2],"Aktueller Artikel", 015,010,(WIDTH(TabCtl0&[2]) - 30),075)
    TEXT&[2,0,1]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Pos."         , 015,018,030,017)
    TEXT&[2,0,2]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Menge"        , 055,018,035,017)
    TEXT&[2,0,3]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Korr."        , 095,018,035,017)
    TEXT&[2,0,4]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Einh."        , 135,018,030,017)
    TEXT&[2,0,5]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Benennung 1"  , 175,018,150,017)
    TEXT&[2,0,6]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Benennung 2"  , 435,018,150,017)
    TEXT&[2,0,7]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Norm"         , 695,018,100,017)
    TEXT&[2,0,8]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Werkstoff"    , 805,018,100,017)
    TEXT&[2,0,9]   =   CREATE("TEXT"    , GROUPBOX&[2,0], "Artikel-Nr."  , 915,018,080,017)
    TEXT&[2,0,10]  =   CREATE("TEXT"    , GROUPBOX&[2,0], "Gewicht"      ,1005,018,080,017)
    EDIT&[2,0,1]   = CreateEditR (TabCtl0&[2]   , ""                     , 030,050,030,025)
    EDIT&[2,0,2]   = CreateEditR (TabCtl0&[2]   , ""                     , 070,050,030,025)
    EDIT&[2,0,3]   = CreateEditR (TabCtl0&[2]   , ""                     , 110,050,030,025)
    EDIT&[2,0,4]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 135,039,030,025)
    EDIT&[2,0,5]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 175,039,250,025)
    EDIT&[2,0,6]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 435,039,250,025)
    EDIT&[2,0,7]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 695,039,100,025)
    EDIT&[2,0,8]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 805,039,100,025)
    EDIT&[2,0,9]   = CreateTextTL(GROUPBOX&[2,0], ""                     , 915,039,080,025)
    EDIT&[2,0,10]  = CreateTextTL(GROUPBOX&[2,0], ""                     ,1005,039,080,025)
    BUTTON&[2,0,1] =   CREATE("BUTTON", TabCtl0&[2], "übergeben"         ,WIDTH(TabCtl0&[2])-190,045,160,030)
    CREATE("TOOLTIP", DLG&, Edit&[2,0,1]  , "Geben Sie hier die Positionszahl in \nder zu \
    bearbeitenden Stückliste an.")
    CREATE("TOOLTIP", DLG&, Edit&[2,0,2]  , "Geben Sie hier die Menge je Einheit an.")
    CREATE("TOOLTIP", DLG&, Edit&[2,0,3]  , "Geben Sie hier die Korrekturmenge je Einheit an.")
    CREATE("TOOLTIP", DLG&, Button&[2,0,2], "Klicken Sie hier, um den Artikel an die \nbearbeitende \
    Stückliste anzufügen.")
    '*-------------------------------------------------------------------------------------------------*
    'Artikellistentab - TabControl:
    WINDOWSTYLE 80
    TabControl&  =   CREATE("TABCTRL"  , TabCtl0&[2], ItemFile$[1,1], 015, 100, (WIDTH(TabCtl0&[2]) - 30), dy%-300)
    TabCtl&[1]   =   CONTROL("DIALOG","", $40081003, 2,25,WIDTH(TabControl&)-5, HEIGHT(TabControl&)-29,TabControl&,0,%HINSTANCE)
    'TabCtl&[1]   =   CREATE("WINDOW", TabControl&,"", 2,25,WIDTH(TabControl&)-5, HEIGHT(TabControl&)-29)
    'EXTERNAL("user32","SetParent",TabCtl&[1],TabControl&)

    WHILELOOP 2, 5

        INSERTTAB(TabControl&, &LOOP, ItemFile$[&LOOP, 1])
        TabCtl&[&LOOP] =CONTROL("DIALOG","", $40081003, 2,25,WIDTH(TabControl&)-5, HEIGHT(TabControl&)-29,TabControl&,0,%HINSTANCE)
        'TabCtl&[&LOOP] = CREATE("WINDOW", TabControl&,"", 2,25,WIDTH(TabControl&)-5, HEIGHT(TabControl&)-29)
        'EXTERNAL("user32","SetParent",TabCtl&[&LOOP],TabControl&)
        SHOWWINDOW(TabCtl&[&LOOP],0)

    WEND

    SHOWWINDOW(TabCtl&[1],1)
    DisableXPTheme(TabControl&)
    '*-------------------------------------------------------------------------------------------------*
    'Artikellistentab - Groupbox 2:

    WHILELOOP 1, 5

        '*-------------------------------------------------------------------------------------------------*
        GROUPBOX&[2,&LOOP]  = CREATE("GROUPBOX" ,TabCtl&[&LOOP]    ,"Artikelsuche"     ,015,010,(WIDTH(TabCtl&[&LOOP]) -030),075)
        TEXT&[2,&LOOP,1]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Suchbegriff:"     ,015,018,180,020)
        TEXT&[2,&LOOP,2]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Nennmaß:"         ,205,018,090,020)
        TEXT&[2,&LOOP,3]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Länge:"           ,305,018,090,020)
        TEXT&[2,&LOOP,4]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Norm:"            ,405,018,120,020)
        TEXT&[2,&LOOP,5]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Werkstoff:"       ,535,018,120,020)
        TEXT&[2,&LOOP,6]    = CREATE("TEXT"     ,GROUPBOX&[2,&LOOP],"Kategorie:"       ,665,018,120,020)
        EDIT&[2,&LOOP,1]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,015,040,180,100)
        EDIT&[2,&LOOP,2]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,205,040,090,100)
        EDIT&[2,&LOOP,3]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,305,040,090,100)
        EDIT&[2,&LOOP,4]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,405,040,120,100)
        EDIT&[2,&LOOP,5]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,535,040,120,100)
        EDIT&[2,&LOOP,6]    = CREATE("CHOICEBOX",GROUPBOX&[2,&LOOP],""                 ,665,040,120,100)

    WEND

    '*-------------------------------------------------------------------------------------------------*
    BUTTON&[2,0,2]    = CREATE("BUTTON",TabControl&,"Artikel finden..."            ,875,060,100,030)
    BUTTON&[2,0,3]    = CREATE("BUTTON",TabControl&,"Reset"                        ,1075,060,050,030)
    CREATE("TOOLTIP", DLG&, Button&[2,0,2], "Klicken Sie hier, um Artikel zu finden.")
    CREATE("TOOLTIP", DLG&, Button&[2,0,3], "Klicken Sie hier, um die Suchkriterien zu löschen.")
    '*-------------------------------------------------------------------------------------------------*
    '*-------------------------------------------------------------------------------------------------*
    SETWINDOWPOS DLG& = (%MAXX-dx%)/2,(%MAXY-dy%)/2 - dx%,dy%; 0
    SETWINDOWPOS StatusLine& = 0,0-0,0;0
    SHOWWINDOW(DLG&, 1)
    '*-------------------------------------------------------------------------------------------------*
    SETFOCUS(DLG&)
    Dialogende% = 0
    '*-------------------------------------------------------------------------------------------------*

    WHILENOT Dialogende%

        '-----------------------------------------------------------------------------------------------'
        '   Reiter im TabControl0& gewechselt

        WHILELOOP 2

            SHOWWINDOW(TabCtl0&[&LOOP], GETACTIVETAB(TabControl0&) = (&LOOP-1))

        WEND

        '-----------------------------------------------------------------------------------------------'
        '   Reiter im TabControl& gewechselt

        WHILELOOP ItemFiles%

            SHOWWINDOW(TabCtl&[&LOOP], GETACTIVETAB(TabControl&) = (&LOOP-1))

        WEND

        '*-------------------------------------------------------------------------------------------------*
        WAITINPUT
        '*-------------------------------------------------------------------------------------------------*
        '*-------------------------------------------------------------------------------------------------*

        IF (%KEY = 2)'Beenden

            Dialogende% = 2
            '*-------------------------------------------------------------------------------------------------*

        ELSEIF CLICKED(BUTTON&[2,0,3])'Reset

            MESSAGEBOX(PRGName$, "Reset", 0)
            '*-------------------------------------------------------------------------------------------------*

        ELSEIF CLICKED(BUTTON&[0,1])'Stückliste wählen

            aux$ = LOADFILE$("Bitte Stückliste wählen:", SearchPath$ + "*.xls")

            IF aux$ <> ""

                SETTEXT Edit&[0,0], aux$
                SearchPath$ = SUBSTR$(aux$, 1, SUBSTR$(aux$, -1, "\\"))
                WRITEINI IniFile$, "OPTIONS", "SearchPath" = SearchPath$

            ENDIF

            '*-------------------------------------------------------------------------------------------------*

        ENDIF

        '*-------------------------------------------------------------------------------------------------*

    ENDWHILE

    '*-------------------------------------------------------------------------------------------------*
    DISPOSE LVItemText#
    DISPOSE SW#
    '*-------------------------------------------------------------------------------------------------*
    DESTROYWINDOW(DLG&)
    '*-------------------------------------------------------------------------------------------------*

ENDPROC

'*-------------------------------------------------------------------------------------------------*
'***************************************************************************************************
' Hauptprogramm                                                                                    *
'***************************************************************************************************
 $IFDEF Interpreter
WINDOWSTYLE (1 | 2 | 8 | 16 | 512)
WINDOW 0,0-%MAXX,%MAXY
CLS GETSYSCOLOR(15)
 $ELSE
WINDOWSTYLE (1 | 2 | 8 | 16 | 512)
WINDOW 0,0-%MAXX,%MAXY
SHOWWINDOW(%HWND,0)
> $ENDIF
'+-------------------------------------------------------------------------------------------------+
Dialog
END
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
25.02.2011  
 



Teste mal ob es funktioniert wenn Du den Button auf solch Dialog setzt und den Dialog auf Dein Control:
KompilierenMarkierenSeparieren
cls
var h&=control("DIALOG","",ws_tabStop | ws_child | ws_visible | ws_clipSiblings | ws_clipChildren,0,0,96,24,%hWnd,0,%hInstance,0)
var b&=create("button",h&,"Test",0,0,width(h&),height(h&))

while 1

    waitinput
    case clicked(b&) : end

/a>

 
25.02.2011  
 




Thomas
Freier

Hab schon diverse Lösungen hier im Foro probiert. Muss ich die Buttons tatsächlich auf %HWND legen? Dann kann ich sie nicht dort positionieren, wo sie jetzt sind...


Nein und ja, aber wie die anderen Elemente auf den entsprechenden TabCtl&[&LOOP]
KompilierenMarkierenSeparieren
GROUPBOX&[2,&LOOP]  = CREATE("GROUPBOX" ,TabCtl&[&LOOP]    ,"Artikelsuche"     ,015,010,(WIDTH(TabCtl&[&LOOP]) -030),075)
>

und nicht
KompilierenMarkierenSeparieren
BUTTON&[2,0,2]    = CREATE("BUTTON",TabControl&,"Artikel finden..."            ,875,060,100,030)
>

und so wie ich es sehe auf:
KompilierenMarkierenSeparieren
BUTTON&[2,0,2]    = CREATE("BUTTON",TabCtl&[1],"Artikel finden..."            ,875,060,100,030)
BUTTON&[2,0,3]    = CREATE("BUTTON",TabCtl&[1],"Reset"                        ,1075,060,050,030)e>
 
Gruß Thomas
Windows XP SP2, XProfan X2
25.02.2011  
 




Stephan
Sonneborn
Hallo Thomas,

danke per den Tip. Ich werde wohl nicht drum herumkommen, auf jedes Tab die beiden Buttons zu legen.

Das wollte ich eigentlich vermeiden, da die dann ja auch alle einzeln abgefragt werden müssen. Und ich weiß im Voraus nicht, wieviele Tabs ich erstellen muss.
Die Choiceboxen werden nicht innerhalb des Ereignishandlers abgefragt, sondern nur auf ihren aktuellen Inhalt beim Suchen eines Artikels abgefragt. Diese Choiceboxen sollen auch auf jedem Tab separat erstellt werden, weil dann auch jedes Tab zu jeder Zeit unterschiedliche Suchkriterien behalten kann.

Ich muss mir dann eben mit einer Schleife im Ereignishandler helfen:
KompilierenMarkierenSeparieren
ELSEIF CLICKED(BUTTON&[2,GETACTIVETAB(TabControl&)+1,3])'Reset

WHILELOOP 6

    SELECTSTRING(Edit&[2, GETACTIVETAB(TabControl&)+1, &LOOP],-1, "")

W
>
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
26.02.2011  
 




Thomas
Freier
Naja, du kannst auch nur einen Button nehmen und dann den aktuellen Tab abfragen um die entsprechende Aktion ausführen zu lassen.
Die Button auf:
KompilierenMarkierenSeparieren
'*-------------------------------------------------------------------------------------------------*
CREATE("GROUPBOX"  , TabCtl0&[2],"", 1040,92,162,118)
BUTTON&[2,0,2]    = CREATE("BUTTON",TabCtl0&[2],"Artikel finden..."            ,1045,100,100,020)
BUTTON&[2,0,3]    = CREATE("BUTTON",TabCtl0&[2],"Reset"                        ,1145,100,050,020)
CREATE("TOOLTIP", DLG&, Button&[2,0,2], "Klicken Sie hier, um Artikel zu finden.")
CREATE("TOOLTIP", DLG&, Button&[2,0,3], "Klicken Sie hier, um die Suchkriterien zu löschen.")
'*-------------------------------------------------------------------------------------------------*<

und irgendwie dem 2. Tabcontrol optisch zuordenen. Habe auf die Schnelle eine "GROUPBOX" genommen. Wenn da ein "Control" wäre (STATIC mit Border?), dass wie ein Tabreiter aussieht, käme es wohl besser.

20 kB
Hochgeladen:26.02.2011
Downloadcounter74
Download
 
Gruß Thomas
Windows XP SP2, XProfan X2
26.02.2011  
 



[offtopic]@Stephan: Das Code-Tag hatte nicht funktioniert weil Du es mit
[\code statt
[/code geschlossen hattest ^^[/offtopic]
 
26.02.2011  
 




Stephan
Sonneborn
Hallo Thomas,

wenn ich die beiden Buttons oberhalb des Tabcontrols anordnen würde, könnten sie evtl. dann überlagert, wenn relativ viele Tabs angelegt werden müssten (z.Z. sind es 15).
Außerdem sind sie dann etwas aus dem Kontext Artikelsuche heraus.
Aber Dein erstes Posting hat mir weitergeholfen. Ich hab wohl den Wald vor lauter Bäumen nicht gesehn
 
Schöne Grüße aus Wittgenstein
von Stephan

Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz
27.02.2011  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

3.686 Views

Untitledvor 0 min.
RudiB.26.08.2022
H.Brill10.01.2019
Torsten Rümker02.06.2015
RICOSCH23.11.2014
Di più...

Themeninformationen



Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie