Seite 1 von 1

Problem mit SetClipboard

Verfasst: 20.07.2019 19:03
von bin_neu_hier
Hallo Leute,

gerade konnten mir RSBasic und Bisonte helfen, eine Doppelklickabfrage zu implementieren, da haut's mir schon wieder einen Knüppel zwischen die Beine:

mit o. g. Doppelklickabfrage wird in einem Jahreskalender das Datum gepickt, ungefähr so:

Code: Alles auswählen

Procedure DoppelKlickAbfrage(hWnd, uMsg, wParam, lParam)
  Select uMsg
    Case #WM_LBUTTONDBLCLK
      gn = EventGadget()

       ; einige Berechnungen, um von einer TextGadgetnummer auf das Datum zu schliessen
       ; am Ende dann prüfen, ob Tag im Bereich 1...Ultimo liegt  
     
        If gn >= 0 And gn <= u

          ;Datumstring zusammenbauen
          x$ = Right("0"+Str(gn),2) + "." +  Right("0"+Str(m),2) + "." + Str(jahr)

          ; ins Clipboard
          SetClipboardText(x$)
          
          ; anzeigen
          MessageRequester("Information", x$, #PB_MessageRequester_Ok)

        EndIf
  EndSelect
  ProcedureReturn CallWindowProc_(DoppelKlickAbfrage, hWnd, uMsg, wParam, lParam)
EndProcedure
Jetzt passiert mit dem compilierten Programm Folgendes:

Solange der Messagerequester angezeigt wird, kann ich das Datum per {RechtKlick -einfügen} in eine Textdatei einfügen. Sobald der Messagerequester geschlossen wird, wird nur noch das Zeichen, auf das ich den Doppelklick gemacht habe, aus dem Clipboard eingefügt.

Ohne den Requester funktioniert es überhaupt nicht, dann wird nur das Zeichen, auf das ich den Doppelklick gemacht habe, aus dem Clipboard eingefügt. Warum ist der Datumsstring verschwunden? Und wie kann man das Verschwinden verhindern?

Re: Problem mit SetClipboard

Verfasst: 20.07.2019 19:18
von Bisonte
Ich frage mich gerade was

Code: Alles auswählen

gn = EventGadget()
        If gn >= 0 And gn <= u
zu bedeuten hat..
Das gehört nicht in einen Callback, da ein EventGadget() nicht unbedingt anliegt.
Desweiteren ... u ist nicht deklariert, also 0.

Um das Gadget zu ermitteln (also die Gadgetnummer von PB, habe ich in dem vorherigen Beispiel Props eingesetzt.

Dort sieht man in etwa, wie man an die PB Nummer kommt.

Edit : Wenn du zeigst, wie so ein Textgadget aussieht (also der Text der drinsteht), könnte man mal eben ein Beispiel
zimmern...

Re: Problem mit SetClipboard

Verfasst: 20.07.2019 22:04
von bin_neu_hier
Hallo Bisonte,

ich wollte mit meinem Codefragment nur andeuten, was da so passiert.

mit

Code: Alles auswählen

gn = EventGadget()
habe ich abgefragt, bei welchem Textgadget der Doppelklick ausgelöst wurde. Hat funktioniert, aber egal.

Das

Code: Alles auswählen

 ; einige Berechnungen, um von einer TextGadgetnummer auf das Datum zu schliessen
 ; am Ende dann prüfen, ob Tag im Bereich 1...Ultimo liegt  
sollte eigentlich nur andeuten, dass da noch was gerechnet wird. Unter anderem wird u ausgerechnet (ultimo, der letzte Tag eines Monats, also 31,28 oder 29, 31,30,31,...). Die Prüfung

Code: Alles auswählen

 If gn >= 1 And gn <= u
(0 war falsch!)
soll sicherstellen, dass gn keine anderen Werte als minimal 1 und maximal die jeweilige Anzahl der Tage eines Monats hat. Aber, das ist ja eigentlich gar nicht der Punkt, sondern dass der Wert im Clipboard so variiert wie beschrieben. Übrigens auch, wenn ich Deinen Beispielcode für die DoppelKlickabfrage vollständig einbaue.

Und gerade noch probiert: Mit #WM_RBUTTONDOWN funktioniert das korrekt, nur nicht mit #WM_LBUTTONDBLCLK. Warum?