Seite 1 von 2

DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 9:26
von Manfred
Hi,
ich habe ein DCBROWSE auf ein Array. Es gibt dort eine Spalte, die immer mal wieder schmaler als der eigentlich Inhalt ist. Also erinnerte ich mich, dass es ja DATATOOLTIP {|| .T.} gibt. Das soll ja laut Anleitung per Mouseover den Inhalt anzeigen, wenn er zu schmal für die Spaltenbreite ist. Das klappt aber nicht. Ich habe es bisher auf eine Tabelle angewendet und meine, das es dort geklappt hat. leider scheint es da auch nicht mehr zu wollen. Das mit dem getrennten Thread habe ich schon woanders hier gelesen, aber ist es da wirklich?. Bzw, warum baut Roger sowas ein, wenn es nicht wirklich so einfach klappt? Hat jemand einen Tipp zur Hand?
Die anderen TOOLTIPS in dem Fenster (PushButton) klappen. Dort wird der jeweilige Text angezeigt.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 9:41
von Tom
Hallo, Manfred.

Das hat seinerzeit der gute Michl Rudrich erfunden und Roger hat's direkt eingebaut. So richtig sicher hat die Standardvariante nie funktioniert. Ich verwende DATATOOLTIP deshalb nur mit der zusätzlichen Option TIPBLOCK. Wenn man Arrays im Browser hat, kann man den ersten Parameter des Blocks verwenden, um sich die Daten zu holen:

Code: Alles auswählen

DCBROWSECOL ELEMENT 1 HEADER 'xy' PARENT oBrowse DATATOOLTIP {||.T.} TIPBLOCK {|n|Var2Char(DC_GetColArray(n,oBrowse))}
Bei Tabellen muss man höllisch aufpassen, denn DATATOOLTIP verändert dort die Zeigerposition, wenn man die Datenquelle im Tipblock referenziert. Deshalb ist in solchen Fällen anzuraten, die Tabelle(n) für den Tipblock abermals zu öffnen.

Wie gesagt, das war nie wirklich sicher. Die Variante, die ich oben gezeigt habe, funktioniert aber, und man kann im Tipblock dann auch noch weitere Daten sammeln.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 10:24
von Manfred
Hi Tom,
ich habe jetzt etliche Varianten ausprobiert. Habe mir auch die Beispielcodes von Roger angeschaut und daraus was kopiert. Leider ohne Erfolg. Irgenwas mache ich da wohl falsch.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 11:23
von Manfred
irgendwas passt da nicht. Ich habe mal in Datatooltip und Tipblock eine Funktion eingebaut und mit dem Debugger macl beobachtet. Die werden überhaupt nicht aufgerufen. Wie soll denn da DATATOOLTIP überhaupt wissen, ob es nun .T. oder .F. ist?

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 11:55
von Tom
Zeig mal ein Beispiel und/oder ein Stück Code. Bei mir funzt das.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 12:18
von Manfred

Code: Alles auswählen

@ 15,5 DCBROWSE oDialogZusatz:oBrowseTagesDienste;
                     DATA oDialogZusatz:aTagesdienste;
                     EDIT xbeBRW_ItemSelected MODE DCGUI_BROWSE_EDITDOWN;
                HEADLINES 2;
              NOSOFTTRACK;
                   PARENT oDialogZusatz:oRahmenBrowseTagesdienste;
                  POINTER nPos;
                  PREEVAL {|| oDialogZusatz:oBrowseTagesDienste:headerRbDown := {|aMousePos, nColPos, self| MausImKopf(nColPos,oDialogZusatz,{2,3,4,6,7})}};
                     SIZE DCGUI_PARENTWIDTH-10,DCGUI_PARENTHEIGHT - 30 - oDialogZusatz:nPbHoehe;
                  TABSTOP
DCBROWSECOL ELEMENT BEMERKUNG;
                   DATATOOLTIP {|| .T.} TIPBLOCK{|nPos| oDialogZusatz:aTagesdienste[nPos,BEMERKUNG]};
                        HEADER "Bemerkung";
                        PARENT oDialogZusatz:oBrowseTagesdienste;
                       PROTECT {|| .T.};
                         WIDTH 300
lt. Anleitung soll bei Array der Parameter POINTER mit rein. habe ich mit und ohne versucht, klappt beides nicht.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 14:35
von Tom
Das hier funktioniert einwandfrei, der Tooltip wird angezeigt. BTW, sind Tooltips bei Dir grundsätzlich verfügbar (DC_ToolTipEnable())?

Code: Alles auswählen

#include "dcdialog.ch"
#pragma library ("dclipx.lib")

FUNCTION Main()
LOCAL GetList := {}, oBrowse, aData := {}, i

FOR i := 69 to 110
  aAdd(aData,{Chr(i),Replicate(Chr(i),100)})
NEXT

@ 0,0 DCBROWSE oBrowse DATA aData SIZE 100,30

DCBROWSECOL ELEMENT 1 HEADER '1' WIDTH 10 PARENT oBROWSE
DCBROWSECOL ELEMENT 2 HEADER '2' WIDTH 50 PARENT oBROWSE DATATOOLTIP {||.T.} TIPBLOCK {|n|IF(n>0.and.n<Len(aData),oBrowse:DataSource[n,2],nil)}

DCREAD GUI FIT ADDBUTTONS TITLE 'Test'

RETURN NIL

PROC AppSys() ; RETURN

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 14:37
von Manfred
Hi Tom,
ich schrieb ja oben, dass alle anderen Tooltips funktionieren. Das Beispiel In Sektion 5 bei XDemo DataTooltTips klappt bei mir auch. Nur meine eigenen Dinge nicht.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 15:04
von Tom
Den Pointer braucht man nicht, das ist Anno Zopf und hat nie verlässlich funktioniert (im Bedarfsfall DC_BrowseRow(oBrowse) verwenden). Ansonsten sieht Dein Code für mich schick aus. Seltsam. Ich baue morgen mal nach, wenn ich Zeit finde.

Was ist, wenn Du im Tipblock "oDialogZusatz:oBrowseTagesDienste:DataSource" als Arrayreferenz verwendest?

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mi, 11. Jan 2017 15:25
von Manfred
klappt auch nicht. Wer weiß, was ich da wieder übersehe.... :angry4:

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 15:27
von Manfred
hm, irgendwie bin ich total ratlos, das genau diese Art Tooltip nicht klappt....

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 16:44
von Koverhage
Bei mir funktioniert folgendes ohne Problem.
DCBROWSECOL DATA {|| ge->velf} PICTURE "@E 9999999.999" WIDTH 7 ;
PROTECT {|| YES} HEADER "Wert" ;
DATATOOLTIP {|| lDataToolTips} TIPBLOCK {|| str( ge->vevj,11,3)}

Wichtig: Der Tooltip wird mit einer gewissen Verzögerung angezeigt.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 17:09
von Manfred
ich habe hier ein Array.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 17:23
von Koverhage
Was für eine DataSource do hast its den Tooltips egal.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 17:25
von Manfred
so sollte es sein, aber es klappt nicht.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 17:28
von Tom
Was passiert, wenn Du mein - funktionierendes - Array-Beispiel von oben in Deinen Code nimmst, ggf. mit Deinem Array?

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 17:33
von Manfred
ich habe alle Deine Vorschläge ausprobiert, aber nichts tut sich, wenn ich mit der Maus über die Zeile/Spalte fahre und warte. Ich verstehe das nicht, ich weiß vor ewig langer Zeit hat das mal an anderer Stelle geklappt (aus einer DBF heraus nicht im Arry), aber jetzt klappt es nirgends mehr. Irgendwas ist da oberfaul, aber ich komme nicht drauf.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 17:58
von Koverhage
Dann suche im Deinem Quellcode nach
DC_ToolTipEnable(YES or NO)
Falls nicht (weiß nicht ob es noch immer so ist, denke ja), der anzuzeigende Tooltip dar nicht aus einem
anderen Thread kommen.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Mo, 16. Jan 2017 18:01
von Manfred
meinst Du jetzt dass ich diese Funktion selbst bei mir eingesetzt habe? Die kenne ich gar nicht.
Andere Tooltips klappen ja nur nicht die im browse. Oder worauf willst Du jetzt raus?
Wobei mir gerade auffällt, das nicht in jedem Menue alle Tooltips klappen. Kommt mir auch komisch vor.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Di, 17. Jan 2017 7:17
von Manfred
wie könnte ich denn testen, ob das Grundprinzip klappt? Ich meine, vielleicht wird ja nur versucht etwas falsches, leeres anzuzeigen und deshalb sieht man nichts.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Di, 17. Jan 2017 7:22
von Koverhage
xsample# (5 oder 6)

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Di, 17. Jan 2017 7:30
von Manfred
die Samples klappen ja (wie schon oben erwähnt) Es geht jetzt nur daraum herauszufinden, ob und wenn ja was ICH hier wohl falsch mache.

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Di, 17. Jan 2017 8:54
von Koverhage
ersteze doch mal testweise
TIPBLOCK{|nPos| oDialogZusatz:aTagesdienste[nPos,BEMERKUNG]}
mit
TIPBLOCK{|nPos| "MeinToolTipText"}

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Di, 17. Jan 2017 8:57
von Manfred
Hi Klaus,
klappt auch nicht. So ein Mist. Aber wie gesagt, die Pushbutton im gleichen Bildschirm funktionieren. Ob das mit irgendeinem Parent oder so zusammenhängen kann?

Re: DCBROWSECOL und DATATOOLTIP

Verfasst: Di, 17. Jan 2017 9:22
von Koverhage
Was passiert wenn Du Deine Frage im Express++ Forum stellst ?