enablen eines bestimmten SLE's in einer Liste....

Grafische Primitive, XbaseParts und Darstellungsfragen allgemein.

Moderator: Moderatoren

Antworten
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

enablen eines bestimmten SLE's in einer Liste....

Beitrag von mini990 »

Hallo,
ich habe eine Reihe von SLE's (Datenbankeditierfelder).
Wenn ich die SLE's aktiviere ist immer das zuletzt angelegte SLE aktiv.
Es soll aber das "erste" aktiv sein.
Nun könnte ich ja einfach das erste SLE im Quellcode als letztes aktivieren möchte dies jedoch aufgrund der Lesbarkeit des Quellcodes vermeiden.
Ich habe irgendwo mal eine Möglichkeit gesehen den Focus auf ein bestimmtes SLE zu setzen, finde die Stelle jedoch leider nicht mehr.

Hat jemand die Lösung noch "im Kopf"?

danke im voraus

Gruß Stefan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Stefan,
ich denke mal, Du hast für jedes SLE die selbe Variable - Du musst aber für jedes SLE eine andere nehmen, dann klappt das auch!
Oder Du nutzt statt dessen die entsprechenden Getlist-Einträge.
Bsp.:

Code: Alles auswählen

::Zeile1              := dsSLE():new( ::drawingArea,, { 76, 368 }, { 560, 14 } )
::Zeile1:bufferLength := 70
::Zeile1:tabStop      := .T.
::Zeile1:autoTab      := .T.
::Zeile1:border       := .F.
::Zeile1:EnableFocusFrame( .f. )
::Zeile1:dataLink := {|x| IIf( PCOUNT()==0, (::dbSelect)->ZEILE1, (::dbSelect)->ZEILE1 := x ) }
::Zeile1:SetData()
::Zeile1:SetFocus()
aadd( ::editControls, ::Zeile1 )

::Zeile2              := dsSLE():new( ::drawingArea,, { 76, 355 }, { 560, 14 } )
::Zeile2:bufferLength := 70
::Zeile2:tabStop      := .T.
::Zeile2:autoTab      := .T.
::Zeile2:border       := .F.
::Zeile2:EnableFocusFrame( .f. )
::Zeile2:dataLink := {|x| IIf( PCOUNT()==0, (::dbSelect)->ZEILE2, (::dbSelect)->ZEILE2 := x ) }
::Zeile2:SetData()
aadd( ::editControls, ::Zeile2 )
Das Beispiel nutzt zwar XClass++ von DS-Datasoft, aber das Prinzip ist hoffentlich klar.
Ich kann also nach den entsprechenden :create()s entweder mit ::Zeile1:Disable() arbeiten oder mit ::editcontrols[1]:Disable() - ist dann das gleiche.

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Beitrag von mini990 »

hmmmm..
da wäre es ja einfacher das erste SLE an die letzte Stelle zu setzen...

Ich bin mir aber sicher irgendwo (ich weiß nicht mehr ob in der Online Hilfe oder bei einem Beispiel eine entsprechende Anweisung gefunden zu haben...

Gruß Stefan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Stefan,
vielleicht habe ich Deine Frage ja auch falsch verstanden?
Meinst Du mit aktivieren "den Fokus haben"?
Wenn ja, dann bekommst Du das hin mit SetAppFocus( Name_des_SLE-Objektes )

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Beitrag von mini990 »

mit setappfocus(...) springt er zum letzten angelegten Feld...
...und ich will zum ersten Feld.

Gruß Stefan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Stefan,
das kann nicht sein! Es sei denn (wie oben bereits geschrieben), Du nimmst für alle SLEs die selbe Variable! Dann musst Du entweder den entsprechenden ::editcontrols-Eintrag nehmen oder für jeden SLE eine andere Variable.
Zeige doch mal bitte ein wenig Deines Codes....

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
mini990
1000 working lines a day
1000 working lines a day
Beiträge: 592
Registriert: Sa, 28. Jan 2006 9:44
Wohnort: Berg-Richtheim bei Neumarkt i.d.Opf.
Danksagung erhalten: 1 Mal

Beitrag von mini990 »

@martin:

1000 Dank! Es funktioniert jetzt so wie ich will!

mit

setAppFocus(aEditcontrols[1])

gehts....

Gruß Stefan
PS: ich stelle aber trotzdem gerne eine Ecke Code rein bei Interesse...
PPS: ich bin immer wieder erstaunt was XBase alles für Überrraschungen bietet...
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15696
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hallo mini990,

du nutzt sicher den Function-code des XppFD, wenn du mal ein Beispiel im ClassCode erzeugst, wirst du feststellen, dass jedes Xbp einen eigenen namen hat:

in INIT

::name := XbpSLE():new()....
::name:tabStop := .t.
...
::vorname := XbpSLE():new()....
...
::Strasse := XbpSLE():new()....
...

hier ist die Reihenfolge der Eingabe noch völlig unbedeutend, aber :

in create ...

::name:create()
::vorname:create()
::Strasse:create()

entscheidet die Reihenfolge über:
1. das erste aktive Control (erstes angelegtes Xbp mit xxx:tabStop := .t.
2. die TAB Reihenfolge

Im functional Code geht das alles nicht direkt, da dort

statt eindeutiger namen nur immer oXbp wiederverwendet wird.
Das 1. Element kannst du ja noch finden, aber wenn du z.B. zum Feld Strasse springen willst, zur Zeit das 3. Element (nein bestimmt sind noch FT dazwischen ...). Und was wenn ein neues Feld dazwischen kommt ?
Du kannst sicherlich irgendwie das heraussuchen, aber der Class Code ist viel einfacher.
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16516
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Hubert,
brandelh hat geschrieben:du nutzt sicher den Function-code des XppFD, wenn du mal ein Beispiel im ClassCode erzeugst, wirst du feststellen, dass jedes Xbp einen eigenen namen hat:
vielen Dank - den Unterschied kannte ich noch nicht! Ich habe nämlich immer den Class-Code erstellen lassen und mich nie mit dem Function-Code rumgeärgert...

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Antworten