Seite 1 von 2

Editor-Gadget bearbeitet? [gelöst]

Verfasst: 08.01.2009 20:25
von Josef Sniatecki
Hi Leutz,

weiß jemand unter euch, wie ich erfahren kann, ob ein Editor-Gadget
bearbeitet wurde. Mit "bearbeitet" meine ich, ob der Benutzer den Text im
Editor-Gadget modifiziert hat.
Habe bisher nichts richtiges gefunden. Auch ein passendes
#WM-Event kenne ich nicht.

Denke mal, dass es was mit Win-API zu tun hat, deswegen poste ich hier.

Schon mal danke im voraus.
Gruß Josef

Re: Editor-Gadget bearbeitet? - Wie lösen

Verfasst: 08.01.2009 21:06
von Kiffi
nix API:

Code: Alles auswählen

OldEditorGadgetText$ = GetGadgetText(#DeinEditorGadget)

[weiterer Code]

If OldGadgetText$ <> GetGadgetText(#DeinEditorGadget)
  Debug "Text wurde bearbeitet"
EndIf
Grüße ... Kiffi

Re: Editor-Gadget bearbeitet? - Wie lösen

Verfasst: 08.01.2009 21:12
von edel
Kiffi hat geschrieben:nix API:

Code: Alles auswählen

OldEditorGadgetText$ = GetGadgetText(#DeinEditorGadget)

[weiterer Code]

If OldGadgetText$ <> GetGadgetText(#DeinEditorGadget)
  Debug "Text wurde bearbeitet"
EndIf
Grüße ... Kiffi
Dann hoffen wir aber mal das der Text nicht zu lang wird ;)

Verfasst: 08.01.2009 21:15
von Josef Sniatecki
@Kiffi
So habe ich das auch mal gemacht, aber gibt es da keine andere Lösung?
Ich muss ja sonst immer wieder den alten Text in einen String abspeichern.
Ist das wirklich notwendig? Es reicht ja schon, dass ein riesen Text im
Gadget gespeichert ist.
Ich glaube nicht, dass das in anderen Text-
Editoren auch so gemacht wird, oder irre ich mich jetzt?

Ich fände es besser, wenn man durch irgendein Event-Zeugs erkennen
könnte, ob der Benutzer etwas am Text gemacht hat.

Wenn das wirklich die einzige Lösung ist, dann würde mich das wundern...

@Edel
ganz meiner Meinung

Verfasst: 08.01.2009 21:18
von Oliver1994
Ein Event würde aber ähnliches tun!

Verfasst: 08.01.2009 21:21
von Dare Devil
Mit einem StringGadget wuerde es gehen:

Code: Alles auswählen

OpenWindow(0, 0, 0, 200, 200, "", #PB_Window_SystemMenu)

StringGadget(0, 0, 0, 200, 200, "")

Repeat
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_Gadget
    If EventGadget() = 0 And EventType() = #PB_EventType_Change
      MessageRequester("", "Es wurde etwas eingegeben!")
    EndIf
  ElseIf EventID = #PB_Event_CloseWindow
    Break
  EndIf
ForEver
Fragt sich nur, warum das nicht auch beim EditorGadget implementiert wurde... :?

Verfasst: 08.01.2009 21:22
von Josef Sniatecki
@Oliver
Nur das ein Event schon von Windows bearbeitet wird. Ich erhalte da
nur eine oder mehrere IDs. Da muss ich nicht nochmal extra den ganzen
Text in einen String kopieren und diesen die ganze Zeit mit dem aktuellen
Text vergleichen.

Events sind wesentlich schneller und auserdem professioneller (ich bin so'n
Typ der halt alles richtig machen will. Wiederum nicht so einer, der sich
im Laden nicht entscheiden kann, welche Butterkekse er kaufen soll, nur
weil er die perfektesten haben will.).

Verfasst: 08.01.2009 21:23
von cxAlex
> Fragt sich nur, warum das nicht auch beim EditorGadget implementiert wurde... :?

Das Editor Gadget ist ein RTF Controll, das ist etwas aufwändiger zu Managen als die anderen 'einfacheren' Controlls. Mit einem CallBack sollte das IMHO trozdem zu lösen sein, müsste mal schaun wie das geht.

Verfasst: 08.01.2009 21:25
von Josef Sniatecki
@Dare Devil
Das ist eine gute Lösung. Denn so wie ich weiß kann man String-Gadgtes
auch in so ein Multiline dings bumbs umwandeln, indem man eine
bestimmte Konstante eingibt (keine PB-Konstante). Müsste dafür wieder
in den Code-Archiv reingucken.

Wäre trotzdem gut, wenn es auch direkt mit dem Editor-Gadget gehen
würde.

Verfasst: 08.01.2009 21:27
von Josef Sniatecki
cxAlex hat geschrieben:> Fragt sich nur, warum das nicht auch beim EditorGadget implementiert wurde... :?

Das Editor Gadget ist ein RTF Controll, das ist etwas aufwändiger zu Managen als die anderen 'einfacheren' Controlls. Mit einem CallBack sollte das IMHO trozdem zu lösen sein, müsste mal schaun wie das geht.
Hm... wenn das so ist. Habe auch gemerkt, dass ich Editor-Gadgets nicht
so leicht mit API behandeln lassen wie String-Gadgets die mit einem
Multiline-Flag erstellt wurden.