o:Maximize / oXbpMultiCellGroup():setRowHeight()

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

o:Maximize / oXbpMultiCellGroup():setRowHeight()

Beitrag von AUGE_OHR »

hi,

Code: Alles auswählen

// das ist der Parent von nachfolgenden XbParts
   ::oScroll:setPos( { 0, ::nSbarheight } )
   ::oScroll:clientSize := aCalSize

   IF ::cView = "MONTH"
   ELSEIF ::cView = "WEEK5" .OR. ::cView = "WEEK7"
   ELSEIF ::cView = "DAYS"

      IF ::cTimeScale = "24"
         ::oKal:setPosAndSize( { ::n1StCol, 0 }, { aCalSize[ 1 ] - ::n1StCol, ( aCalSize[ 2 ] * 1 ) } )
      ELSE
         ::oKal:setPosAndSize( { ::n1StCol, 0 }, { aCalSize[ 1 ] - ::n1StCol, ( aCalSize[ 2 ] * 2 ) } )
      ENDIF

      ::oKal:setRowHeight( NurInt( aCalSize[ 2 ] / ::oKal:maxRow , 0 ))
in einen Fenster sieht es so aus
Zeit_2330_1.PNG
Zeit_2330_1.PNG (14.62 KiB) 2080 mal betrachtet
aber bei einem maximize so
Zeit_2330_2.PNG
Zeit_2330_2.PNG (5.86 KiB) 2080 mal betrachtet
hm ... :banghead:

die Werte errechne ich so

Code: Alles auswählen

FUNCTION NurInt(nVal,nDec)
LOCAL nRet
DEFAULT nDec TO 0
   nRet  := INT( ROUND(nVal + 0.05,nDec ))
   ONDUMMY(time(),nVal,ProcName(1),Procline(1),ProcName(2),Procline(2) )
RETURN nRet
mein Logfile sieht so aus
Logfile Start 20150216 23:32:19
23:32:19 21.02 OWCAL:SHOWCALENDER 7367 MAIN 379
23:32:19 21.02 OWCAL:SHOWCALENDER 7403 MAIN 379
ToolTip atStart() DAYS 23:32:19
23:32:19 21.02 OWCAL:DLGRESIZE 4123 (B)OWCAL:INIT 365
23:32:19 21.02 OWCAL:DLGRESIZE 4133 (B)OWCAL:INIT 365

23:32:23 23.63 OWCAL:DLGRESIZE 4123 (B)OWCAL:INIT 365
23:32:23 23.63 OWCAL:DLGRESIZE 4133 (B)OWCAL:INIT 365

23:32:25 21.02 OWCAL:DLGRESIZE 4123 (B)OWCAL:INIT 365
23:32:25 21.02 OWCAL:DLGRESIZE 4133 (B)OWCAL:INIT 365
Logfile Stop 20150216 23:32:31
er geht also von 21 auf 23 aber es passt nicht ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: o:Maximize / oXbpMultiCellGroup():setRowHeight()

Beitrag von AUGE_OHR »

ich habe nun mal o:setRowHeight() raus genommen und nur o:MaxRow gesetzt.
da es bei o:Maximize() nicht besser wurde hab ich die Statusbar weg genommen und dann "passt" es auch ;)

es ist aber nicht so das ich beim Resize berechnen oder einer bestimmt Auflösung / Font das Problem hätte denn mit meinem native Listview,
was o:MeasureItem auch bei o:Maximize / o:Minimize macht, funktioniert es wenn ich es statt XbpMultiCellGroup() verwenden ( Source ist kompatible )

auch den Font, welcher ja von "MeasureItem", zur Berechnung beiträgt ist z.Z. "fix" und Platz sollte bei o:Maximize ja genug sein :angry4:

nun gibt es auch nicht die Taskbar ... wenn die "OnTop" ( also immer sichtbar ) ist dann stimmt es wieder nicht bei o:Maximize :banghead:
es sind die fehlenden Zeilen (46 statt 48) die durch die Taskbar verdeckt würden ... aber der Dialog sitzt ja richtig auf "absoluter" Position {0,aTaskBar[2]}

es gibt von Günter Beyes, in der Wissensbasis, eine Lösung die Taskbar abzufragen/anzupassen http://www.xbaseforum.de/viewtopic.php?f=16&t=1017

aber das Problem scheint mir "in" der XbpMultiCellGroup() zu stecken welches ja selbst die Grösse bei Angabe von o:MaxRow anpassen müsste :?:
ein weiteres Indiz für eine Problem in der XbpMultiCellGroup() wäre die Tatsache das auch kein Scrollbar erscheint bei o:Maximize ?!

hier mal ein Ausschnitt aus dem Logfile
Title - XBP_DRAWINFO_ITEM - XBP_DRAWINFO_RECT
// normales Fenster
Timeline {1, 1} {1, 990, 33, 1007}
Timeline {2, 1} {1, 969, 33, 986}
Timeline {3, 1} {1, 948, 33, 965}
...
Timeline {47, 1} {1, 24, 33, 41}
Timeline {48, 1} {1, 3, 33, 20}
Timeline {49, 1} {1, -18, 33, -1}

// maximize
Timeline {1, 1} {1, 1090, 33, 1110}
Timeline {2, 1} {1, 1066, 33, 1086}
Timeline {3, 1} {1, 1042, 33, 1062}
...
Timeline {46, 1} {1, 10, 33, 30}
Timeline {47, 1} {1, -14, 33, 6}
Timeline {47, 1} {1, -14, 33, 6}
p.s. die Coordinaten sind von o:customDrawCell()
gruss by OHR
Jimmy
Antworten