aControls

Deutschsprachiges X#-Forum – German language forum

Moderator: wriedmann

Post Reply
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

aControls

Post by Tudorf »

Hallo
Unter VO gab es ein Array mit den Controls des Fensters.

Code: Select all

ACCESS Controls CLASS MydtaWindow
	// Liefert ein Array mit den "data aware"-Controls, also mit jenen
	// Controls, die mit einem Feld des Servers verbunden sind. Beispiel:
	// SingleLineEdits, Checkboxen etc. Buch-Stichwort "Name based linkage".
	// aControls ist ein undokumentiertes Array der Klasse DataWindow.
	RETURN aControls
Unter XSharp werden in dem Contol aber auch z.B.#FixedText geführt.

Ich versuche ein neues Array zu erzeugen wo nur SLE usw enthalten sind.

Leider stürzt XSharp immer ab.

AAdd(_mycontrols,aControls) // geht nicht
AAdd(_mycontrols,aControls:name) // geht nicht
AAdd(_mycontrols,aControls:namesym) // geht nicht

Was muss ich machen?
Martin
User avatar
Chris
Posts: 5630
Joined: Thu Oct 08, 2015 7:48 am
Location: Greece

Re: aControls

Post by Chris »

Hi Martin,

Fixed texts are also data aware, as they can show strings directly from a dbf. Should be the same in both X# and VO.
Chris Pyrgas

XSharp Development Team
chris(at)xsharp.eu
User avatar
wriedmann
Posts: 4079
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Re: aControls

Post by wriedmann »

Hallo Martin,
AAdd(_mycontrols,aControls) // hängt das gesamte Array an _mycontrols an
AAdd(_mycontrols,aControls:name) // das Array aControls hat keinen Access Name
AAdd(_mycontrols,aControls:namesym) // das Array aControls hat keinen Access NameSym
Wenn Du ein Array haben willst, das nur SingleLineEdits enthält:

Code: Select all

nLen := ALen( aControls )
_myControls := {}
for nI := 1 upto nLen
  if IsInstanceOf( aControls[nI], #SingleLineEdit )
    AAdd( _myControls, aControls[nI] )
  endif
next
Das geht logischerweise erst, wenn aControls gefüllt ist.
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

Re: aControls

Post by Tudorf »

Hallo Wolfgang, Hallo Chris

Es war gestern vieleicht schon zu spät zum schreiben. Copy und Past wäre besser gewesen.

Hier mein verwendeter Code.

Code: Select all

METHOD mycontrol()           
LOCAL i AS INT    
LOCAL lok AS LOGIC

?" MydtaWindow mycontrol" , ALen(aControls)
	
aControls := {}

FOR i := 1 TO ALen(aControls)    
	? i, ClassName(aControls[i])
	lok := FALSE
	 DO CASE
		CASE ClassName(aControls[i]) == #sleStandard     
			lok := TRUE
		CASE ClassName(aControls[i]) == #sleServerLiestview_ab
			lok := TRUE
		CASE ClassName(aControls[i]) == #sleServerLiestview
			lok := TRUE
		CASE ClassName(aControls[i]) == #sleServer							
			lok := TRUE
		CASE ClassName(aControls[i]) == #sleSelection
			lok := TRUE
		CASE ClassName(aControls[i]) == #SLE_Date
			lok := TRUE
		CASE ClassName(aControls[i]) == #mleStandard
			lok := TRUE     
		CASE ClassName(aControls[i]) == #RTFStandard
			lok := TRUE     
	 ENDCASE						

     IF lok == TRUE   
//     	AAdd(_mycontrols,aControls[i])   // geht nicht
//     	AAdd(_mycontrols,aControls[i]:name)   // geht nicht
//     	AAdd(_mycontrols,aControls[i]:namesym)   // geht nicht
     ENDIF
NEXT i 

RETURN
Natürlich sind die aControls gefüllt. Die Abfrage kann ich mit IsInstanceOf( aControls[nI], #SingleLineEdit ) vereinfachen.

Meine SLE sind schreibgeschützt und werden bei der Eingabe/Änderung freigegeben bzw später wieder gesperrt. Dieses läuft über Arrays. Bei der Anzeige sind die SLE data aware
Screenshot 2025-02-23 073622.jpg
Alternativ könnte man auch sich die Positionen im Array merken und diese geziehlt ansprechen.
AAdd(_mycontrols, i )
bzw. acontrols[mycontrol] (Hofffentlich ohne Tippfehler)

Martin
User avatar
wriedmann
Posts: 4079
Joined: Mon Nov 02, 2015 5:07 pm
Location: Italy

Re: aControls

Post by wriedmann »

Hallo Martin,
Dumme Frage: setzt Du bewusst das Array aControls auf leer, bevor Du es verwendest?
Und _myControls wird nirgends initialisiert?
Wolfgang
Wolfgang Riedmann
Meran, South Tyrol, Italy
wolfgang@riedmann.it
https://www.riedmann.it - https://docs.xsharp.it
Tudorf
Posts: 50
Joined: Wed Feb 08, 2023 3:43 pm

Re: aControls

Post by Tudorf »

Hallo Wolfgang

Programm läuft. Da war der Fehler

Martin
Post Reply