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
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
Guggst du SYS(1272)
--
wOOdy
Visual FoxPro Technologieberater
Microsoft "Most Valuable Professional" 1996 bis 2009
"*´¨)
¸.·´¸.·*´¨) ¸.·*¨)
(¸.·´. (¸.·` *
..·`.Visual FoxPro: It's magic !
(¸.·``··*
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
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 !
> (¸.·``··*
>
> .
>
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
> 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"
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
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
> 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
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:
> .
>