Einsteigerfragen zur PROFAN Programmierung
  Suchen
 Zurück zur Übersicht
 AutorThema: Menue-Einbindung, Probleme
Frank
Datum:22.09.02 21:44 Antwortenals Email verschicken (frank.sappert@t-online.de) 


Hallo erstmal,
ich bin Neueinsteiger in PROFAN und hoffe, Ihr könnt mir weiterhelfen, da ich in der Hilfe nicht weiterkomme.
Ich habe ein Menue gebastelt, das ich mit WaitKey abfrage. Dabei springe ich durch If-Abfragen in PROC.
Wenn ich in der Procedur bin, kann ich das Menue nicht mehr ansteuern.
Welche Möglichkeit gibt es, das Menue IMMER verfügbar zu haben, d.h. "aus allen Lagen" auch ich Unterprogrammen zu gebrauchen?
Grüße, Frank.


Jörg Sellmeyer
Datum:22.09.02 22:47 Antwortenals Email verschicken (joerse@gmx.de) 


Hallo Frank,
Es kommt darauf an, was Deine Prozedur macht. Normalerweise wird eine Prozedur
aufgerufen und nach Erledigung der Aufgabe wieder verlassen.
Wenn aber lange Rechenoperationen anstehen, oder eine Schleife mit viele Durchläufen
abgeabeitet wird, dauert es halt.
Profan kann keine zusätzlichen Threads erzeugen. Eine Möglichkeit wäre, in Deiner
Prozedur eine Menüabfrage einzubauen, aber das bremst natürlich.
Vieleicht postest Du mal ein Stück von Deinem Code.
Gruß
Jörg


Frank
Datum:23.09.02 19:41 Antwortenals Email verschicken (frank.sappert@t-online.de) 


Hallo.
Danke erstmal!
Ich werde zur gegebenen Zeit mal ein Stück Code posten.
Wie gesagt, ich bin noch ganz am Anfang und probiere die Funktionen aus.
Ein neues Problem:
Ich habe über den Bildschirm-Helfer Textboxes, Radioboxes u.a. gebastelt.
Es baut sich auch ein Bildschirm auf.
Nun möchte ich den Bildschirm wieder löschen, aber es klappt nicht mit CLS. Ich habe schon die ganze Hilfe durchforstet und DESTROYWINDOW gefunden.
Für Hilfe wäre ich dankbar, Frank-


Martin Pohl
Datum:23.09.02 20:01 Antwortenals Email verschicken (martin_pohl@msn.com) 


Hallo, Frank!

1. Verwende statt WaitKey lieber WaitInput

2. Wenn in deiner Proc ein neues Fenster oder ein Dialog erstellt wird, dann musst das Hauptfenster mit folgender Zeile erst wieder in den Vordergrund holen:
@SetActiveWindow(%HWnd)


Frank
Datum:23.09.02 20:06 Antwortenals Email verschicken (frank.sappert@t-online.de) 


Danke, ich werd's ausprobieren.
Frank Sappert


Frank
Datum:23.09.02 20:23 Antwortenals Email verschicken (frank.sappert@t-online.de) 


Funktioniert leider nicht, hier der Code:

proc anzeige
declare _ende%
declare GGruppe1%
declare RadioSalbe%
declare RadioCreme%
declare ListeTest%

windowstyle $1C
window 112,88-696,464
let GGruppe1%=@creategroupbox(%HWnd,"Gruppe 1",72,48,208,168)
let RadioSalbe%=@createradiobutton(%HWnd,"Salbe",88,80,16,16)8
let RadioCreme%=@createradiobutton(%HWnd,"Creme",88,112,16,16)0
let ListeTest%=@createlistbox(%HWnd,"Test",416,56,152,56)64

let _ende% = 0
whilenot _ende%
waitinput
if @equ(%key,4)
' Größe verändert
elseif @getfocus(GGruppe1%)
' Aktion noch nicht definiert!
elseif @getfocus(RadioSalbe%)
@SetActiveWindow(%HWnd)
return
elseif @getfocus(RadioCreme%)
' Aktion noch nicht definiert!
elseif @getfocus(ListeTest%)
' Aktion noch nicht definiert!
endif
wend
endproc

windowtitle "Fenster-Test"
window 112,48-696,464
anzeige
waitinput

WaitInput
WaitInput
end


Frank
Datum:23.09.02 20:28 Antwortenals Email verschicken (frank.sappert@t-online.de) 


Bei Return wird PROC testmäßig abgebrochen, um ins Hauptprogramm zu gelangen.
Außerdem werden die Radiobeschriftungen und Testfeldeintrag nicht angezeigt.
Grüße, Frank


Martin Pohl
Datum: 23.09.02 20:50 Antwortenals Email verschicken (martin_pohl@msn.com) 


Ohje, ohje!

Was hast du denn da gemacht?

1. Du verwendest 2mal den Befehl Window! Das darf nicht sein!
2. Du verwendest mehrfach hintereinander WaitInput

Hier ist der hoffentlich funktionierende Code:

proc anzeige
declare _ende%,GGruppe1%,RadioSalbe%,RadioCreme%,ListeTest%

windowstyle $1C
window 112,88-696,464
let GGruppe1%=@creategroupbox(%HWnd,"Gruppe 1",72,48,208,168)
let RadioSalbe%=@createradiobutton(%HWnd,"Salbe",88,80,16,16)
let RadioCreme%=@createradiobutton(%HWnd,"Creme",88,112,16,16)
let ListeTest%=@createlistbox(%HWnd,"Test",416,56,152,56)

let _ende% = 0
whilenot _ende%
waitinput
If @Equ(%Key,2)
End
elseif @getfocus(RadioSalbe%)
return
elseif @getfocus(RadioCreme%)
' Aktion noch nicht definiert!
elseif @getfocus(ListeTest%)
' Aktion noch nicht definiert!
endif
wend
endproc

anzeige
end



 Zurück zur Übersicht
 

 Ein kostenloses WebMart Forum
WebMart Homepage Tools kostenlos
doteu.info: Don´t miss your .eu-Domain