Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Re: Objekt Eigenschaften übergeben

1 view
Skip to first unread message
Message has been deleted
Message has been deleted

Horst Kühn

unread,
Oct 23, 2009, 8:21:57 AM10/23/09
to
Hallo Roland,
> Nun die Frage.
> Gibt es eine Möglichkeit den kpl. "Pfad" in der Eigenschaft.Init von Grid2
> auszulesen und an eine Variable z.B. oGrd zu übergeben ?

Form.init ist keine Eigenschaft sondern ein Event. Also ein Ereignis was
abläuft wenn etwas passiert (in diesem Fall die Form gestartet wird)
Hier kannst Du Code hineinschreiben. Wenn Du hier Variablen deklarierst
gelten sie für dieses Event oder diese Methode und für aufgerufene
Programme (Methoden). Oder Du deklarierst sie als local und sie gelten
nur in diesem Codeteil.

Was Du suchst machst Du am besten über Eigenschaften (Properties).
Du kannst jedem Objekt (dem Grid, einer Form usw) neue Eigenschaften
zuweisen (addproperty() oder im Menu unter Klasse z.B.) und dort
entsprechende Werte abspeichern.

Also weist Du einer Form z.B. die Eigenschaft "Grdpfad" zu, kannst Du
mit thisform.Grdpfad = "ThisForm.PageFram1.Page3.Grid2" deinen Pfad
abspeichern und wieder aufrufen.(Wenn Du den Wert von innerhalb der Form
irgendwo aufrufst)

Horst

Roland

unread,
Oct 23, 2009, 9:46:01 AM10/23/09
to
Hallo Bernhard,

Danke für die Info.

> Du könntest im Init des Grid z.B. einer Form-Eigenschaft oder auch einer
> Variablen einfach nur this zuweisen:
> thisform.oDasGrid = this

Da bekomme ich das "Objekt" zurück.
Aber die kpl. Daten benötige ich nicht, zudem möchte ich den "Pfad"
in einem Array und in einer Tabelle speichern. Damit habe ich die Möglichkeit
in einem Programm die Objekte zu verändern die Ausgewählt wurden.
Es sollen auch nicht alle Objekte in einer Form in der Tabelle sein.
Deshalb die Idee das Objekt mit seinem "Pfad" zu "registrieren" wenn im Objekt
das entsprechene Programm eingebunden ist. Aufruf z.B. in der Objekt.Init

Gruß Roland

Jürgen Wondzinski

unread,
Oct 23, 2009, 10:19:41 AM10/23/09
to
Hi Roland

Guggst du SYS(1272)


--

wOOdy
Visual FoxPro Technologieberater
Microsoft "Most Valuable Professional" 1996 bis 2009

"*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
..·`.Visual FoxPro: It's magic !
(¸.·``··*

Bernhard Sander

unread,
Oct 23, 2009, 11:04:11 AM10/23/09
to
Hallo Roland,

Hm, ich gestehe, ich kann Dir nicht wirklich folgen. Was hast Du eigentlich vor?
Hört sich ein bisschen danach an, als ob Du ein Werkzeug für den Entwurf bauen
willst.

Gruß
Bernhard Sander

Roland

unread,
Oct 23, 2009, 12:51:01 PM10/23/09
to
Hallo Jürgen,

das war die Info die ich suchte.

Manchnmal gugt man einfach in die falsche Richtung.

Danke

Gruß Roland

"Jürgen Wondzinski" wrote:

> Hi Roland
>
> Guggst du SYS(1272)
>
>
> --
>
> wOOdy
> Visual FoxPro Technologieberater
> Microsoft "Most Valuable Professional" 1996 bis 2009
>
>
>
> "*´¨)
> ¸.·´¸.·*´¨) ¸.·*¨)
> (¸.·´. (¸.·` *

> ...·`.Visual FoxPro: It's magic !
> (¸.·``··*
>
> .
>

Roland

unread,
Oct 23, 2009, 12:57:01 PM10/23/09
to
Hallo Bernhard,

so was in der Art.

Möchte die Objekt je nach Monitorgröße steuern und plazieren.
Habe Leute die am Arbeitsplatz 2 x 24" Monitore haben und es gibt
auch welche mit "nur" einem 19" Monitor. Nur vergrößern bringt da
nicht viel Nutzen.

Danke für die Hilfe

Gruß Roland

Jürgen Wondzinski

unread,
Oct 23, 2009, 1:10:14 PM10/23/09
to
Hi Roland,

> Möchte die Objekt je nach Monitorgröße steuern und plazieren.

nachdem du den Resizer scheinbar nicht brauchen kannst: dann wirf mal ein
Auge auf das "ANCHORING", denn damit kannste deine Objekte automatisch
vergrössern bzw positionieren.

Guggst du:
DO (_samples + "\solution\solution.app"),

dort den Punkt "New in VFP 9", dann "Anchors away"

Matthias Kahlert

unread,
Oct 23, 2009, 1:37:07 PM10/23/09
to
Roland schrieb:
>> Guggst du SYS(1272)

>
> das war die Info die ich suchte.
> Manchnmal gugt man einfach in die falsche Richtung.

Alternativ könntest Du Dich über "Parent" quasi nach oben hangeln über
ein entsprechendes TRY...CATCH, solange bis ein Fehler auftritt (also
quasi bis es kein Parent mehr gibt).

*========================================================================================================================
* FUNCTION m_GetObjectPath
*
* Liefert den vollen Objektpfad zu einem Control o.ä. zurück, also etwa
* "maske.pageframe.page1.containter.control"
*
* VERSION HISTORY:
* 26.09.2009 KAH Neuerstellung
*
FUNCTION m_GetObjectPath ( toObj AS Control ) AS String
LOCAL lcRet, llErr, loObj
lcRet = ""
llErr = .F.
loObj = toObj
DO WHILE llErr = .F.
TRY
lcRet = ALLTRIM(loObj.Name) + "." + lcRet
loObj = loObj.Parent
CATCH
llErr = .T.
ENDTRY
ENDDO
IF LEN(lcRet) > 1 THEN
lcRet = LEFT(lcRet, LEN(lcRet)-1)
ENDIF
RETURN lcRet
ENDFUNC

--
Matthias

Jürgen Wondzinski

unread,
Oct 24, 2009, 9:41:58 AM10/24/09
to
Hi Matthias,

aha, da hat einer wieder mal zuviel Code geschrieben, weil er die SYS()
Funktionen nicht kannte, gelle? ;) Dabei gibt's die schon seit Anbeginn
(also VFP3, anno 1994)... Hilfe-Stichwort "Objekthierarchie".

Matthias Kahlert

unread,
Oct 24, 2009, 2:47:58 PM10/24/09
to
Jürgen Wondzinski schrieb:

> aha, da hat einer wieder mal zuviel Code geschrieben, weil er die SYS()
> Funktionen nicht kannte, gelle? ;) Dabei gibt's die schon seit Anbeginn
> (also VFP3, anno 1994)... Hilfe-Stichwort "Objekthierarchie".

Nö... SYS(1272) liefert den Objektpfad immer in Kleinbuchstaben zurück,
meine Funktion liefert die "echte" Schreibweise, so wie diese in den
Forms (oder Klassen) hinterlegt ist. :-P

Wenn man sich das zu Debug-Zwecken irgendwo ausgeben lässt, ist mir die
echte Schreibweise lieber, da klarer und besser und verständlicher zu lesen.

--
Matthias

Bernhard Sander

unread,
Oct 26, 2009, 5:02:24 AM10/26/09
to
Hallo Roland,

> so was in der Art.
>
> Möchte die Objekt je nach Monitorgröße steuern und plazieren.
> Habe Leute die am Arbeitsplatz 2 x 24" Monitore haben und es gibt
> auch welche mit "nur" einem 19" Monitor. Nur vergrößern bringt da
> nicht viel Nutzen.

Es interessiert mich, drum frag ich nochmal nach:
Baust Du da zur Entwurfszeit mit Hilfe eines Tools unterschiedliches zusammen
oder zur Laufzeit des Programms?

Zur Entwurfszeit kann ich mir noch ungefähr vorstellen, dass der Objekt"pfad"
nützlich sein könnte, da hat wOOdy ja auf SYS(1272) hingewiesen.

Zur Laufzeit kann ich mir nicht recht vorstellen, wozu der Objekt"pfad" gut sein
kann, da kommen Referenzen wesentlich eher in Frage, vor allem und gerade dann,
wenn Objekte nachträglich umplatziert werden sollen. Den Objektpfad zu ermitteln
und dann mittels Makro-Expansion das Objekt anzusprechen würde ich möglichst
vermeiden. Allerdings gibt es ein paar wenige Stellen, da kommt man um ein Makro
nicht drumrum.

Gruß
Bernhard Sander

Roland

unread,
Nov 3, 2009, 8:36:01 AM11/3/09
to
Hallo Bernhard,

Sorry das ich mich erst jetzt melde.

Passe die Pos. zur Laufzeit an. Habe es bereits fertig und funktioniert :-))

Lade alle "Objektpfade" in der Form ini in ein Array.
Wenn dann das Fenster vergrößert wird und eine bestimmte Größe überschritten
wird, werden bisher unsichtbare Objekte aktiviert und plaziert.
Bestehende auf eine bestimmte Größe beschränkt / verkleiner.
Dazu habe ich in der ini der Objekte ein paar Zeilen Kode hinterlegt. Hier
kann ich auch einen "Typ" hinterlegen, der dann bestimmt was mit dem Objekt
geschehen soll.
Als nächstes möchte ich die Positionen der Objekte beim Verlassen der Form
für den User in der Datenbank mit abzuspeichern.

Gruß Roland


"Bernhard Sander" wrote:

> .
>

0 new messages