Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 249581 (11017)
  Suchen
 Zurück zur Übersicht
 AutorThema: Page-Control und Tabulatortaste
Lars
Datum:03.07.01 20:54 Antwortenals Email verschicken (hoefener@web.de) 


Hallo Profaner,

was mache ich falsch, wenn der Beenden-Button durch durch das Betätigen der Tabtaste die Anweisung ( nicht erst durch enter oder mouse ) aufgerufen wird ? Folgenden Code verwende ich auf einem Page-Control aus Prfellow/Winfellow:

WhileNot ma1_ende%
waitinput
WMNotifyHandler

If TAB_CHANGE(PageControl1&)
PageControl1_OnChange

elseif @GetFocus(abbrechen%)
MessageBox "Wollen Sie die Eingabe wirklich ohne Speichern abbrechen?",\
"FRAGE:",36+256

if @Equ(%Button,6)
@DestroyWindow(tab_dlg%)
Let ma1_ende% = 1
ShowWindow(ma_dlg%,5)
endif
EndIF

EndWhile

Irgendwie muß ich wahrscheinlich getfocus umgehen ?

Grüße Lars


Rolf Koch
Datum:03.07.01 21:20 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Leider kennen wir den ganzen Code ja nicht.
Normalerweise würde ich die Abfrage so gestalten (konnte leider nicht testen)
If TAB_CHANGE(PageControl1&)
PageControl1_OnChange
        if @GetFocus(abbrechen%)
        MessageBox "Wollen Sie die Eingabe wirklich ohne Speichern abbrechen?",\
        "FRAGE:",292
                if @Equ(%Button,6)
                   @DestroyWindow(tab_dlg%)
                   Let ma1_ende% = 1
                   ShowWindow(ma_dlg%,5)
                endif         
        endif
EndIF
EndWhile

Aber nur, wenn sich @getfocus(abbrechen%) auf das Tabctrl bezieht.
Achso, kleiner Tip am Rande: Bei Deiner Messagebox kannst Du den letzten Parameter direkt zusammenrechnen ;)
Rolf


Lars
Datum:03.07.01 22:48 Antwortenals Email verschicken (hoefener@web.de) 


Hallo Rolf,

danke für Deine schnelle Antwort...
Aufgrund der Größe des Programmes mit ca. 2000 Zeilen möchte ich nicht das Forum sinnlos belasten und schicke nur einen Bruchteil.
Bei der Messagebox hast Du mich wohl erwischt - Faulheit lass los.

So richtig kann ich mich mit Deiner Antwort aber nicht anfreunden. Ich schätze das If TAB_CHANGE(PageControl1&) steht nur für einen Wechsel der Blätter und das elseif muß damit bleiben ... oder ????

Danke Lars


Rolf Koch
Datum:03.07.01 23:07 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Hi Lars - neee um Gottes Willen nur keine 2000 Zeilen hierhin kopieren :)
Deswegen habe ich ja geschrieben, wir kennen Deinen Code ja nicht ;)
Aber irgendwie kommt mir Deine If Elseif Abfrage komisch vor.
Normalerweise sollte die Abfrage, welche Du hier stellst aufgrund der Aktivität des Tabcontrols aufbauen.
Bedeutet:
Tabcontrol angeklickt (also Reiter)?
Ja?
Dann Abfrage auf abbrechen%
und gefolgt auf dies die Abfrage auf die Messagebox.
Ich versuchs hier mal auf Deutsch als Code zu formulieren:
Wenn Tabcontrol(aktiv)
---> Frage auf Abbrechen 'Ist hoffentlich auf Tab
     ---> Messagebox welcher Knopf
          ---> wenn Button6 = Beenden


Bei Dir sieht das so aus:
Wenn Tabcontrol (aktiv)
---> Frage auf Abbrechen 
Wenn aber Abbrechen
---> Messagebox welcher Knopf
     ---> wenn Button6 = Beenden

siehe in Deinem Code
entweder Tabctrl oder Abbrechen kommt da raus.
Vielleicht täusche ich mich auch aufgrund der vorhergehenden fehlenden Informationen, aber hier deutet es sich so ab.
Rolf




Rolf Koch
Datum:03.07.01 23:25 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Ja, ich habe mir den Rest mal bildlich vorgestellt.
Da hast Du auch wieder recht.
Dann versuchs mal so ;):
If TAB_CHANGE(PageControl1&)
PageControl1_OnChange
Endif

if @GetFocus(abbrechen%)
   MessageBox "Wollen Sie die Eingabe wirklich   ohne Speichern abbrechen?",\
"FRAGE:",36+256
   if @Equ(%Button,6)
      @DestroyWindow(tab_dlg%)
      Let ma1_ende% = 1
      ShowWindow(ma_dlg%,5)
   endif
EndIF

Ist wirklich schwierig ohne zu testen :))))
Aber ja - stimmt Dein letztes Argument war sehr überzeugend, so daß ich den Sinn erst jetzt kapiert habe
Rolf
und....?


Lars
Datum:03.07.01 23:45 Antwortenals Email verschicken (hoefener@web.de) 


Leider klappt es immer noch nicht ! Irgendwie kann man den getfocus - Befehl im 7.0 - Profan ersetzen - ich habe es leider aber noch nicht gefunden.

Grüße Lars


Rolf Koch
Datum:03.07.01 23:53 Antwortenals Email verschicken (webmaster@rokosoft.de) 


Aha, meinst Du evtl. %message oder %lastmessage
stehen beide in der Profanhilfe.
Rolf


Roland G. Hülsmann
Datum:04.07.01 00:57 Antwortenals Email verschicken (rgh-soft@t-online.de) 


Manchmal hilft auch (ab PROFAN 7.0e) die Zeile SET("Messagemode",0) am Anfang des Programmes. Damit wird das Messagehandling wieder kompatibel zu PROFAN 6.x und GetFocus reagiert wie gewohnt. Wenn das Programm an anderer Stelle das erweiterte Messagehandling von PROFAN 7 nutzt, kann das aber zu anderen Problemen führen.


Lars
Datum: 05.07.01 19:17 Antwortenals Email verschicken (hoefener@web.de) 


Hallo Roland,

leider klappt der Befehl SET("Messagemode",0) nicht so richtig !?
Wie muß er lauten ?
Danke !

Grüße Lars



 Zurück zur Übersicht