Position und Grösse einer Zelle im XbpBrowse feststellen

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

Position und Grösse einer Zelle im XbpBrowse feststellen

Beitrag 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 ...)
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
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: Position und Grösse einer Zelle im XbpBrowse feststellen

Beitrag 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.
Herzlich,
Tom
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

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

Beitrag von georg »

Danke, Tom - das erklärt einiges :D
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

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

Beitrag 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?
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag von AUGE_OHR »

georg hat geschrieben:Back to the basics ...
hast du dir mal x:\ALASKA\XPPW32\SOURCE\samples\solution\xbpget\editbrow.prg angesehen ?
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

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

Beitrag 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.
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

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

Beitrag 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.
gruss by OHR
Jimmy
georg
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2823
Registriert: Fr, 08. Feb 2008 21:29
Hat sich bedankt: 95 Mal
Danksagung erhalten: 13 Mal

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

Beitrag 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!
Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Antworten