PP im Browse-Header erhalten
Moderator: Moderatoren
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
PP im Browse-Header erhalten
Ich habe in einem XbpBrowse neben einigen anderen Einstellungen für einige Spalten diesen PP eingebaut: {XBP_PP_COL_HA_ALIGNMENT, XBPALIGN_RIGHT}. Das Problem ist, das ich die Caption teilweise zur Laufzeit ändere. Damit das sauber repainted wird mache ich dann ein oBrowse:getColumn(i):Heading:configure(). Ansonsten werden alte und neue Caption übereinander gezeichnet.
Dummerweise scheint das aber alle möglichen PP wieder zurück zu setzen.
Dazu stelle ich mir zwei Fragen: Warum macht :configure() sowas? Und welche Möglichkeit gäbe es alternativ, den Header zu repainten?
Jan
Dummerweise scheint das aber alle möglichen PP wieder zurück zu setzen.
Dazu stelle ich mir zwei Fragen: Warum macht :configure() sowas? Und welche Möglichkeit gäbe es alternativ, den Header zu repainten?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: PP im Browse-Header erhalten
Hallo Jan
das mit dem XBP_PP_... mache ich ähnlich, ich verwende aber :Heading:SetCell(...) und nicht :Configure(). Hat Jimmy Mal irgendwo geschrieben. Habe keine Probleme damit.
das mit dem XBP_PP_... mache ich ähnlich, ich verwende aber :Heading:SetCell(...) und nicht :Configure(). Hat Jimmy Mal irgendwo geschrieben. Habe keine Probleme damit.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo ROland,
ich mache auch ein :setCell(). Aber ohne :configure() werden dann sowohl der alte als auch der neue Schriftzug übereinander angezeigt. Aber nur bei den Spalten-Headern, die ich rechtsbündig eingestellt habe. Das ist das Problem.
Jan
ich mache auch ein :setCell(). Aber ohne :configure() werden dann sowohl der alte als auch der neue Schriftzug übereinander angezeigt. Aber nur bei den Spalten-Headern, die ich rechtsbündig eingestellt habe. Das ist das Problem.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
... zumindest bei _LEFT. Denn den setze ich explizit überall da, wo kein _RIGHT gefordert ist. Und das klappt anstandslos. Aber ist ja auch Standardeinstellung.
Nachtrag: Auch _HCENTER klappt nicht.
Jan
Nachtrag: Auch _HCENTER klappt nicht.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: PP im Browse-Header erhalten
Wenn es geht probiere es auch mit _HCENTER - ob es da auch geht. Dann muss ja mit _RIGHT etwas faul sein. Beim Header mache ich meist nur noch _HCENTER.
Re: PP im Browse-Header erhalten
Um in der Sache weiter zu kommen versuche herauszufinden, ob es möglich ist den Header-Text zuerst zu löschen (mit 1x Space + ev. mit _LEFT) und dann wieder mit Text _RIGHT zu überschreiben. Wäre zwar ein Umweg würde aber vielleicht erst einmal helfen.
?
?
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo Roland,
keine Änderung. Mach ich kein :configure, werden alte und neue Capton gezeigt. Wird :configure() gemacht, werden alle PP auf Standard-Werte zurückgesetzt. Warum macht :configure() das überhaupt? Das sollte doch nur neue Werte üebrnehmen, aber dabei nicht alte wegschmeißen, wenn es keine neuen gibt. Oder versteh ich da was falsch?
Jan
keine Änderung. Mach ich kein :configure, werden alte und neue Capton gezeigt. Wird :configure() gemacht, werden alle PP auf Standard-Werte zurückgesetzt. Warum macht :configure() das überhaupt? Das sollte doch nur neue Werte üebrnehmen, aber dabei nicht alte wegschmeißen, wenn es keine neuen gibt. Oder versteh ich da was falsch?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: PP im Browse-Header erhalten
OK - da muss ich passen, das "Design" jedes Feldes schreibe ich immer explizit in das Objekt. Da verlasse ich mich nicht auf die Defaults...
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Wird der alte Inhalt neu geschrieben oder nur nicht gelöscht ?
Wenn ja, könntest du mit einem grabox eine wei0e box malen und somit löschen ... oder die Zelle mit inalidaterect() zum Repaint zwingen (Funktionsnamen frei aus dem Gedächtnis ...)
Wenn ja, könntest du mit einem grabox eine wei0e box malen und somit löschen ... oder die Zelle mit inalidaterect() zum Repaint zwingen (Funktionsnamen frei aus dem Gedächtnis ...)
Gruß
Hubert
Hubert
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: PP im Browse-Header erhalten
damit bis du also in der XbpColumn Class und da stehtJan hat geschrieben:oBrowse:getColumn(i):Heading:configure().
Code: Alles auswählen
METHOD XbpColumn:Configure ( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
// Reconfiguration will destroy and recreate ourself
::Destroy ()
::Create ( oParent, oOwner, aPos, aSize, aPresParam, lVisible )
RETURN self
ich "Wechsel" Presentation Parameter soJan hat geschrieben:Und welche Möglichkeit gäbe es alternativ, den Header zu repainten?
Code: Alles auswählen
aPresParam := ::oKal:setPresParam()
...
nPos := AScan ( aPresParam, { | a | a[1] == XBP_PP_FGCLR } )
IF nPos > 0
aPresParam[nPos, 2] := GRA_CLR_RED
ENDIF
...
::oKal:setPresParam( aPresParam )
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo Jimmy,
leider klappt das nicht. Der Header wird falsch dargestellt, und auch die Zeilen.
Jan
leider klappt das nicht. Der Header wird falsch dargestellt, und auch die Zeilen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo, Jan.
Visuelle Stile aktiv? Möglicherweise sogar frozen columns?
Meine Vorgehensweise für das Repaint:
1. LockPs() auf dem Browse.
2. SetLeftFrozen({}), vorher das Array für die eingefrorenen Spalten speichern.
3. Alle Spalten (!) abermals konfigurieren.
4. SetLeftFrozen({}) auf das gespeicherte Array.
5. UnlockPs().
6. InvalidateRect().
Es kann aber auch hieran liegen:
http://www.alaska-software.com/scripts/ ... PDRID=6309
Visuelle Stile aktiv? Möglicherweise sogar frozen columns?
Meine Vorgehensweise für das Repaint:
1. LockPs() auf dem Browse.
2. SetLeftFrozen({}), vorher das Array für die eingefrorenen Spalten speichern.
3. Alle Spalten (!) abermals konfigurieren.
4. SetLeftFrozen({}) auf das gespeicherte Array.
5. UnlockPs().
6. InvalidateRect().
Es kann aber auch hieran liegen:
http://www.alaska-software.com/scripts/ ... PDRID=6309
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo Tom,
der PDR kann das eigentlich nicht sein, denn ich habe die Probleme sowohl in 1.9 SL1 und in 2.0. Der PDR soll aber schon lange geschlossen sein.
Ich habe gerade mal weiter getestet. Und bin noch viel mehr irritiert.
Die ursprüngliche Problemstellung war ja, das ich die Caption des Headers austauschen möchte.
Im ersten Ansatz habe ich das per oBrowse:getColumn(i):Heading:setCell(1, cHeader) gemacht. Das klappt, brauchte aber vorher ein oBrowse:getColumn(i):Heading:configure(). Und hinterher muß ich auch noch die Farbe neu setzen, weil :configure() auch die weghaut. Sonst bleibt die alte Caption stehen, und die neue wird einfach drübergemalt. Abweichend von meiner Ausage oben passiert das grundsätzlich. Mir viel das nur nicht bei den leftaligns auf, weil die immer gleich sind. Beim genauen hinsehen sieht man aber, das die hinterher fett aussehen. Also wird die neue Caption um ein oder zwei Pixel versetzt drüber gemalt.
Nach Jimmys Ansatz habe ich das dann auch versucht, das klingt schließlich sehr logisch. Und letztendlich auch einfacher als mein Ansatz. Hier wurde das Problem noch größer, denn jetzt wurde nicht nur der Header falsch angezeigt, sondern auch der Datenbereich - Grid weg, Farben falsch.
Also habe ich mal folgendes gemacht:Und siehe da - der gleiche Fehler. Warum wird die Optik zerstört, obwohl ich doch überhaupt nichts geändert habe???
Der Browse ist übrigens so eingestellt:
Jan
der PDR kann das eigentlich nicht sein, denn ich habe die Probleme sowohl in 1.9 SL1 und in 2.0. Der PDR soll aber schon lange geschlossen sein.
Ich habe gerade mal weiter getestet. Und bin noch viel mehr irritiert.
Die ursprüngliche Problemstellung war ja, das ich die Caption des Headers austauschen möchte.
Im ersten Ansatz habe ich das per oBrowse:getColumn(i):Heading:setCell(1, cHeader) gemacht. Das klappt, brauchte aber vorher ein oBrowse:getColumn(i):Heading:configure(). Und hinterher muß ich auch noch die Farbe neu setzen, weil :configure() auch die weghaut. Sonst bleibt die alte Caption stehen, und die neue wird einfach drübergemalt. Abweichend von meiner Ausage oben passiert das grundsätzlich. Mir viel das nur nicht bei den leftaligns auf, weil die immer gleich sind. Beim genauen hinsehen sieht man aber, das die hinterher fett aussehen. Also wird die neue Caption um ein oder zwei Pixel versetzt drüber gemalt.
Nach Jimmys Ansatz habe ich das dann auch versucht, das klingt schließlich sehr logisch. Und letztendlich auch einfacher als mein Ansatz. Hier wurde das Problem noch größer, denn jetzt wurde nicht nur der Header falsch angezeigt, sondern auch der Datenbereich - Grid weg, Farben falsch.
Also habe ich mal folgendes gemacht:
Code: Alles auswählen
aPresentationParameter := oBrowse:getColumn(i):setPresParam()
oBrowse:getColumn(i):setPresParam(aPresentationParameter)
Der Browse ist übrigens so eingestellt:
Code: Alles auswählen
oBrowse:useVisualStyle := .F.
oBrowse:hScrollObject:useVisualStyle := .T.
oBrowse:vScrollobject:useVisualStyle := .T.
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Ein XbpBrowse scheint seine Präsentationsparameter beim Erzeugen (auch auf Spaltenebene) zu verändern. Deshalb hole ich mir beim Ändern z.B. der Konfiguration (Zeilenhöhe) die bisherigen (und eben nicht etwa das Array, das ich beim Erzeugen gesetzt habe) und setze sie abermals:
(ins Blaue getippt, sieht bei mir etwas anders aus).
Aber. Wenn ich die Spaltenheader ändere, was ja dadurch geschieht, dass der Rückgabewert oder Inhalt der Datalinks für die Header geändert wird, lasse ich einfach ein Eval() über alle Header-Datalinks laufen und löse anschließend ein InvalidateRect() aus. Configure oder sonstwelche Spielereien sind an dieser Stelle eigentlich unnötig.
Code: Alles auswählen
METHOD oMyBrowse:_SetPresParam(nHeight)
LOCAL aTempPP := ::SetPresParam(), nFound
* neue Höhe setzen:
nFound := aScan(aTempPP,{|a,n|n := a[1],n == XBP_PP_COL_DA_ROWHEIGHT})
IF nFound < 1
aAdd(aTempPP,{XBP_PP_COL_DA_ROWHEIGHT,nHeight})
ELSE
aTempPP[nFound,2] := nHeight
ENDIF
* und noch einmal dasselbe für CellHeight
::SetPresParam(aTempPP)
RETURN nil
Aber. Wenn ich die Spaltenheader ändere, was ja dadurch geschieht, dass der Rückgabewert oder Inhalt der Datalinks für die Header geändert wird, lasse ich einfach ein Eval() über alle Header-Datalinks laufen und löse anschließend ein InvalidateRect() aus. Configure oder sonstwelche Spielereien sind an dieser Stelle eigentlich unnötig.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo Tom,
im Prinzip ist Deine Vorgehensweise die von Jimmy vorgeschlagene. Und das funktioniert eben halt leider aus irgendeinem Grund nicht. Ich hatte ja das Beispiel gepostet - PP auslesen und ohne jede Änderung sofort wieder setzen ändert nahezu alles, was man ändern kann. Irritierend.
Ich werd aber mal Deinen anderen Vorschlag testen.
Jan
im Prinzip ist Deine Vorgehensweise die von Jimmy vorgeschlagene. Und das funktioniert eben halt leider aus irgendeinem Grund nicht. Ich hatte ja das Beispiel gepostet - PP auslesen und ohne jede Änderung sofort wieder setzen ändert nahezu alles, was man ändern kann. Irritierend.
Ich werd aber mal Deinen anderen Vorschlag testen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo, Jan.
Ich würde vermuten, dass Du die PP (möglicherweise für die Spalten?) seit/nach dem Erzeugen geändert hast, so dass es zum falschen "Übermalen" kommt.
Ich würde vermuten, dass Du die PP (möglicherweise für die Spalten?) seit/nach dem Erzeugen geändert hast, so dass es zum falschen "Übermalen" kommt.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo Tom,
gute Idee. Passt aber leider auch nicht. Ich habe die PP direkt bei der Erzeugung der Spalte in den oSpalte:cargo geschrieben. Und dann bei der Header-Änderung dort wieder rausgeholt. Keine Änderung.
Jan
gute Idee. Passt aber leider auch nicht. Ich habe die PP direkt bei der Erzeugung der Spalte in den oSpalte:cargo geschrieben. Und dann bei der Header-Änderung dort wieder rausgeholt. Keine Änderung.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Vergleiche doch diese gespeicherten PP mal mit den tatsächlichen. Du wirst Unterschiede feststellen.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo Tom,
Du hast Recht! Ich hab mir mal die PP nach der Erzeugung der Spalten weggeschrieben, und dann nochmal beim Ändern der Spalten-Header. Und siehe da - die sind komplett anders. Und auch wesentlich mehr, ca. 3x so viele.
Das ist also das nächste Rätsel. Denn es gibt keine andere Stelle, wo ich die ändere. Ich muß jetzt mal die ganzen Einstellungen aufbröseln, was das jeweils ist, immerhin stehen da ja nicht mehr die Konstanten drin, sondern nur die Ziffernwerte. Und schauen, woher die kommen.
Jan
Du hast Recht! Ich hab mir mal die PP nach der Erzeugung der Spalten weggeschrieben, und dann nochmal beim Ändern der Spalten-Header. Und siehe da - die sind komplett anders. Und auch wesentlich mehr, ca. 3x so viele.
Das ist also das nächste Rätsel. Denn es gibt keine andere Stelle, wo ich die ändere. Ich muß jetzt mal die ganzen Einstellungen aufbröseln, was das jeweils ist, immerhin stehen da ja nicht mehr die Konstanten drin, sondern nur die Ziffernwerte. Und schauen, woher die kommen.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Hallo, Jan.
Das ist kein Rätsel. Wenn man die XbpBrowse-Quellcodes hat, kann man das nachvollziehen. Erstens erben alle Spalten die Präsentationsparameter des Browses, wodurch sich die Parameter der Spalten ggf. mengenmäßig erhöhen. Zweitens passiert dann noch einiges unter der Haube (_SetPresParam). Das ist nicht falsch. Es ist nur falsch, bei einem abermaligen Configure die alten PP wieder zu setzen, weil dadurch das verloren geht, was bis dahin intern ergänzt wurde. Siehe Beispiel von mir.
Das ist kein Rätsel. Wenn man die XbpBrowse-Quellcodes hat, kann man das nachvollziehen. Erstens erben alle Spalten die Präsentationsparameter des Browses, wodurch sich die Parameter der Spalten ggf. mengenmäßig erhöhen. Zweitens passiert dann noch einiges unter der Haube (_SetPresParam). Das ist nicht falsch. Es ist nur falsch, bei einem abermaligen Configure die alten PP wieder zu setzen, weil dadurch das verloren geht, was bis dahin intern ergänzt wurde. Siehe Beispiel von mir.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Tom,
leider ist das wiederum nicht ganz richtig. Denn wenn ich in dem betreffenen Header-Änderungs-Modul einfach nur die bestehenden PP üer :setPresParam() auslese und sofort ohne jede Änderung wieder setze, ist alles genau so verhauen als würde ich die gesetzen PP übergeben und dann nutzen.
Oder übersehe ich da schon wieder irgendwas?
Jan
leider ist das wiederum nicht ganz richtig. Denn wenn ich in dem betreffenen Header-Änderungs-Modul einfach nur die bestehenden PP üer :setPresParam() auslese und sofort ohne jede Änderung wieder setze, ist alles genau so verhauen als würde ich die gesetzen PP übergeben und dann nutzen.
Oder übersehe ich da schon wieder irgendwas?
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Ich würde das an Deiner Stelle mit einem kleinen Beispiel ausprobieren. Nach meinem Dafürhalten ergänzt SetPresParam die bestehenden Parameter. Es ist nicht so gedacht, wie Du es anwenden willst.
Falls Dir das hilft: Ich habe festgestellt, dass beim Rekonfigurieren einige Parameter verlorengehen, weshalb ich in solchen Situationen nur die PP der Spalten neu bestücke, falls sich die Farbdarstellungen geändert haben: oBrowse:GetColumn(<nCol>):Configure(,,,,aColPresParams). Außerdem setze ich für alle Spalten vor dem Neuzeichnen DrawMode und UseVisualStyle auf die vorigen Werte, getrennt für Heading, DataArea und Footing. Also oBrowse:GetColumn(<nCol>):Heading:DrawMode := <xDrawMode> usw. Dies gilt vor allem im Kontext von Spaltenlöschungen und dem Einfügen von Spalten (die zuvor erzeugt, in einem Objekt gespeichert und via DelColumn gelöscht worden sind).
Abermals: Ich halte es für falsch, für das Neuzeichnen der Überschriften (bzw. im Rahmen dessen) Configure zu verwenden. Das ist nicht der Zweck dieser Methode. Sie ist dafür gedacht, die Darstellung und/oder Anordnung von Browserspalten zur Laufzeit ändern zu können, und sie ist mit sehr großer Vorsicht zu genießen.
Falls Dir das hilft: Ich habe festgestellt, dass beim Rekonfigurieren einige Parameter verlorengehen, weshalb ich in solchen Situationen nur die PP der Spalten neu bestücke, falls sich die Farbdarstellungen geändert haben: oBrowse:GetColumn(<nCol>):Configure(,,,,aColPresParams). Außerdem setze ich für alle Spalten vor dem Neuzeichnen DrawMode und UseVisualStyle auf die vorigen Werte, getrennt für Heading, DataArea und Footing. Also oBrowse:GetColumn(<nCol>):Heading:DrawMode := <xDrawMode> usw. Dies gilt vor allem im Kontext von Spaltenlöschungen und dem Einfügen von Spalten (die zuvor erzeugt, in einem Objekt gespeichert und via DelColumn gelöscht worden sind).
Abermals: Ich halte es für falsch, für das Neuzeichnen der Überschriften (bzw. im Rahmen dessen) Configure zu verwenden. Das ist nicht der Zweck dieser Methode. Sie ist dafür gedacht, die Darstellung und/oder Anordnung von Browserspalten zur Laufzeit ändern zu können, und sie ist mit sehr großer Vorsicht zu genießen.
Herzlich,
Tom
Tom
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: PP im Browse-Header erhalten
Tom,
noch einmal ganz kurz zusammengefasst, was ich mache:
Kein :configure oder sonstwas. Nur diese beiden Zeilen. Und die beiden Zeilen zerhauen mir die gesamte Optik. Und ich habe keine Ahnung warum.
Jan
noch einmal ganz kurz zusammengefasst, was ich mache:
Code: Alles auswählen
aPresentationParameter := oBrowse:getColumn(i):setPresParam()
oBrowse:getColumn(i):setPresParam(aPresentationParameter)
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: PP im Browse-Header erhalten
hi,
@Jan : schon mal mit der v1.9x verglichen ob sich das genau so verhält ?
mir fällt ein Unterschied auf : ich setzte die Presentation Parameter auf das Browse und nicht auf die Column.
@Jan : schon mal mit der v1.9x verglichen ob sich das genau so verhält ?
mir fällt ein Unterschied auf : ich setzte die Presentation Parameter auf das Browse und nicht auf die Column.
gruss by OHR
Jimmy
Jimmy