Seite 1 von 1

Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Mi, 02. Nov 2016 14:24
von georg
Alte Clipper-Zeiten haben mich eingeholt. Dort konnte man ja im TBrowse "editeren", und etwas ähnliches möchte ich im XbpBrowse() machen.

Um die zu bearbeitende Zelle überlagern, brauche ich aber deren Adresse. Das XbpBrowse()-Objekt liefert mir jedoch nur (?) Spalten- bzw. Zeilennummern, die sich auf das Objekt selbst beziehen, und auch ein :getColumn(nRow) liefert mir nur ein Spalten-Objekt zurück.

Wie komme ich an die Position und Grösse der aktiven Zelle im XbpBrowse()? (OK, die Breite der Spalte und ihre horizontale Position kann ich dem XbpColumn()-Objekt entnehmen, aber das ist nur die halbe Miete ...)

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Mi, 02. Nov 2016 16:50
von Tom
GetColumn(nRow) liefert Dir auch noch das falsche Spaltenobjekt zurück, denn als Parameter muss die Spaltennummer angegeben werden, nicht die Zeilennummer. :wink:

Eine XbpColumn besteht aus bis zu drei XbpCellgroup-Objekten, nämlich Heading, Footing und DataArea. oBrowse:GetColumn(nCol):DataArea ist also der Inhaber Deiner Zelle. :CellRect(nRow) liefert Dir hier die Koordinaten (auf die Parameter achten!) der Zelle. Mit dem entsprechenden Parameter bekommst Du auch noch die Größe.

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Mi, 02. Nov 2016 22:05
von georg
Danke, Tom - das erklärt einiges :D

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Di, 15. Nov 2016 15:11
von georg
Back to the basics ...

In der Zwischenzeit habe ich das ausprobiert, und es funktioniert ... fast.

Wenn ich die Koordinaten verwende, zeige ich mein XbpSLE() in der Zelle unterhalb der Zelle an, die ich mittels Doppelklick ausgewählt habe. So wie ganz früher, als es noch hiess "immer eins mehr oder weniger als man denkt". Die Abweichung scheint aber der horizontale Scrollbar zu sein, den ich noch rausrechnen muss.

Das andere Problem ist mehr "basic", fürchte ich: wenn ich den Dialog verschiebe, bleibt alles wie es ist. Verkleinere ich den Dialog und vergrössere ihn wieder, wird der XbpBrowse() neu gezeichnet, und mein XbpSLE() ist unsichtbar.

Also habe ich den paint-Slot mit einem oSLE:show() versehen, was aber nicht wirkt. Nächster Versuch war ein oSLE:configure() - das funktioniert, nur scheint das :configure() wiederum ein Paint-Event auszulösen, welches dann ...

Da muss es doch eine einfachere Methode geben, oder?

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Di, 15. Nov 2016 17:00
von AUGE_OHR
georg hat geschrieben:Back to the basics ...
hast du dir mal x:\ALASKA\XPPW32\SOURCE\samples\solution\xbpget\editbrow.prg angesehen ?

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Mi, 16. Nov 2016 22:05
von georg
Hallo, Jimmy -


ja, das habe ich mir angesehen, aber das ist mir einfach zu komplex für die Aufgabe, um die es geht.

Zudem suche ich nach einer Erklärung, was eigentlich in einem solchen Fall gemacht werden muss, um eine solche Überlagerung ohne owner drawing umzusetzen.

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Mi, 16. Nov 2016 23:17
von AUGE_OHR
bei den Hinweis auf Editbrow.prg ging es mir um GETCOL.PRG

ein Browse besteht ja aus Column und GETCOL.PRG beinhaltet CLASS XbpGetColumn FROM XbpColumn.
wenn man einer Column "was beibringen" will dann wäre IMHO "das" der Ansatz.
georg hat geschrieben:Zudem suche ich nach einer Erklärung, was eigentlich in einem solchen Fall gemacht werden muss, um eine solche Überlagerung ohne owner drawing umzusetzen.
bei Owner-Drawing wird nur "gemalt" was die Column als Info bereitstellt.

Frage : was ist der Parent von deinem SLE ?

ich würde den oBrowse:stableBlock verwenden um "externe" XbParts neu zu positionieren.

Re: Position und Grösse einer Zelle im XbpBrowse feststellen

Verfasst: Do, 17. Nov 2016 14:49
von georg
Hallo, Jimmy -

AUGE_OHR hat geschrieben:Frage : was ist der Parent von deinem SLE ?
Das XbpBrowse-Objekt fungiert als Parent und als Owner.
AUGE_OHR hat geschrieben:ich würde den oBrowse:stableBlock verwenden um "externe" XbParts neu zu positionieren.
Gut, das schaue ich mir bei Gelegenheit mal an. Danke!