Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 240839 (2275)

| Suchen
| Zurück zur Übersicht

Autor | Thema: Button selber belegen lassen
Gerald Krause
| Datum:29.09.02 16:03 (krause@gmx.de) |
ich möchte gerne wissen ob das geht,einen bottun in meinem programm selber vom benutzer belegen lassen ?? (seine lieblingsprogramm in meinem programm aufrufen kann) wenn ja wie mach ich sowas oder gibt es da schon beispiele??
Gerald Krause
| Datum:29.09.02 16:06 (krause@gmx.de) |
achso, ich benutze Profan 5.0
Florian May
| Datum:29.09.02 16:13 |
wenn du meinst, den namen des buttons vom benutzer festlegen zu lassen, würde ich die namen zuerst in die registry schreiben oder in einen stinknormale txt datei und bei start immer abfragen, bei ändernung einfach entpsrechned abändern........
Rolf Koch
| Datum:29.09.02 17:04 (webmaster@rokosoft.de) |
Hi, ja so wie Florian geschrieben hat - aber in eine Ini und nicht in die Registry ;) Hier mal ein schnelles Beispiel:
    '********************** HINWEISE ********************************
    ' CODE ERZEUGT MIT ROKO'S OBJECT CREATOR V 2.5
    ' DATUM  29.09.2002    um  16:33 Uhr

    PROC SCHREIBE
    'HIER NUN DAS ZUWEISEN DER BUTTONTEXTE
    'GILT NUR ALS BEISPIEL
    let button1$=@readini$("BUTTON.INI","BUTTON","NR1")
    let button2$=@readini$("BUTTON.INI","BUTTON","NR2")
    let button3$=@readini$("BUTTON.INI","BUTTON","NR3")
    case @neq$(button1$,""):settext button1%,button1$
    case @neq$(button2$,""):settext button2%,button2$
    case @neq$(button3$,""):settext button3%,button3$
    ENDPROC

    PROC EINGABE
    LET DLG&=CREATEDIALOG(%HWND,"Neue Buttontexte",100,115,487,183)
    LET DENDE%=0
    LET TEXT1% =@CREATETEXT(DLG&,"BUTTON 1",0031,0020,0070,0020)
    LET TEXT2% =@CREATETEXT(DLG&,"BUTTON 2",0031,0052,0070,0020)
    LET TEXT3% =@CREATETEXT(DLG&,"BUTTON 3",0031,0084,0070,0020)
    LET EDIT1% =@CREATEEDIT(DLG&,"",0128,0017,0318,0018)
    LET EDIT2% =@CREATEEDIT(DLG&,"",0128,0049,0316,0017)
    LET EDIT3% =@CREATEEDIT(DLG&,"",0129,0082,0316,0019)
    LET OK% =@CREATEBUTTON(DLG&,"OK",0375,0113,0069,0020)
    WHILENOT DENDE%
    WAITINPUT
       If @EQU(%KEY,2)
          LET DENDE%= 1

       ELSEIF @GETFOCUS(OK%) 'BUTTON
          WRITEINI "BUTTON.INI","BUTTON","NR1"=@gettext$(EDIT1%)
          WRITEINI "BUTTON.INI","BUTTON","NR2"=@gettext$(EDIT2%)
          WRITEINI "BUTTON.INI","BUTTON","NR3"=@gettext$(EDIT3%)
          @DESTROYWINDOW(DLG&)
          Let DENDE%=1
          SCHREIBE
       ENDIF
    WEND
    ENDPROC

    SETTRUECOLOR 1
    DECLARE ENDE%,zeile$
    DECLARE BUTTON1%,Button1$
    DECLARE BUTTON2%,Button2$
    DECLARE BUTTON3%,Button3$
    DECLARE BUTTON4%
    DECLARE BUTTON5%
    DECLARE DLG&,DENDE%
    DECLARE TEXT1%
    DECLARE TEXT2%
    DECLARE TEXT3%
    DECLARE EDIT1%
    DECLARE EDIT2%
    DECLARE EDIT3%
    DECLARE OK%
    WINDOWSTYLE 527
    WINDOW 22,20-640,199
    WINDOWTITLE "Buttons beschriften"
    CLS @RGB(212,208,200)
    USEFONT "MS Sans Serif",13,0,0,0,0
    SETDIALOGFONT 1

    ' Hier kann ggf. Ihr Menü hin

    LET BUTTON1% =CREATE("BUTTON",%HWND,"Leer",0010,0012,0617,0029)
    LET BUTTON2% =CREATE("BUTTON",%HWND,"Leer",0010,0047,0615,0025)
    LET BUTTON3% =CREATE("BUTTON",%HWND,"Leer",0010,0084,0615,0026)
    LET BUTTON4% =CREATE("BUTTON",%HWND,"Ende",360,0113,0125,0029)
    LET BUTTON5% =CREATE("BUTTON",%HWND,"Buttontext",0500,0113,0125,0029)
    SCHREIBE

    WHILENOT ENDE%
    WAITINPUT
       If @EQU(%KEY,2)
          LET ENDE%= 1
       ELSEIF @GETFOCUS(BUTTON5%)
          EINGABE
       ELSEIF @GETFOCUS(BUTTON4%) 'BUTTON
          LET ENDE%=1
       ENDIF
    WEND
Rolf
Gerald Krause
| Datum:29.09.02 19:56 (krause@gmx.de) |
mm ja so meinete ich das aber da bleibt noch das problemm wie jetzt der link zu seinem programm sich einfügt,so das es seine *.exe datei mit meinem programm starten kann wie mach ich das?? Profan 5.0
Rolf Koch
| Datum:29.09.02 20:37 (webmaster@rokosoft.de) |
Hi, In meinem Beispiel kann man nur den Text für die Buttons angeben. Wie wäre es, daneben auch eine Exe für jeden Buttontext anzugeben? Die jeweilige Exe schreibt man dann auch in die Ini. Beispiel:
    WRITEINI "BUTTON.INI","BUTTON","NR1"=@gettext$(EDIT1%)
    WRITEINI "BUTTON.INI","BUTTON","EXE1"=@gettext$(EXE1%)
    'Hier würde EXE1% ein Editfeld sein (halt wie Edit1%)
Nun brauchst Du nur noch in Deinem Programm die Buttons abzufragen:
    if @getfocus(Button1%)
       let exe1$=@readini$("BUTTON.INI","BUTTON","EXE1")
       WINEXEC(exe1$,3)
    elseif @getfocus(Button2%)
    '........
    endif
Bedeutet im Klartext: Jedem Buttontext muss auch eine Exe zugeordnet werden - also auch in diese Inidatei. Wenn nun in dem jeweiligen Abschnitt was drinsteht - also ein Exe incl. Pfad, so wird diese Exe ausgeführt wenn man auf den Button klickt - wenn nix drinsteht passiert nichts. Hoffe ich hab mich verständlich ausgedrückt. Rolf
Rolf Koch
| Datum:29.09.02 21:18 (webmaster@rokosoft.de) |
Ok, hier nochmal eine verbesserte und erweiterte Version.
    '********************** HINWEISE ********************************
    ' CODE ERZEUGT MIT ROKO'S OBJECT CREATOR V 2.5
    ' DATUM  29.09.2002    um  16:33 Uhr

    PROC SCHREIBE
    'HIER NUN DAS ZUWEISEN DER BUTTONTEXTE
    'GILT NUR ALS BEISPIEL
    let button1$=@readini$("BUTTON.INI","BUTTON","NR1")
    let button2$=@readini$("BUTTON.INI","BUTTON","NR2")
    let button3$=@readini$("BUTTON.INI","BUTTON","NR3")
    case @neq$(button1$,""):settext button1%,button1$
    case @neq$(button2$,""):settext button2%,button2$
    case @neq$(button3$,""):settext button3%,button3$
    ENDPROC

    PROC EINGABE
    LET DLG&=CREATEDIALOG(%HWND,"Neue Buttontexte",100,115,487,183)
    LET DENDE%=0
    @CREATETEXT(DLG&,"TEXT 1",0031,0020,0070,0020)
    @CREATETEXT(DLG&,"TEXT 2",0031,0052,0070,0020)
    @CREATETEXT(DLG&,"TEXT 3",0031,0084,0070,0020)
    @CREATETEXT(DLG&,"EXE 1",0350,0020,0070,0020)
    @CREATETEXT(DLG&,"EXE 2",0350,0052,0070,0020)
    @CREATETEXT(DLG&,"EXE 3",0350,0084,0070,0020)
    LET EDIT1% =@CREATEEDIT(DLG&,"",088,0017,0216,0018)
    LET EDIT2% =@CREATEEDIT(DLG&,"",088,0049,0216,0017)
    LET EDIT3% =@CREATEEDIT(DLG&,"",088,0082,0216,0019)
    let exe1%=@CREATEBUTTON(DLG&,"...",0385,015,0040,0020)
    let exe2%=@CREATEBUTTON(DLG&,"...",0385,050,0040,0020)
    let exe3%=@CREATEBUTTON(DLG&,"...",0385,080,0040,0020)
    LET OK% =@CREATEBUTTON(DLG&,"OK",0375,0113,0069,0020)
    WHILENOT DENDE%
    WAITINPUT
       If @EQU(%KEY,2)
          LET DENDE%= 1

       Elseif @getfocus(exe1%)
          let datei$=@LOADFILE$("ÖFFNE:","*.EXE")
          if @neq$(datei$,"")
             WRITEINI "BUTTON.INI","BUTTON","EXE1"=datei$
          endif

       Elseif @getfocus(exe2%)
          let datei$=@LOADFILE$("ÖFFNE:","*.EXE")
          if @neq$(datei$,"")
             WRITEINI "BUTTON.INI","BUTTON","EXE2"=datei$
          endif

       Elseif @getfocus(exe3%)
          let datei$=@LOADFILE$("ÖFFNE:","*.EXE")
          if @neq$(datei$,"")
             WRITEINI "BUTTON.INI","BUTTON","EXE3"=datei$
          endif

       ELSEIF @GETFOCUS(OK%) 'BUTTON
          case @neq$(@gettext$(edit1%),""):WRITEINI "BUTTON.INI","BUTTON","NR1"=@gettext$(EDIT1%)
          case @neq$(@gettext$(edit2%),""):WRITEINI "BUTTON.INI","BUTTON","NR2"=@gettext$(EDIT2%)
          case @neq$(@gettext$(edit3%),""):WRITEINI "BUTTON.INI","BUTTON","NR3"=@gettext$(EDIT3%)
          @DESTROYWINDOW(DLG&)
          Let DENDE%=1
          SCHREIBE
       ENDIF
    WEND
    ENDPROC

    SETTRUECOLOR 1
    DECLARE ENDE%,zeile$
    DECLARE BUTTON1%,Button1$
    DECLARE BUTTON2%,Button2$
    DECLARE BUTTON3%,Button3$
    DECLARE BUTTON4%,exe1%,exe2%,exe3%
    DECLARE BUTTON5%,datei$
    DECLARE DLG&,DENDE%,run$
    DECLARE TEXT1%
    DECLARE TEXT2%
    DECLARE TEXT3%
    DECLARE EDIT1%
    DECLARE EDIT2%
    DECLARE EDIT3%
    DECLARE OK%
    WINDOWSTYLE 527
    WINDOW 22,20-640,199
    WINDOWTITLE "Buttons beschriften"
    CLS @RGB(212,208,200)
    USEFONT "MS Sans Serif",13,0,0,0,0
    SETDIALOGFONT 1

    ' Hier kann ggf. Ihr Menü hin

    LET BUTTON1% =CREATE("BUTTON",%HWND,"Leer",0010,0012,0617,0029)
    LET BUTTON2% =CREATE("BUTTON",%HWND,"Leer",0010,0047,0615,0025)
    LET BUTTON3% =CREATE("BUTTON",%HWND,"Leer",0010,0084,0615,0026)
    LET BUTTON4% =CREATE("BUTTON",%HWND,"Ende",360,0113,0125,0029)
    LET BUTTON5% =CREATE("BUTTON",%HWND,"Buttontext",0500,0113,0125,0029)
    SCHREIBE

    WHILENOT ENDE%
    WAITINPUT
       If @EQU(%KEY,2)
          LET ENDE%= 1

       ELSEIF @getfocus(Button1%)
          run$=@readini$("BUTTON.INI","BUTTON","EXE1")
          case @neq$(run$,""):Winexec(run$,1)
       ELSEIF @getfocus(Button2%)
          run$=@readini$("BUTTON.INI","BUTTON","EXE2")
          case @neq$(run$,""):Winexec(run$,1)
       ELSEIF @getfocus(Button3%)
          run$=@readini$("BUTTON.INI","BUTTON","EXE3")
          case @neq$(run$,""):Winexec(run$,1)

       ELSEIF @GETFOCUS(BUTTON5%)
          EINGABE
       ELSEIF @GETFOCUS(BUTTON4%) 'BUTTON
          LET ENDE%=1
       ENDIF
    WEND
Hoffe nun ist alles klar ;) Rolf
Gerald Krause
| Datum: 29.09.02 21:51 (krause@gmx.de) |
bedanke mich bei allen für ihre hilfe !!! besonders Rolf Koch ihr seid echt SUPER !!! DANKE

| Zurück zur Übersicht