Position und Grösse einer Zelle im XbpBrowse feststellen
Moderator: Moderatoren
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Position und Grösse einer Zelle im XbpBrowse feststellen
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 ...)
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9361
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 101 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
GetColumn(nRow) liefert Dir auch noch das falsche Spaltenobjekt zurück, denn als Parameter muss die Spaltennummer angegeben werden, nicht die Zeilennummer.
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.
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
Tom
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
Danke, Tom - das erklärt einiges
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
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?
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
hast du dir mal x:\ALASKA\XPPW32\SOURCE\samples\solution\xbpget\editbrow.prg angesehen ?georg hat geschrieben:Back to the basics ...
gruss by OHR
Jimmy
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
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.
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.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
- AUGE_OHR
- Marvin
- Beiträge: 12906
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 45 Mal
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
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.
Frage : was ist der Parent von deinem SLE ?
ich würde den oBrowse:stableBlock verwenden um "externe" XbParts neu zu positionieren.
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.
bei Owner-Drawing wird nur "gemalt" was die Column als Info bereitstellt.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.
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
Jimmy
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2825
- Registriert: Fr, 08. Feb 2008 21:29
- Hat sich bedankt: 96 Mal
- Danksagung erhalten: 13 Mal
Re: Position und Grösse einer Zelle im XbpBrowse feststellen
Hallo, Jimmy -
Das XbpBrowse-Objekt fungiert als Parent und als Owner.AUGE_OHR hat geschrieben:Frage : was ist der Parent von deinem SLE ?
Gut, das schaue ich mir bei Gelegenheit mal an. Danke!AUGE_OHR hat geschrieben:ich würde den oBrowse:stableBlock verwenden um "externe" XbParts neu zu positionieren.
Liebe Grüsse aus der Eifel,
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.
Georg S. Lorrig
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.