Immer Sanduhr in einem Eingabedialogfenster

Moderator: Moderatoren

Antworten
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Peter Schweizer »

Hallo Gemeinde,

seit ich mit der Version (exp19259) kopiliert habe, erscheint in einem Eingabedialog die Sanduhr als Cursor.
Aber erst, sobald ich die Maus im Dialog bewege (vorher ist es noch ein Pfeil).
Bewege ich die Maus aus dem Dialogfenster heraus, wird sie wieder normal als Pfeil angezeigt.

Hat da jemand eine Idee ??

Gruß Peter
Gruss Peter
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Tom »

Hallo, Peter.

Such mal nach DC_SetPointerTree in Deinem Code. Möglicherweise hast Du auch irgendwo eine CURSOR-Klausel, die den falschen Pointer referenziert.

Roger erzeugt beim Dialogaufbau (DC_ReadGui) eine Sanduhr und lässt diese wieder verschwinden, wenn der Dialog fertig ist.
Herzlich,
Tom
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Peter Schweizer »

Hallo Tom,
hatte bisher keinerlei Aufrufe für DC_setpointertree() in meinem Quellcode, auch habe ich überhaupt keine Mouse-Zeiger Änderungen gemacht.

Habe jetzt zum Test mal einen DCREAD Aufruf mit einem EVAL {} angepasst:

DCREAD GUI ;
TITLE "Test';
OPTIONS GetOptions;
CLEAREVENTS;
PARENT @oDlg;
APPWINDOW RootWindow();
EVAL {|o| DC_SetPointerTree(o) } ;
FIT

und siehe da, der Dialog reagiert wie er soll --> keine Sanduhr mehr in diesem Dialog.

D.h. für mich, das es eine Funktion gegen muß, die beim bewegen der Maus aufgerufen wird und mir dann die Sanduhr bringt.
Steht der Cursor beim Aufruf des Dialogs zufällig an der Stelle wo der Dialog erschein, erscheint ja solange ich nach dem aufbau des Dialogs die Mouse nicht bewege, keine Sanduhr !

Bin nun trotzdem etwas ratlos !
Muß ich jetzt alle meine DCREAD Aufruf-Dialoge mit der entsprechenden EVAL versehen ?
Das kanns doch eigentlich nicht sein.

Wo könnte ich noch suchen ?

Gruß Peter
Gruss Peter
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Rudolf »

Hallo,
könnte vielleicht etwas mit Tooltips zu tun haben
Grüße
Rudolf
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Peter Schweizer »

Hallo Rudolf,

habe am anfang von meiner main.prg den Befehl : DC_ToolTipEnable(.F.) // Tooltip Thread abschalten

Damit dürfte Deine Idee (vielen Dank dafür) abgeschaltet sein.

Gruß Peter
Gruss Peter
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Tom »

Tooltips mit eXpress++ sind leider ein Thema für sich. In Rogers Quellcode findet man da oft Hinweise auf Jack Duijf, der sich intensiv damit beschäftigt und einige Ergänzungen implementiert hat, darunter ein Multithreaded-Tooltipping und in der aktuellen Version völlig irrsinnig arbeitende Balloon-Tips (flacker, flacker). Ich arbeite mit DC_ToolTipEnable(.T.) und DC_ToolTipThread(1), um das Multithreading-Tooltipping und die letzten Ergänzungen zu umgehen. Schön ist es trotzdem nicht, aber es gibt leider keine Möglichkeit, Tooltips zu verwenden, ohne auf die implementierten Systematiken zurückzugreifen.
Herzlich,
Tom
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: Immer Sanduhr in einem Eingabedialogfenster

Beitrag von Peter Schweizer »

Hallo Gemeinde,
ich habe wahrscheinlich (wie erste test zeigen) das Problem beseitigen können.
Aber ich kann mir keine Erklärung zurechtlegen. (es geht aber ich weiß aber nicht warum --> sehr hoher Ing.-Level)

main.prg vorher:
DCREAD GUI TITLE cHeadline;
OPTIONS GetOptions ;
NODESTROY ;
SETAPPWINDOW ;
EVAL {|o| MainEval(o,aButtons,aPhotos,oStatic)}

main.prg nachher:
DCREAD GUI TITLE cHeadline;
OPTIONS GetOptions ;
NODESTROY ;
EVAL {|o| MainEval(o,aButtons,aPhotos,oStatic)}

Hat jemand eine Erklärung ? (Würde mich ruhiger schlafen lassen)

Gruß Peter
Gruss Peter
Antworten