Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 241731 (3167)
  Suchen
 Zurück zur Übersicht
 AutorThema: Button selber belegen lassen
Gerald Krause
Datum:29.09.02 16:03 Antwortenals Email verschicken (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 Antwortenals Email verschicken (krause@gmx.de) 


achso, ich benutze Profan 5.0


Florian May
Datum:29.09.02 16:13 Antwortenals Email verschicken  


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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (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 Antwortenals Email verschicken (krause@gmx.de) 


bedanke mich bei allen für ihre hilfe !!! besonders Rolf Koch

ihr seid echt SUPER !!! DANKE


 Zurück zur Übersicht